今天学习定时器,前面我们做LED灯闪烁是在主程序的while循环里实现的,今天我们把闪烁部分放入定时器的中断函数里。今天使用LED1,
电路原理图如下:
Step1.打开
STM32CubeMX,点击“New Project”,选择芯片型号,STM32F412ZGTx。
Step2.在 Pinout 界面下配置 PB0 为输出模式,并输入用户标签 LD1。
Step3.配置
tiM1,使用内部时钟源。
Step4.配置时钟树,在此使用100MHz。
Step5.配置 TIM1 参数和 GPIO 的参数。
在 configuration 界面中点击 TIM1 按钮,可以进入参数配置界面。
在 Parameter Settings 页配置预分频系数为 49999,计数周期(自动加载值)为 999,定时器溢
出频率就是 100MHz/(49999+1)/(999+1) = 2Hz。
在 NVIC 页面使能 TIM1 的更新中断。
Step6.生成源代码。
点击生成源代码按钮。
在设置界面中输入工程名,保存路径,工程 IDE 类型,点 OK 即可。
生成代码完成后可直接打开工程。
Step7.添加功能代码。
在 main 文件/* USER CODE BEGIN 4 */和/* USER CODE END 4 */注释之间加入下面代码。
- /* USER CODE BEGIN 4 */
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
- {
- if(htim->Instance == TIM1)
- {
- HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
- }
- }
- /* USER CODE END 4 */
复制代码
在 main 凼数的 while(1)之前启动 TIM1 并使能其中断功能。
至此,完成整个工程。编译下载,现象就是 LED1 同步循环闪烁,亮 500 毫秒灭 500毫秒。
0