您的位置 首页 技术

STM32在体系时钟为72M下的几个延时函数

粗延时函数,微秒voiddelay_nus(u16time){u16i=0;while(time–){i=10;自己定义while(i–);}}毫秒级的延时voiddelay_

//粗延时函数,微秒

  • 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的初始化设置:voidInit_SysTick(void){if(SysTick_Config(SystemCoreClock/1000))//留意:3.5库中SystemFrequency 被SystemCoreClock 替代。while(1);}延时函数:__IOuint32_tTimingDelay;voiddelay_ms(__IOuint32_tnTime){TimingDelay=nTime;while(TimingDelay!=0);}中止函数:extern__IOuint32_tTimingDelay;voidSysTick_Handler(void){if(TimingDelay!=0x00){TimingDelay--;}}delay_ms(1000); 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/263316.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部