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.
130 lines
3.3 KiB
130 lines
3.3 KiB
/**
|
|
******************************************************************************
|
|
* @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
|
|
|