【NUCLEO H533RE】32位定时器高精度长时间PWM输出
[复制链接]
1、测试介绍
本次测试利用STM32H533RE的32位定时器产生高精度长时间的PWM输出,精度可以达到1微秒,脉冲的周期宽度可以达到4000秒的长度,这种脉冲在激光输出等设备中非常的有用。使用的资源为TIM2定时器,通道选择为CH1。通道输出选用PA5引脚,该引脚通过NPN三极管驱动与LD2连接,可以通过LD2的状态观察输出。
STM32H533RE的定时器资源
开发板连接原理图
2、测试设置
(1)因为需要使用PA5引脚不能够使用LD2的驱动设置,所以设置不需要BSP的驱动
取消BSP的驱动。
(2)测试使用外部晶振用来提高精度
高速和低速晶振使用外部晶振设置
使用外部晶振后,需要注意MCU的工作频率为25MHZ,而不是最高的250MHZ。这个在定时器的分频设置时有用。
(3)TIM2的设置
选择使用TIM2定时器,通道使用CH1,输出引脚使用PA5,可以使用中断程序计数脉冲个数。本次测试开启中断
重装模式:开
分频系数:25-1、定时精度为一微秒,1uS
周期:1,999,999,定义为两秒,2S
脉宽:1,000,000,50%的脉宽
(4)LED外部设置
使用外接LED来对比LD2的显示。PA0引脚作为LED输出,模式使用驱动输出
关于PWM设置完成,生成程序。
3、程序与过程
程序除了设置外,可以通过HAL_TIM_PWM_Start_IT开启PWM输出,主要程序如下。
/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(LED5_GPIO_Port,LED5_Pin,GPIO_PIN_SET);
if (HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_1) != HAL_OK)
{
/* PWM Generation Error */
Error_Handler();
}
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(LED5_GPIO_Port,LED5_Pin);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
4、测试过程
外部LED和LD2的频率是同步的
同时关闭
同时打开
5、附件项目
|