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 "xs_delay.h"
#include "xs_basic.h"
extern TIM_HandleTypeDef PC_SYS_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 xs_delay_us(int var_nus) { volatile uint32_t counter = 0; __HAL_TIM_SET_COUNTER(&PC_SYS_DELAY_US_TIMER, 0); _HAL_TIM_Base_Start(&PC_SYS_DELAY_US_TIMER); while (counter < var_nus) { counter = __HAL_TIM_GET_COUNTER(&PC_SYS_DELAY_US_TIMER); } _HAL_TIM_Base_Stop(&PC_SYS_DELAY_US_TIMER); } void xs_delay_ms(int ms) { for (int i = 0; i < ms; i++) { xs_delay_us(1000); } } void xs_os_delay_ms(int ms) { osDelay(ms); }
int32_t xs_get_ticket(void) { return HAL_GetTick(); }
|