初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2019-5-8
- 在线时间
- 17 小时
|
1金钱
- void SysTick_TimerDelayMsInit(void) {
- SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
- }
- /* 毫秒延时函数 */
- void DelayMs(__IO uint16_t hwMill) {
- uint32_t wTemp;
-
- SysTick->LOAD = (uint32_t)hwMill * 9000;
- SysTick->VAL = 0x00;
- SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ;
- do {
- wTemp = SysTick->CTRL;
- }
- while(wTemp & 0x01 && !(wTemp & (1 << 16)));
- SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
- SysTick->VAL = 0X00;
- }
- /* 微秒级别延时函数 */
- void DelayUs(__IO uint32_t wMicro) {
- uint32_t wTemp;
-
- SysTick->LOAD = wMicro * 9;
- SysTick->VAL = 0x00;
- SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ;
- do {
- wTemp = SysTick->CTRL;
- }
- while(wTemp & 0x01 && !(wTemp & (1 << 16)));
- SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
- SysTick->VAL = 0X00;
- }
复制代码
调用DelayMs(__IO uint16_t hwMill) 毫秒延时,当时间超过1000后,延时缩短,1000以内是正常的,请问是什么原因导致的啊?溢出了吗
|
|