1.将PA7引脚设置为TIMx_CHy
2.激活(Activated)定时器x,让定时器x的通道y为输入捕获模式( Input Capture direct mode )
3.配置定时器x的psc为80-1,使能中断
4.在main函数中打开定时器x中断( HAL_TIM_IC_Start_IT(&htimx,TIM_CHANNEL_y) )
5.设置变量记录频率和CNT的值( uint32_t fre,capture_value )
6.调用捕获输入回调函数
( void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim){
if(htim->Instance==TIM17){
}
} )
7.调用读取捕获CNT值的函数(该函数实际上是读取CCR的值,因为在捕获到上升沿时,会将CNT赋值给CCR)读取CNT的值
( capture_value=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_y)+1
或者capture_value=TIMx->CCRy )
8.读完CNT,将CNT重新赋值为0( TIMx->CNT=0 )
9.带入计算频率公式计算频率( fre=80000000/(80*capture_value) )
10.将fre的值显示在LCD中
HAL_TIM_IC_Start_IT(&htimx,TIMx_CHANNEL_y)
uint8_t capture_value,fre;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim){
if(htim->Instance==TIMx){
capture_value=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_y)+1;
TIMx->CNT=0;
fre=80000000/(80*capture_value);
}
}


被折叠的 条评论
为什么被折叠?



