基础知识预备:
首先创建STM32工程,本文以简单的点亮LED及其闪烁实例为例,给大家介绍怎么用滴答定时器(SysTick),编写简单延时程序(就要用51一样的延时)。
新建两个文件delay.c和delay.h,添加到工程中。
SysTick 是一个 24 位的倒计数定时器,当计到 0 时,将从 RELOAD 寄存器中自动重装载定时初值。当 SysTick 控制及状态寄存器中的使能位永不清除时,SysTick 就将永不停止的进行计数。下面是关于它的寄存器关键位介绍。
延时构思:
第一步:首先确定时钟源(本例为72Mhz),滴答时钟的时钟为系统源时钟的8分频;
第二步:算出各个时间所占的时钟份数,比如说:1ms占72000000/8/1000 =9000这么多个时钟周期;所以要延时10ms需要10*9000=90000个时钟周期。(1ms = 1/1000s)
第三步:对各个寄存器进行操作。(重装寄存器,当前计数寄存器,控制及状态寄存器);判断计数为零的时候,停止循环,就达到了延时的目的。
程序完整设计:
LED引脚端口初始化。
主函数完善:延时初始化,LED管脚初始化,while循环(LED0隔400毫秒闪烁)
结果与分析:
程序下载,最终效果图。效果如理想一样隔400毫秒闪烁。