delay_ms()函数,真实效果比理论值更慢

2019-07-20 07:36发布

本人新手,在学习阿波罗f429的开发板,跟着视频教程“手把手教你写跑马灯实验-寄存器版本”,编写了跑马灯实验。但发现跑马灯闪烁时间间隔明显高于500ms。
以下是代码,基本上跟视频的一样。
请教各位不知道这是什么原因呢?
#include "sys.h"
#include "delay.h"
#include "usart.h"


int main(void)
{
HAL_Init();
Stm32_Clock_Init(360,25,6,8);
        delay_init(180);
       
        RCC->AHB1ENR |=1<<1;
        GPIOB->MODER=0x00000005;
        GPIOB->OTYPER=0x00000000;
        GPIOB->OSPEEDR=0x0000000F;
        GPIOB->PUPDR=0x00000005;
        while(1)
        {
        GPIOB->BSRR=0x000000003;//1
        delay_ms(500);       
        GPIOB->BSRR=0x00030000;//0
        delay_ms(500);       
        }
        }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。