zoukankan      html  css  js  c++  java
  • 1.stm32粗延时函数

    1.stm32粗延时函数

    粗延时的意思就是延时时间不太准确,一般用在对延时时间要求不严格的场合。这种延时方式是采用软件延时,但因为编译器会在编译的时候加上一些其他辅助指令,所以不能确定C程序的准确运行时间。我们可以采用下面的方法进行估算:

    假设stm32 MCU系统时钟(SYSCLK)为48MHz,指令周期为4个系统时钟,则一个指令周期时长为1/12微秒。
    若要让计时单位为微秒(us),则可以让CPU空转约12次,即在软件上可以令减数周期变量为12,但由于存在其他辅助指令,所以可以将这个减数周期减小一些,比如10。

    类似地,若以毫秒(ms)为计时单位,则可以让CPU空转12000次。空转次数越多,则其他辅助指令占用时间相对越短。

    以微秒(us)为单位进行延时:

    void delay_us(u16 us_time)
    {
    u16 i=0;
    while(us_time--)
    {
    i=10; // 这要根据系统时钟频率进行计算
    while(i--) ; // 延时主操作,空操作
    }
    }
    以毫秒(ms)为单位进行延时:

    void delay_ms(u16 ms_time)
    {
    u16 i=0;
    while(ms_time--)
    {
    i=12000; // 以ms为单位
    while(i--) ;
    }

    ————————————————
    版权声明:本文为CSDN博主「tuxinbang1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tuxinbang1989/article/details/89758955

    粗延时的意思就是延时时间不太准确,一般用在对延时时间要求不严格的场合。这种延时方式是采用软件延时,但因为编译器会在编译的时候加上一些其他辅助指令,所以不能确定C程序的准确运行时间。我们可以采用下面的方法进行估算:

    假设stm32 MCU系统时钟(SYSCLK)为48MHz,指令周期为4个系统时钟,则一个指令周期时长为1/12微秒。
    若要让计时单位为微秒(us),则可以让CPU空转约12次,即在软件上可以令减数周期变量为12,但由于存在其他辅助指令,所以可以将这个减数周期减小一些,比如10。

    类似地,若以毫秒(ms)为计时单位,则可以让CPU空转12000次。空转次数越多,则其他辅助指令占用时间相对越短。

    以微秒(us)为单位进行延时:

    void delay_us(u16 us_time)
    {
    u16 i=0;
    while(us_time--)
    {
    i=10; // 这要根据系统时钟频率进行计算
    while(i--) ; // 延时主操作,空操作
    }
    }
    以毫秒(ms)为单位进行延时:

    void delay_ms(u16 ms_time)
    {
    u16 i=0;
    while(ms_time--)
    {
    i=12000; // 以ms为单位
    while(i--) ;
    }

    ————————————————
    版权声明:本文为CSDN博主「tuxinbang1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tuxinbang1989/article/details/89758955

  • 相关阅读:
    201521123065《java程序设计》第14周学习总结
    201521123065《java程序设计》第13周学习总结
    201521123065《java程序设计》第12周学习总结
    选择器
    浮动布局
    定位布局—position
    软工个人总结
    个人作业4——alpha阶段个人小结
    软件工程个人作业3
    结队编程
  • 原文地址:https://www.cnblogs.com/aker-whale/p/14649791.html
Copyright © 2011-2022 走看看