zoukankan      html  css  js  c++  java
  • stm32中的延时函数

    //粗延时函数,微秒

    • void delay_nus(u16 time)
    • {    
    •    u16 i=0;  
    •    while(time--)
    •    {
    •       i=10;  //自己定义
    •       while(i--) ;    
    •    }
    • }

    //毫秒级的延时

    • void delay_nms(u16 time)
    • {    
    •    u16 i=0;  
    •    while(time--)
    •    {
    •       i=12000;  //自己定义
    •       while(i--) ;    
    •    }
    • }

    运用SysTick来实现准确定时:

    • SysTick_Config(SystemCoreClock / 10)   函数的形参就是systick重装定时器的值。
    • systick计数频率为每秒72000000次,所以7200000次就是1/10秒,也就是100ms。
    • SysTick是1个24bit递减计数器,通过对SysTick控制与状态寄存器的设置,可选择HCLK时钟(72M)或HCLK的8分频作为SysTick的时钟源。//V3.5默认为HCLK时钟
    • SysTick的重装寄存器决定了定时器频率。
    • 若SysTick的时钟源是72M,   SystemFrequency = 72000000Hz
    • 所以 SysTick_Config(SystemCoreClock / 1000); 就是1ms时基。

    SysTick的初始化设置:
    void Init_SysTick(void)
    {
    if(SysTick_Config(SystemCoreClock / 1000)) //注意:3.5库中 SystemFrequency 被 SystemCoreClock 取代。
    while(1);
    }



    延时函数:
    __IO uint32_t TimingDelay;
    void delay_ms(__IO uint32_t nTime)
    {
    TimingDelay = nTime;
    while(TimingDelay != 0);
    }

    中断函数:
    extern __IO uint32_t TimingDelay;
    void SysTick_Handler(void)
    {
    if (TimingDelay != 0x00)

    TimingDelay--;
    }
    }




    delay_ms(1000);
  • 相关阅读:
    JAVA 桥接模式
    字模生成/提取原理
    const修饰指针
    BMP格式分析
    [转载]在.Net中使用SMTP发送邮件
    [转载]MD5加密解密
    四十二。java
    四十四。java
    四十一。复习第十二章内容
    三十六。文件流
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/6416728.html
Copyright © 2011-2022 走看看