延时函数不对

2019-07-20 06:36发布

单片机型号:STM32F415VG,使用外部8M晶振,设置系统时钟为168M用原子哥的us级延时函数延时500us,但实测为1.5ms,这是为什么,哪里我没考虑到?
void delayus(u32 nus)
{
        u32 temp;
        SysTick->LOAD  = nus*21;
        SysTick->VAL   = 0x00;
        SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
        do
        {
                temp = SysTick->CTRL;
        }
        while((temp & 0x01)&& (!(temp & (1 << 16))));
        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
        SysTick->VAL   = 0x00;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
午夜狼嚎
1楼-- · 2019-07-20 08:56
找到问题了,系统时钟没设置好,在system_stm32f4xx.c和stm32f4xx.h里面重新设置了系统时钟就好了
DreamWaterPro
2楼-- · 2019-07-20 09:02
 精彩回答 2  元偷偷看……
午夜狼嚎
3楼-- · 2019-07-20 14:13
 精彩回答 2  元偷偷看……

一周热门 更多>