资深版主
 
- 积分
- 10565
- 金钱
- 10565
- 注册时间
- 2017-2-18
- 在线时间
- 1913 小时
|
本帖最后由 peng1554 于 2018-10-25 22:24 编辑
前段时间有网友问阿波罗F767的PB14 ,PB15复用为串口1的程序 ,所以整了下阿波罗开发板的相关引脚复用为串口1的程序(除了开发板自带的串口通信实验例程)需要注意的是:
1.阿波罗F429的主芯片PB14,PB15不能复用为串口1
2.测试程序实现的是以开发板串口通信实验例程一样的功能。即:STM32通过串口1和上位机对话,STM32在收到上位机发过来的字符串(以回车换
行结束)后,原原本本的返回给上位机。下载后,DS0闪烁,提示程序在运行,同时每隔一定时间,通过串口1输出一段信息到电脑。
3.复用功能不懂的部分可以看看开发指南的第四章的“IO引脚复用器和映射”章节
4.基于开发板的串口通信实验例程修改
以阿波罗F767的PB14 ,PB15复用为串口1为例
只需要修改usart.c的HAL_UART_MspInit()
以阿波罗F767的PB14,PB15复用为串口1为例
1.需要将原例程的使能GPIOA时钟改为使能GPIOB时钟
2.根据STM32F767IGT6数据手册查找PB14,PB15的复用通道AF4
该函数修改如下:
[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_14; //PB14
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速
GPIO_Initure.Alternate=GPIO_AF4_USART1; //复用为USART1
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB14
GPIO_Initure.Pin=GPIO_PIN_15; //PB15
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB15
#if EN_USART1_RX
HAL_NVIC_EnableIRQ(USART1_IRQn); //使能USART1中断通道
HAL_NVIC_SetPriority(USART1_IRQn,3,3); //抢占优先级3,子优先级3
#endif
}
}[/mw_shl_code]
代码下载到阿波罗F767开发板并将底板上PB14引脚接P4处的RXD引脚,PB15接P4处的TXD引脚
测试例程效果
|
-
-
阿波罗F429_PB6,PB7复用为串口1测试程序.rar
7.05 MB, 下载次数: 20
-
-
阿波罗F767_PB6,PB7复用为串口1测试程序.rar
8.33 MB, 下载次数: 24
-
-
阿波罗F767_PB14,PB15复用为串口1测试程序.rar
8.33 MB, 下载次数: 30
-
-
阿波罗H743_PB6,PB7复用为串口1测试程序.rar
8.53 MB, 下载次数: 21
-
-
阿波罗H743_PB14,PB15复用为串口1测试程序.rar
8.53 MB, 下载次数: 50
|