[应用相关] STM32精确延迟1us和1ms的函数

[复制链接]
 楼主| 雨果喝水 发表于 2021-2-25 22:15 | 显示全部楼层 |阅读模式
延迟1us:
  1. void delay_us(u32 i)
  2. {
  3.     u32 temp;
  4.     SysTick->LOAD=9*i;         //设置重装数值, 72MHZ时
  5.     SysTick->CTRL=0X01;         //使能,减到零是无动作,采用外部时钟源
  6.     SysTick->VAL=0;                //清零计数器
  7.     do
  8.     {
  9.         temp=SysTick->CTRL;           //读取当前倒计数值
  10.     }
  11.     while((temp&0x01)&&(!(temp&(1<<16))));     //等待时间到达
  12.     SysTick->CTRL=0;    //关闭计数器
  13.     SysTick->VAL=0;        //清空计数器
  14. }


 楼主| 雨果喝水 发表于 2021-2-25 22:16 | 显示全部楼层
延迟1ms:
  1. void delay_ms(u32 i)
  2. {
  3.     u32 temp;
  4.     SysTick->LOAD=9000*i;      //设置重装数值, 72MHZ时
  5.     SysTick->CTRL=0X01;        //使能,减到零是无动作,采用外部时钟源
  6.     SysTick->VAL=0;            //清零计数器
  7.     do
  8.     {
  9.         temp=SysTick->CTRL;       //读取当前倒计数值
  10.     }
  11.     while((temp&0x01)&&(!(temp&(1<<16))));    //等待时间到达
  12.     SysTick->CTRL=0;    //关闭计数器
  13.     SysTick->VAL=0;        //清空计数器
  14. }
 楼主| 雨果喝水 发表于 2021-2-25 22:17 | 显示全部楼层
注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。

转载自:https://www.cnblogs.com/jiwangbujiu/p/5463751.html
gygp 发表于 2021-3-4 13:22 | 显示全部楼层
HAL库只提供了微秒级的延时函数  
chenci2013 发表于 2021-3-4 13:22 | 显示全部楼层
可以考虑使用软件定时器  
biechedan 发表于 2021-3-4 13:23 | 显示全部楼层
过普通延时函数实现精确的定时。  
wangdezhi 发表于 2021-3-4 13:23 | 显示全部楼层
滴答定时器较好   
suzhanhua 发表于 2021-3-4 13:24 | 显示全部楼层
精确度很高   
xietingfeng 发表于 2021-3-4 13:24 | 显示全部楼层
如何让STM32的定时器能工作到1us的计数周期
mituzu 发表于 2021-3-4 13:27 | 显示全部楼层
单片机延时为什么要用延时函数而不用定时器做延时
uiint 发表于 2021-3-4 13:27 | 显示全部楼层
封装几个常用延时函数  
hellosdc 发表于 2021-3-4 13:27 | 显示全部楼层
STM32精确延时函数实现方式有哪几种?
isseed 发表于 2021-3-4 13:28 | 显示全部楼层
Delay()函数延时的时间是怎么计算的
uiint 发表于 2021-3-4 13:28 | 显示全部楼层
滴答定时器给用了,没有了us的精确延时
hellosdc 发表于 2021-3-4 13:28 | 显示全部楼层
mcu 定时器计数  
mituzu 发表于 2021-3-4 13:28 | 显示全部楼层
delay函数是如何计算延时的
suzhanhua 发表于 2021-3-4 13:28 | 显示全部楼层
stm32f302r8有多少定时器
xietingfeng 发表于 2021-3-4 13:28 | 显示全部楼层
STM32中用SysTick延时不宜在中断中使用
wangdezhi 发表于 2021-3-4 13:28 | 显示全部楼层
长时间延时的化请选用通用定时器  
biechedan 发表于 2021-3-4 13:28 | 显示全部楼层
延时函数相对比较准确  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

1213

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部