新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2019-7-8
- 在线时间
- 11 小时
|
1金钱
使用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
}
|
|