stm32f103rb,延时不准确问题

2019-08-14 16:46发布

代码如下
int main()
{
        GPIO_InitTypeDef GPIO_InitTypestructure;
       
        delay_init();                     //延时函数初始化
        uart_init(115200);         //串口初始化为115200
        uart2_init(115200);  //串口2初始化为115200
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
       
        //PWRKEY-PB9输出低电平,延时1.5s,恢复高电平 推挽输出
        //RESET-PB8输出低电平
        GPIO_InitTypestructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitTypestructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitTypestructure.GPIO_Speed=GPIO_Speed_50MHz;
       
        //GPIOB时钟
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
        //GPIO初始化
        GPIO_Init(GPIOB,&GPIO_InitTypestructure);
       
        //唤醒
        //PB8输出低电平唤醒
        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
       
        //先等待vbat电压稳定250ms
        //PB9输出低电平
        GPIO_ResetBits(GPIOB,GPIO_Pin_9);
        //延迟2000ms
        delay_ms(2000);

        //开启mg301模块
        printf(" 开机 ");
        //PB9输出高电平
        GPIO_SetBits(GPIOB,GPIO_Pin_9);
        //延迟1.5秒
        delay_ms(1500);
        //PB9输出低电平
        GPIO_ResetBits(GPIOB,GPIO_Pin_9);
        delay_ms(1000);
       
        while(1)
        {
                printf(" 测试 ");
                delay_ms(1000);
        }
        return 0;
}

从串口调试助手上打印出来的测试,延时明显超过1秒,到5-6秒左右,用的是正点原子的延时函数。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。