资深版主
- 积分
- 10541
- 金钱
- 10541
- 注册时间
- 2017-2-18
- 在线时间
- 1908 小时
|
本帖最后由 peng1554 于 2018-11-24 12:58 编辑
遇到一个客户使用阿波罗F429使用PB6/PB7复用为串口1有问题的情况,所以改了这个程序,程序基于ALIENTEK 阿波罗STM32F429开发板实验3修改,因为用的还是串口1,所以只需要修改初始化引脚
查STM32F429IGT6数据手册知道PB6/PB7复用为串口1是需要选择复用器AF7
需要修改usart.c的HAL_UART_MspInit()
[mw_shl_code=c,true]//UART底层初始化,时钟使能,引脚配置,中断配置
//此函数会被HAL_UART_Init()调用
//huart:串口句柄
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance==USART1)//如果是串口1,进行串口1 MSP初始化
{
__HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOB时钟
__HAL_RCC_USART1_CLK_ENABLE(); //使能USART1时钟
GPIO_Initure.Pin=GPIO_PIN_6; //PB6
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速
GPIO_Initure.Alternate=GPIO_AF7_USART1; //复用为USART1
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB6
GPIO_Initure.Pin=GPIO_PIN_7; //PB7
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB7
#if EN_USART1_RX
HAL_NVIC_EnableIRQ(USART1_IRQn); //使能USART1中断通道
HAL_NVIC_SetPriority(USART1_IRQn,3,3); //抢占优先级3,子优先级3
#endif
}
}[/mw_shl_code]
需要注意的是程序下载后用杜邦线将PB6接2处的RXD,PB7接2处的TXD(图片中用的F767,请忽略)
串口助手截图
|
|