LED跑马灯实验,延时不准确

2019-07-21 01:07发布

小白,求助!!!在学习跑马灯实验的时候,就是刚开始入门学习点灯,让小灯闪烁,主要是要是不准(意思是我用的是原子的延时函数,软件上用的是500ms可是在硬件上就变得有2、3s左右)!刚开始学习的是直接用库函数调用,演示比较正常,但是我按照手册上的直接操作寄存器的时候就出现这样的问题,演示误差很大,就这接点一个灯,让他闪烁本来我以为是我配置错了,但是我把原子的源代码放过来以后也是出现这样的问题(延时不精确),用库函数是可以的!大家给分析一下,代码如下:
LED.C   :void LED_Init(void)
{
    RCC->AHB1ENR |= ( 1<< 5);
    
    GPIOF->MODER &= ~(3 << 18);
    GPIOF->MODER |= (1 << 18);
    
    GPIOF->OTYPER &= ~(1 <<9);
    GPIOF->OTYPER |= (0 << 9);
    
    GPIOF->OSPEEDR &= ~(3 << 18);
    GPIOF->OSPEEDR |= (1 << 18);
    
    GPIOF->UPDR &= ~(3 << 18);
    GPIOF->UPDR |= (1 << 18);
    
    GPIOF->ODR |= (1 << 9);
}

main :
int main(void)
{
    delay_init(168);
    LED_Init();
    while(1)
    {
        GPIOF->ODR &= ~(1 << 9);
        delay_ms(500);
        GPIOF->ODR |= (1 << 9);
        delay_ms(500);
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。