Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
STM32H7
LPUART
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
发布于 2020-06-15 22:46:45 浏览:2508
订阅该版
[tocm] 记录一下开启`低功耗串口lpuart1`的问题点和临时解决办法,希望官方早日修复 # 问题现象: 使用rtt studio基于芯片创建了stm32h750的基础工程,log串口选用的`LPUART1(tx:PB6/rx:PB7)` 编译下载后程序可以运行,但无log输出,硬件上`串口指示灯变常亮`。 # 问题原因: ## 1. 缺少LPUART1定义 这个问题在编译时就会报错,在`uart_config.h`文件末尾仿造其他串口增加配置即可 ```c #if defined(BSP_USING_LPUART1) #ifndef LPUART1_CONFIG #define LPUART1_CONFIG \ { \ .name = "lpuart1", \ .Instance = LPUART1, \ .irq_type = LPUART1_IRQn, \ .tx_pin_name = BSP_LPUART1_TX_PIN, \ .rx_pin_name = BSP_LPUART1_RX_PIN, \ } #endif /* LPUART1_CONFIG */ #if defined(BSP_LPUART1_RX_USING_DMA) #ifndef LPUART1_DMA_RX_CONFIG #define LPUART1_DMA_RX_CONFIG \ { \ .Instance = LPUART1_RX_DMA_INSTANCE, \ .channel = LPUART1_RX_DMA_CHANNEL, \ .dma_rcc = LPUART1_RX_DMA_RCC, \ .dma_irq = LPUART1_RX_DMA_IRQ, \ } #endif /* LPUART1_DMA_RX_CONFIG */ #endif /* BSP_LPUART1_RX_USING_DMA */ #if defined(BSP_LPUART1_TX_USING_DMA) #ifndef LPUART1_DMA_TX_CONFIG #define LPUART1_DMA_TX_CONFIG \ { \ .Instance = LPUART1_TX_DMA_INSTANCE, \ .channel = LPUART1_TX_DMA_CHANNEL, \ .dma_rcc = LPUART1_TX_DMA_RCC, \ .dma_irq = LPUART1_TX_DMA_IRQ, \ } #endif /* LPUART1_DMA_TX_CONFIG */ #endif /* BSP_LPUART1_TX_USING_DMA */ #endif /* BSP_USING_LPUART1 */ ``` ## 2. 缺少LPUART1对应的引脚定义 ```c static const struct gpio_uart_af uart_afs[] = { { .pin_index = GET_PIN(A, 0), .afs[0] = {.uart_num = UART_IS_TX|4, .af_num = 8}}, { .pin_index = GET_PIN(A, 1), .afs[0] = {.uart_num = UART_IS_RX|4, .af_num = 8}}, ... } ``` 上述代码是`drv_usart.c`中的`stm32_gpio_configure()`函数里的数组`uart_afs`的一部分片段。 第一行元素中`.uart_num = UART_IS_TX|4`表示引脚作为UART4的TX引脚,`af_num = 8`引脚复用号 同理,第二行是将PA1作为UART4的RX引脚,复用号也是8 然而`uart_afs`中无对LPUART的`uart_num`定义,我用的是B6和B7(AF8),把LPUART编号为9(第三点问题的时候用到),增加如下两行: ```c { .pin_index = GET_PIN(B, 6), .afs[0] = {.uart_num = UART_IS_TX|9, .af_num = 8}}, { .pin_index = GET_PIN(B, 7), .afs[0] = {.uart_num = UART_IS_RX|9, .af_num = 8}}, ``` ## 3. 当前串口号定义判断不合理 问题还在`stm32_gpio_configure()`尾部。正常来讲1~8号串口的命名为`uartx`,rtt通过串口名字的第4字节来计算串口号,这样对于低功耗串口`lpuart1`的计算就会出现偏差,我增加了一下判断,当`uart_num`大于8的时候就赋值为9 ```c /* get tx/rx pin index */ uart_num = config->name[4] - '0'; /* add by jone */ if(uart_num > 8) { uart_num = 9; } ```
查看更多
1
个回答
默认排序
按发布时间排序
cxhxy12345
2021-05-04
这家伙很懒,什么也没写!
看了你的描述,很有收益,的确软件需要使用中才能不断完善。如果能把每个文件中的函数注解包括每个函数的功能和跳转的指向说明的更清楚点,这样给后续的运用可以减少很多的麻烦。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.5k
关于作者
Jone
写了还是懒
提问
30
回答
292
被采纳
46
关注TA
发私信
相关问题
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
Keil MDK 移植 RT-Thread Nano
4
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
5
RT thread HID 如何收发数据
6
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
7
RT-Thread修改项目名称之后不能下载
8
rt-studio编译c++
9
有木有移植rt-thread(nano)到riscv 32位MCU上
10
RT-Thread Studio 单步调试BUG
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
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
【RT-Thread】记录一次对主仓的bsp进行修复并提交pr的总结
2
【请投票】嵌入式大赛Top10排名等你来选!
3
【24嵌入式设计大赛】HPM5300-EVK 网络测速仪
4
RT-Thread Nano 上线ST CubeMX
5
Nordic移植笔记: RT_Thread v5.1.0(基于Nordic nRF52840的ble_app_hids_mouse工程)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
socket
flashDB
中断
Debug
GD32
编译报错
msh
keil_MDK
C++_cpp
rt_mq_消息队列_msg_queue
ulog
at_device
SFUD
本月问答贡献
出出啊
1515
个答案
342
次被采纳
小小李sunny
1438
个答案
289
次被采纳
张世争
785
个答案
168
次被采纳
crystal266
546
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
6
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部