关注、星标公众号,不错过精彩内容
单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。 本文基于STM32F207介绍4种不同方式实现的延时函数。 普通延时 这种延时方式应该是大家在51单片机时候,接触最早的延时函数。这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,在某些编译器下,代码会被优化,导致精度较低,用于一般的延时,对精度不敏感的应用场景中。//微秒级的延时void delay_us(uint32_t delay_us){ volatile unsigned int num; volatile unsigned int t; for (num = 0; num < delay_us; num++) {
t = 11; while (t != 0) {
t--; } }}//毫秒级的延时void delay_ms(uint16_t delay_ms){ volatile unsigned int num; for (num = 0; num < delay_ms; num++) {
delay_us(1000); }}
上述工程源码仓库: https://github.com/strongercjd/STM32F207VCT6/tree/master/02-Template (提示:公众号 不支 持外链接,请复制链接到浏览器下载)
定时器中断
定时器具有很高的精度,我们可以配置定时器中断