STM32在系统时钟为72M下的几个延时函数
时间:11-21
来源:互联网
点击:
//粗延时函数,微秒
- 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_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);}延时函数:__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);
STM32系统时钟延时函 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)