您现在的位置: 主页 > MCU > 单片机应用 > stm32中的延时函数 -
本文所属标签:
为本文创立个标签吧:

stm32中的延时函数 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]//粗延时函数,微秒void delay_nus(u16time){ u16 i=0; while(time--){i=10;//自己定义while(i--) ; }}//毫秒级的延时void delay_nms(u16 time){ u16i=0; while(time--){i=12000;//自己定义while(i--) ; }}运用SysTi

//粗延时函数,微秒

本文引用地址: http://www.21ic.com/app/mcu/201807/781305.htm


void delay_nus(u16time)

{

u16 i=0;

while(time--)

{

i=10;//自己定义

while(i--) ;

}

}

//毫秒级的延时

void delay_nms(u16 time)

{

u16i=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);




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > stm32中的延时函数 -
 

"stm32中的延时函数 -"的相关文章

网站地图

围观()