Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
STM32H7
LPUART
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
1.00
发布于 2020-06-15 22:46:45 浏览:3252
订阅该版
[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; } ```
查看更多
2
个回答
默认排序
按发布时间排序
cxhxy12345
2021-05-04
这家伙很懒,什么也没写!
看了你的描述,很有收益,的确软件需要使用中才能不断完善。如果能把每个文件中的函数注解包括每个函数的功能和跳转的指向说明的更清楚点,这样给后续的运用可以减少很多的麻烦。
龙行达达
2025-03-20
这家伙很懒,什么也没写!
解决问题了,感谢博主分享
撰写答案
登录
注册新账号
关注者
0
被浏览
3.3k
关于作者
Jone
写了还是懒
提问
31
回答
299
被采纳
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
【最新活动】RT-Thread论坛活动正在进行(2026年5月活动已更新)
4
国产MCU移植系列教程汇总,欢迎查看!
5
机器人操作系统 (ROS2) 和 RT-Thread 通信
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
五分钟玩转RT-Thread新社区
8
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
9
STM32的“GPU”——DMA2D实例详解
10
RT-Thread隐藏的宝藏之completion
最新文章
1
【RSOC26】第二天学习记录:内核与多线程培训
2
【RSOC26】从启动流程到多线程:RT-Thread 内核学习笔记
3
【RSOC26】第二天学习记录:RT-Thread 启动流程与多线程编程
4
【RSOC26】内核与多线程
5
【RSOC26】动态线程和静态线程的区别
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
RT-Thread
SCons
文件系统
RT-Thread Nano
线程
MQTT
STM32
FAL
rt-smart
BSP
cubemx
RTC
WIZnet_W5500
PWM
I2C_IIC
UART
packages_软件包
GD32
ota在线升级
ESP8266
freemodbus
flash
keil_MDK
编译报错
ADC
潘多拉开发板_Pandora
flashDB
Debug
ulog
msh
rt_mq_消息队列_msg_queue
socket
MicroPython
SDIO总线
中断
SFUD
QEMU
本月问答贡献
crystal266
3
个答案
1
次被采纳
CYFS
3
个答案
1
次被采纳
oxlm
1
个答案
1
次被采纳
王棒棒
1
个答案
1
次被采纳
wdfk_prog
1
个答案
1
次被采纳
本月文章贡献
Ewan11111
3
篇文章
1
次点赞
金阳阳
2
篇文章
1
次点赞
longtsing
1
篇文章
4
次点赞
RTT_Studio
1
篇文章
4
次点赞
枫雪天
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部