STM32在系统时钟为72M下的几个延时函数
2016-02-25 来源:eefocus
//粗延时函数,微秒
进入单片机查看更多内容>>
- 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的初始化设置: 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);
相关文章