使用的硬件为野火的骄阳STM32F407IGT6控制板。
通过CUBE MX设置定时器,每隔一段时间产生一个定时器中断,在中断在处理特定的事件;
大概的设置过程如下:
1,初始化一个定时器,STM32单片机的定时器分为基本定时器,通用定时器和高级定时器三类,定时中断功能为最基本功能,所有定时器都具备该功能,这里我们可以选择一个基本定时器TIM6。参数设置如下:预分频器Prescaler设置为840-1,计数周期Counter Period设置为20000-1,这样配置后,我们实际得到的TIM1定时器定时频率为84000000/840/20000=5Hz,定时周期200ms。(为了直观显示定时器有没有正常工作,我们可以设置一个LED灯,代码中用宏定义为LED1,GPIO初始化过于简单,在此不作表述)
2,设置计数模式为:Up向上计数
3,由于需要定时中断功能,我们在NVIC Setting页面开启TIM6 global interrupt,DAC1 and DAC2 underrun error interrupts。
4,通过CUBE MX自动生成的文件并不能直接使用,需要作如下修改:
4.1手动开启定时器更新中断“ HAL_TIM_Base_Start_IT(&htim6);”,可以加在MX_TIMx_Init函数中,也可以直接加在main()函数中,效果都是一样的
void MX_TIM6_Init(void)
{