Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
stm32F103VET6 HAL 库USART3 串口重映射
发布于 2018-09-18 16:57:27 浏览:5284
订阅该版
今天将我们之前项目植为rt-thread 系统进行学习,之前的板子因为usart3 为了方便走线,用的是PC10,PC11 。rt-thred 里usart3 默认是PB10,PB11。 首先第一步:在drv_usart.c 里找到void HAL_UART_MspInit(UART_HandleTypeDef *uartHandle)。函数找到usart 配置部分else if (uartHandle->Instance == USART3) 第二步:之前的__HAL_RCC_GPIOB_CLK_ENABLE(); 注释掉,更改为__HAL_RCC_GPIOC_CLK_ENABLE(); 第三步: 对usart 引脚进行重映射:添加__HAL_AFIO_REMAP_USART3_PARTIAL(); // 将USART 3 更换到PC10,PC11 默认是PB10,PB11 第四步:修改TX 引脚的配置 :由HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 改为 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 第五步: 修改RX 引脚的配置:由HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 改为 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 经过以上5步编译后验证OK! 部分代码如下: else if (uartHandle->Instance == USART3) { /* USER CODE BEGIN USART3_MspInit 0 */ /* USER CODE END USART3_MspInit 0 */ /* USART3 clock enable */ __HAL_RCC_USART3_CLK_ENABLE(); // __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_AFIO_REMAP_USART3_PARTIAL(); // GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE); // 将USART 3 更换到PC10,PC11 默认是PB10,PB11 /**USART3 GPIO Configuration PB10 ------> USART3_TX PB11 ------> USART3_RX */ GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; // HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* USART3 interrupt Init */ HAL_NVIC_SetPriority(USART3_IRQn, 5, 0); HAL_NVIC_EnableIRQ(USART3_IRQn); /* USER CODE BEGIN USART3_MspInit 1 */ /* USER CODE END USART3_MspInit 1 */ } 重点总结一下重__HAL_AFIO_REMAP_USART3_PARTIAL(),因为之前一直是用的标准库,用的GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);函数,发现在编译不过,发现rt-thread 用的HAL 库, 所以在HAL 库中找看有没有重映射的接口,先是找到的是找到sm32f1xx_hal.conf.h 里#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Msk /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ 以为这个就是的,修改后发现没有用。后来又找到stm32f1xx_hal_gpio_ex.h里发现这里面才是的: /** * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. * @note PARTIAL: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) * @retval None */ #define __HAL_AFIO_REMAP_USART3_PARTIAL() do{ CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_USART3_REMAP); \ SET_BIT(AFIO->MAPR, AFIO_MAPR_USART3_REMAP_PARTIALREMAP); \ }while(0U) 修改后测试有数据输出!
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
5.3k
关于作者
tcsun
这家伙很懒,什么也没写!
提问
19
回答
62
被采纳
0
关注TA
发私信
相关问题
1
rt thread 2.0.2 usart 接收缓存问题
2
关于STM32串口通信的问题
3
STM32F1+RTT串口接收终端数据丢失问题
4
UART TX丢数据?
5
RTT打开串口的时候如何自定义波特率呢?
6
STM32F4的USART数据接收问题
7
串口1234使用问题
8
串口接收回调函数
9
LPC18xx UART问题讨论
10
x1000串口配置的失败问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
FRDM-MCXN947开发板之i2c应用
2
esp32 s3使用cherryusb cdc
3
【Vision Board 创客营】Vision Board上的DAC实践
4
【Vision Board创客营连载体验】RA8D1 Vision Board 实现 FAL 同时调用片上以及外挂 Flash
5
NXP MCXN947开箱照
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
PWM
潘多拉开发板_Pandora
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
18
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
踩姑娘的小蘑菇
15
个答案
2
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
2
篇文章
6
次点赞
Z_Y
2
篇文章
5
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
Alipay
2
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部