我采用的24M外接晶振,在降低系统主频的时候,当SCLK低于30M时,systick不能正常工作。
例如时钟配置如下:
PLL_M = 24; PLL_N = 250; PLL_P = 10; PLL_Q = 8;
RCC_HCLKConfig(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div4);
RCC_PCLK2Config(RCC_HCLK_Div2);
得到25M主频的时候,但是delay 1s实际只delay了250ms;LED灯可以正常点亮。
delay函数如下:
void delay_ms(u32 mTime)
{
u32 temp;
SysTick->LOAD = 3.125*1000*mTime;
SysTick->VAL = 0x00;
SysTick->CTRL = 0x01;//ê1Äü
do
{
temp = SysTick->CTRL;
}while((temp&0x01)&&(!(temp&(1<<16))));
SysTick->CTRL = 0x00;
SysTick->VAL = 0x00;
}
请问这是什么情况呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
那delay工作不准确,是啥原因导致的啊?
看看时钟配置有没有什么问题
哇哦,太感谢了!果然是这个问题导致的!
一周热门 更多>