打印
[应用相关]

STM32精确延迟1us和1ms的函数

[复制链接]
756|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨果喝水|  楼主 | 2021-2-25 22:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
延迟1us:
void delay_us(u32 i)
{
    u32 temp;
    SysTick->LOAD=9*i;         //设置重装数值, 72MHZ时
    SysTick->CTRL=0X01;         //使能,减到零是无动作,采用外部时钟源
    SysTick->VAL=0;                //清零计数器
    do
    {
        temp=SysTick->CTRL;           //读取当前倒计数值
    }
    while((temp&0x01)&&(!(temp&(1<<16))));     //等待时间到达
    SysTick->CTRL=0;    //关闭计数器
    SysTick->VAL=0;        //清空计数器
}


使用特权

评论回复
沙发
雨果喝水|  楼主 | 2021-2-25 22:16 | 只看该作者
延迟1ms:
void delay_ms(u32 i)
{
    u32 temp;
    SysTick->LOAD=9000*i;      //设置重装数值, 72MHZ时
    SysTick->CTRL=0X01;        //使能,减到零是无动作,采用外部时钟源
    SysTick->VAL=0;            //清零计数器
    do
    {
        temp=SysTick->CTRL;       //读取当前倒计数值
    }
    while((temp&0x01)&&(!(temp&(1<<16))));    //等待时间到达
    SysTick->CTRL=0;    //关闭计数器
    SysTick->VAL=0;        //清空计数器
}

使用特权

评论回复
板凳
雨果喝水|  楼主 | 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库只提供了微秒级的延时函数  

使用特权

评论回复
5
chenci2013| | 2021-3-4 13:22 | 只看该作者
可以考虑使用软件定时器  

使用特权

评论回复
6
biechedan| | 2021-3-4 13:23 | 只看该作者
过普通延时函数实现精确的定时。  

使用特权

评论回复
7
wangdezhi| | 2021-3-4 13:23 | 只看该作者
滴答定时器较好   

使用特权

评论回复
8
suzhanhua| | 2021-3-4 13:24 | 只看该作者
精确度很高   

使用特权

评论回复
9
xietingfeng| | 2021-3-4 13:24 | 只看该作者
如何让STM32的定时器能工作到1us的计数周期

使用特权

评论回复
10
mituzu| | 2021-3-4 13:27 | 只看该作者
单片机延时为什么要用延时函数而不用定时器做延时

使用特权

评论回复
11
uiint| | 2021-3-4 13:27 | 只看该作者
封装几个常用延时函数  

使用特权

评论回复
12
hellosdc| | 2021-3-4 13:27 | 只看该作者
STM32精确延时函数实现方式有哪几种?

使用特权

评论回复
13
isseed| | 2021-3-4 13:28 | 只看该作者
Delay()函数延时的时间是怎么计算的

使用特权

评论回复
14
uiint| | 2021-3-4 13:28 | 只看该作者
滴答定时器给用了,没有了us的精确延时

使用特权

评论回复
15
hellosdc| | 2021-3-4 13:28 | 只看该作者
mcu 定时器计数  

使用特权

评论回复
16
mituzu| | 2021-3-4 13:28 | 只看该作者
delay函数是如何计算延时的

使用特权

评论回复
17
suzhanhua| | 2021-3-4 13:28 | 只看该作者
stm32f302r8有多少定时器

使用特权

评论回复
18
xietingfeng| | 2021-3-4 13:28 | 只看该作者
STM32中用SysTick延时不宜在中断中使用

使用特权

评论回复
19
wangdezhi| | 2021-3-4 13:28 | 只看该作者
长时间延时的化请选用通用定时器  

使用特权

评论回复
20
biechedan| | 2021-3-4 13:28 | 只看该作者
延时函数相对比较准确  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

1153

帖子

0

粉丝