您好,欢迎访问本站!
商品分类

关于解决STM32 IO配置导致复位失败的问题

作者: jacksong123

int main()
{ u8 i;
        clk_init();
        board_init();

        ///***开机提示音**///
        for(i=0;i<3;i++)
        {
        Buzzer_on;

        delay_ms(400);       
  Buzzer_off;

        delay_ms(400);
         
        }
}
如上述简单程序,本该上电蜂鸣器叫三次,结果,经常出现蜂鸣器持续鸣叫,尤其是液晶显示屏未连接的时候,概率接近100%。经过仔细排查,排除了复位电容的硬件问题,确定为软件导致
void uart2_LCD_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;                         //uart2
                NVIC_InitTypeDef NVIC_InitStructure;
                USART_InitTypeDef USART_InitStructure;
    //串口2 gpio配置
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;                //选择           TXD
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;        //速度配置为2M
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);                    //将gpio设置 初始化入相应寄存器
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;                //选择                           RXD
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;        //速度配置为2M
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);                          //将gpio设置 初始化入相应寄存器
                                   ///**配置lcd busy  io**////
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;                //选择           TXD
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;        //速度配置为2M
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}
最后查到就是上面这个红色io配置的问题,修改为了上拉输入,问题得以解决。最初是配置成了浮空输入,上电状态由于串口显示屏未插或 显示屏启动有延时,导致了io浮空电平混乱,从而导致主板复位异常,一直处于长时间鸣叫状态
特此分享,希望对同行朋友有所帮助
详见: https://www.yleee.com.cn/thread-85117-1-1.html

发表回复

登录后才能评论