有人利用STM32做开发,基于片内SYSTICK定时器做延时,即利用SYSTICK的周期性溢出中断来实现指定延时。可是他发现自己编写的延时函数似乎不起作用。代码也很简单,颇为奇怪。
我这里基于他的功能模拟一段测试代码,如下截图所示:
上面代码在主循环里,每一轮循环就是先让LED闪烁5次,然后熄灭一会。就这样循环进行。其中,有个全局变量Delay,决定每次延时长短。
uint32_t Delay; //Define a globle variable
关于SYSTICK的中断服务函数也很简单,像下面这样:
所有测试代码就是上面两个截图所涉及的内容。
在测试过程中发现,当我们开启IDE的编译优化,尤其优化