初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2020-11-12
- 在线时间
- 11 小时
|
1金钱
因为原函数是静态的 下面是把core_cm3.h里的systick配置函数直接搬过来了 (关闭了中断)
系统时钟配的72m 所以配置了72000 理论上这时候一次是1ms
但是实际上在main中写了一个小测试, delay_ms(1000000)结果led闪的还是很快
有没有好心人知道这是咋一回事 都要睡不着了 谢谢
#include "SYSTICK.h"
uint32_t SysTick_Config_Delay(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
//SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
void SysTick_Dealy_ms(uint32_t ms)
{
SysTick_Config_Delay(72000);
for(int i=0;i<ms;i++)
{
while(!(SysTick->CTRL)&(1<<16));
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
-------------------------------------------------------------------------------------main.c
while(1)
{
LED0GO;
delay_ms(1000000);
LED0DOWN;
delay_ms(1000000);
}
}
|
|