/** ****************************************************************************** * @file bsp_cap.c * @author Radkil * @brief Timer capture device file ****************************************************************************** * @attention ****************************************************************************** */ #include "bsp_cap.h" #ifdef USE_TIMER #include "com.h" volatile uint8_t g_timer2_is_full = 0; void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim==(&htim2)) { g_timer2_is_full = 1; } } void tim_main_loop(void) { static int iOnceFlag = 1; if (iOnceFlag) { HAL_TIM_Base_Start_IT(&htim2); iOnceFlag = 0; } if (g_timer2_is_full) { void Myprint_timer(void); Myprint_timer(); g_timer2_is_full = 0; } } #if 0 int lua_capture_val[20] = {0, 0, 0, 0}; uint8_t TIMCH_CAPTURE_STA[20]={0}; uint32_t TIMCH_CAPTURE_VAL[20]; void CAP_init(void) { HAL_TIM_IC_Start_IT(&CAP_tim1,TIM_CHANNEL_1); // HAL_TIM_IC_Start_IT(&CAP_tim1,TIM_CHANNEL_2); // HAL_TIM_IC_Start_IT(&CAP_tim1,TIM_CHANNEL_3); // HAL_TIM_IC_Start_IT(&CAP_tim1,TIM_CHANNEL_4); __HAL_TIM_ENABLE_IT(&CAP_tim1,TIM_IT_UPDATE); } static void __HAL_TIM_IC_CaptureCallback(uint8_t i,TIM_HandleTypeDef *htim, uint32_t chn, uint32_t por1,uint32_t por2) { if((TIMCH_CAPTURE_STA[i]&0X80)==0) { if(TIMCH_CAPTURE_STA[i]&0X40) { TIMCH_CAPTURE_STA[i]|=0X80; TIMCH_CAPTURE_VAL[i]=HAL_TIM_ReadCapturedValue(htim,chn); TIM_RESET_CAPTUREPOLARITY(htim,chn); TIM_SET_CAPTUREPOLARITY(htim,chn,por1); }else { TIMCH_CAPTURE_STA[i]=0; TIMCH_CAPTURE_VAL[i]=0; TIMCH_CAPTURE_STA[i]|=0X40; __HAL_TIM_DISABLE(htim); __HAL_TIM_SET_COUNTER(htim,0); TIM_RESET_CAPTUREPOLARITY(htim,chn); TIM_SET_CAPTUREPOLARITY(htim,chn,por2); __HAL_TIM_ENABLE(htim); } } } bool __Get_Capture(uint8_t i) { if(TIMCH_CAPTURE_STA[i]&0X80) { lua_capture_val[i]=TIMCH_CAPTURE_STA[i]&0X3F; lua_capture_val[i]*=0XFFFFFFFF; lua_capture_val[i]+=TIMCH_CAPTURE_VAL[i]; TIMCH_CAPTURE_STA[i]=0; return 1; } else return 0; } static void __HAL_TIM_PeriodElapsedCallback(uint8_t i) { if((TIMCH_CAPTURE_STA[i]&0X80)==0) { if(TIMCH_CAPTURE_STA[i]&0X40) { if((TIMCH_CAPTURE_STA[i]&0X3F)==0X3F) { TIMCH_CAPTURE_STA[i]|=0X80; TIMCH_CAPTURE_VAL[i]=0XFFFFFFFF; }else TIMCH_CAPTURE_STA[i]++; } } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&CAP_tim1)) { __HAL_TIM_PeriodElapsedCallback(0); /* __HAL_TIM_PeriodElapsedCallback(1); */ /* __HAL_TIM_PeriodElapsedCallback(2); */ /* __HAL_TIM_PeriodElapsedCallback(3); */ } } void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if(htim==(&CAP_tim1)) { __HAL_TIM_IC_CaptureCallback(0,&CAP_tim1,TIM_CHANNEL_1,TIM_ICPOLARITY_RISING,TIM_ICPOLARITY_FALLING); /* __HAL_TIM_IC_CaptureCallback(1,&CAP_tim1,TIM_CHANNEL_2,TIM_ICPOLARITY_RISING,TIM_ICPOLARITY_FALLING); */ /* __HAL_TIM_IC_CaptureCallback(2,&CAP_tim1,TIM_CHANNEL_3,TIM_ICPOLARITY_RISING,TIM_ICPOLARITY_FALLING); */ /* __HAL_TIM_IC_CaptureCallback(3,&CAP_tim1,TIM_CHANNEL_4,TIM_ICPOLARITY_RISING,TIM_ICPOLARITY_FALLING); */ } } #endif #endif