原理要自己学习,这里仅仅给出最简单的通俗易懂的代码
//main.h
typedef struct //测量低电平脉宽
{
uint8_t ucFinishFlag; //结束
uint8_t ucStartFlag; //开始
uint16_t usCtr;
uint16_t usPeriod;
}STRUCT_CAPTURE;
//main.c
STRUCT_CAPTURE strCapture = {
0, 0, 0 };
uint32_t ulTmrClk, ulTime,ulTimea,ulTimeb;
int main(void)
{
/* 获取定时器时钟周期 */
ulTmrClk = HAL_RCC_GetHCLKFreq()/72; //实际上就是定时器时钟/预分频系数 72M/72获取每次计数时间
/* 启动定时器 */
HAL_TIM_Base_Start_IT(&htim2);
/* 启动定时器通道输入捕获并开启中断 */
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
while