实现功能:
软件执行到这一条语句后,可以指定一个引脚发送一个可以设置脉宽的高电平信号。
解释:
这个是用定时器构成的单脉冲,所以最窄脉宽可以是一个SYSCLK时钟周期(一个主频时钟周期)。我用stm32f405(168M主频)举例就是最窄脉宽为6ns。
有人觉得直接用HAL_GPIO_WritePin写函数拉高再拉低就行,带来的问题就是计量脉冲宽度的时间不好掌握。尤其需要窄脉冲信号时候,可能软件指令还没执行完,需要的脉宽已经错过去了。
上配置:
时钟配置成最高主频
配置定时器
所以说单脉冲脉宽=counter period -pluse
即:46-40=6(个tim8时钟周期)
调用程序:
__HAL_TIM_ENABLE(&htim8); //每发送一个单脉冲都要使能一次
HAL_TIM_OnePulse_Start(&htim8,TIM_CHANNEL_8); //发送单脉冲指令