zoukankan      html  css  js  c++  java
  • STM32精确延迟1us和1ms的函数

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

    延迟1us:

     1 /*******************************************************************************
     2 * 函 数 名         : delay_us
     3 * 函数功能           : 延时函数,延时us
     4 * 输    入         : i
     5 * 输    出         : 无
     6 *******************************************************************************/
     7 void delay_us(u32 i)
     8 {
     9     u32 temp;
    10     SysTick->LOAD=9*i;         //设置重装数值, 72MHZ时
    11     SysTick->CTRL=0X01;         //使能,减到零是无动作,采用外部时钟源
    12     SysTick->VAL=0;                //清零计数器
    13     do
    14     {
    15         temp=SysTick->CTRL;           //读取当前倒计数值
    16     }
    17     while((temp&0x01)&&(!(temp&(1<<16))));     //等待时间到达
    18     SysTick->CTRL=0;    //关闭计数器
    19     SysTick->VAL=0;        //清空计数器
    20 }

    延迟1ms:

     1 /*******************************************************************************
     2 * 函 数 名         : delay_ms
     3 * 函数功能           : 延时函数,延时ms
     4 * 输    入         : i
     5 * 输    出         : 无
     6 *******************************************************************************/
     7 void delay_ms(u32 i)
     8 {
     9     u32 temp;
    10     SysTick->LOAD=9000*i;      //设置重装数值, 72MHZ时
    11     SysTick->CTRL=0X01;        //使能,减到零是无动作,采用外部时钟源
    12     SysTick->VAL=0;            //清零计数器
    13     do
    14     {
    15         temp=SysTick->CTRL;       //读取当前倒计数值
    16     }
    17     while((temp&0x01)&&(!(temp&(1<<16))));    //等待时间到达
    18     SysTick->CTRL=0;    //关闭计数器
    19     SysTick->VAL=0;        //清空计数器
    20 }

    注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。

  • 相关阅读:
    stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法
    vue项目配置使用flow类型检查
    项目中存在的问题
    坚持
    Enum枚举类使用集合
    JS 随机数字抽签
    【转】Basic C# OOP Concept
    EF异常:WebForm、Console、Winform层不引入EF报错
    EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
    WebServices中使用Session
  • 原文地址:https://www.cnblogs.com/jiwangbujiu/p/5463751.html
Copyright © 2011-2022 走看看