You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "zdelay.h"
#include "zbase.h"
#include "project_configs.h"
extern TIM_HandleTypeDef SDK_DELAY_US_TIMER;
static HAL_StatusTypeDef _HAL_TIM_Base_Start(TIM_HandleTypeDef* htim) __attribute__((optimize("O2"))); static HAL_StatusTypeDef _HAL_TIM_Base_Stop(TIM_HandleTypeDef* htim) __attribute__((optimize("O2"))); static HAL_StatusTypeDef _HAL_TIM_Base_Start(TIM_HandleTypeDef* htim) { uint32_t tmpsmcr; /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) { return HAL_ERROR; } htim->State = HAL_TIM_STATE_BUSY; if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) { __HAL_TIM_ENABLE(htim); } } else { __HAL_TIM_ENABLE(htim); } return HAL_OK; } static HAL_StatusTypeDef _HAL_TIM_Base_Stop(TIM_HandleTypeDef* htim) { /* Disable the Peripheral */ __HAL_TIM_DISABLE(htim); /* Set the TIM state */ htim->State = HAL_TIM_STATE_READY; /* Return function status */ return HAL_OK; }
void zdelay_us(int var_nus) { volatile uint32_t counter = 0; __HAL_TIM_SET_COUNTER(&SDK_DELAY_US_TIMER, 0); _HAL_TIM_Base_Start(&SDK_DELAY_US_TIMER); while (counter < var_nus) { counter = __HAL_TIM_GET_COUNTER(&SDK_DELAY_US_TIMER); } _HAL_TIM_Base_Stop(&SDK_DELAY_US_TIMER); } void zdelay_ms(int ms) { for (int i = 0; i < ms; i++) { zdelay_us(1000); } } void zos_delay_ms(int ms) { osDelay(ms); }
uint32_t zget_ticket(void) { return HAL_GetTick(); }
uint32_t zhas_passedms(uint32_t ticket) { uint32_t now = HAL_GetTick(); if (now >= ticket) { return now - ticket; } else { return 0xFFFFFFFF - ticket + now; } }
|