• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F429串口4的一个诡异问题

zzzqiu 2019-07-12 浏览量:1188
使用HAL库编程,串口1、2、3、5、6、7、8能正常收发数据,串口4初始化后打印一堆乱码,初始化程序如下

//初始化 IO 串口 4  TX-->PA0
//bound:波特率      RX-->PA1
void uart4_init(u32 bound)
{
    //GPIO 端口设置
    GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_GPIOA_CLK_ENABLE(); //使能 GPIOA 时钟
    __HAL_RCC_UART4_CLK_ENABLE(); //使能 UART4 时钟

    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1;                        //PA0 PA1
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //复用推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
    GPIO_Initure.Alternate=GPIO_AF8_UART4;        //复用为USART4
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化PA0

    //USART 初始化设置
    UART4_Handler.Instance=UART4; //UART4
    UART4_Handler.Init.BaudRate=bound; //波特率
    UART4_Handler.Init.WordLength=UART_WORDLENGTH_8B; //字长 8 位数据
    UART4_Handler.Init.StopBits=UART_STOPBITS_1; //一个停止位
    UART4_Handler.Init.Parity=UART_PARITY_NONE; //无奇偶校验位
    UART4_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;//无硬件流控
    UART4_Handler.Init.Mode=UART_MODE_TX_RX; //收发模式
    HAL_UART_Init(&UART4_Handler); //HAL_UART_Init()会使能 USART4

    __HAL_UART_DISABLE_IT(&UART4_Handler,UART_IT_TC);

#if EN_USART4_RX
    __HAL_UART_ENABLE_IT(&UART4_Handler,UART_IT_RXNE);//开启接收中断
    HAL_NVIC_EnableIRQ(UART4_IRQn); //使能 USART4 中断
    HAL_NVIC_SetPriority(UART4_IRQn,3,0); //抢占优先级 3,子优先级 3
#endif

}

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 有可能是UART4的引脚与别的功能复用了,可以检查一下,是否有别的地方或者别的功能用了这两个IO


    如果不是复用的问题,那也可以检查一下乱码出来是些什么数据,是否有一定规律                                                                                                                                                              

    • 发布于 2019-07-12
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0

相关问题

问题达人换一批

STM32F429串口4的一个诡异问题