Toggle navigation
首页
问答
文章
话题
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
STM32H7
LPUART
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
发布于 2020-06-15 22:46:45 浏览:1306
* 本帖最后由 Jone 于 2020-6-15 22:56 编辑 * 记录一下开启`低功耗串口lpuart1`的问题点和临时解决办法,希望官方早日修复 # 问题现象: 使用rtt studio基于芯片创建了stm32h750的基础工程,log串口选用的LPUART1(tx:PB6/rx:PB7) 编译下载后程序可以运行,但无log输出,硬件上`串口指示灯变常亮`。 # 问题原因: ## 1. 缺少LPUART1定义 这个问题在编译时就会报错,在`uart_config.h`文件末尾仿造其他串口增加配置即可 ``` #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(第三点问题的时候用到),增加如下两行: ``` { .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 ``` /* 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
This guy hasn't written anything yet
看了你的描述,很有收益,的确软件需要使用中才能不断完善。如果能把每个文件中的函数注解包括每个函数的功能和跳转的指向说明的更清楚点,这样给后续的运用可以减少很多的麻烦。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
Jone
写了还是懒
提问
30
回答
282
被采纳
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新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
国产MCU移植系列教程汇总,欢迎查看!
最新文章
1
发现了1款好用的VSCODE插件,画时序图很方便。(WaveDrom)
2
如何解决 Studio V2.2.4 扫码登录问题
3
【GCC编译优化系列】另类的链接报错undefined reference to
4
ART-Pi Smart初体验
5
RT-Thread Studio V2.2.4 Release Note
热门标签
RT-Thread Studio
串口
LWIP
AT
FinSH
ART-Pi
Env
SPI
Bootloader
USB
Hardfault
CAN
文件系统
DMA
studio
RT-Thread
线程
Nano
stm32
ota
MQTT
SCons
ESP8266
rtthread
freemodbus
软件包
I2C
UART
flash
RTC
cubemx
定时器
W5500
FAL
BSP
rt-smart
rtt
PWM
AB32VG1
ADC
编译报错
msh
socket
SDIO
C++
dfs
at_device
SFUD
MicroPython
RT-Studio
本月问答贡献
小小李sunny
43
个答案
10
次被采纳
出出啊
34
个答案
10
次被采纳
crystal266
31
个答案
8
次被采纳
红枫
27
个答案
7
次被采纳
lchnu
16
个答案
7
次被采纳
本月文章贡献
张世争
11
篇文章
31
次点赞
吉利咕噜2022
7
篇文章
15
次点赞
xusiwei1236
3
篇文章
12
次点赞
crystal266
3
篇文章
8
次点赞
Liutao
3
篇文章
4
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部