关于解决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 |