你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CubeMX生成STM32mp135D的USART1,2,3,6代码初始化是空的

[复制链接]
hua_prince 提问时间:2025-2-12 11:05 / 未解决

用STM32CubeMX生成STM32mp135D的USART1,2,3,6代码初始化是空的,参考其他代码做了初始化操作,可以通过HAL_USART_Transmit接口发送数据,但是调用HAL_USART_Receive_IT接口无法触发中断。请问下STM32MP135的HAL库中,USART的部分代码是不是有缺陷,不能使用?

image.png

收藏 评论5 发布时间:2025-2-12 11:05

举报

5个回答
y369369 回答时间:2025-2-12 17:06:40
应该是能用的吧,你用的版本对的上不
hua_prince 回答时间:2025-2-13 09:05:02
对比了一下USART3和UART4的CR1,CR2,CR3寄存器,基本一致
uart4(基址0x40010000): 使用了dma接收

sh />reg_read 0x40010000
0x0000001d  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  0  1
sh />reg_read 0x40010004
0x00000000  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
sh />reg_read 0x40010008
0x00000041  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1
usart3(基址0x4000f000): 只配置了中断功能

sh />reg_read 0x4000f000
0x0000003d  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  0  1
sh />reg_read 0x4000f004
0x00000000  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
sh />reg_read 0x4000f008
0x00000001  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1


看手册发现usart和uart比较大的差异就是只是slave模式,
于是查看了下uart4和usart3的配置,发现USART_HWCFGR2的配置不一致,uart4是0x04, 而usart3是0x14,手册中说默认值应该是0x14,我在uboot中,读取了其他uart(未使用),默认值都是0x04。

sh />reg_read 0x4000f3ec
0x00000014  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0
sh />reg_read 0x400103ec  
0x00000004  
BIT:     31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
REG:      0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0


对比了这一位正好是slave模式的定义,但是该寄存器是只读的,手册中没有明确CFG2各种状态下,对应的含义。
Bits 7:4 CFG2[3:0]: USART hardware configuration 2
CFG2[3:0] = SPI_SLAVE

现在就不知道怎么才能将这一位变成0,不使用slave模式。














hua_prince 回答时间:2025-2-13 09:07:19

y369369 发表于 2025-2-12 17:06
应该是能用的吧,你用的版本对的上不

我开始也怀疑是版本问题,都已经升级到最新的版本了还是一样的,现在发现就是跟slave模式相关,

image.png

hua_prince 回答时间:2025-2-13 09:16:29

hua_prince 发表于 2025-2-13 09:07
我开始也怀疑是版本问题,都已经升级到最新的版本了还是一样的,现在发现就是跟slave模式相关,</p>
<p>![i ...

[md]我读取了uart4和usart3的CR寄存器,发现基本一致的,只是uart4开启了dma接收,usart3暂时只配置了中断接收

image.png

image.png

唯一不同的是USART_HWCFGR2寄存器,这个寄存器是只读的

image.png

而这一位是跟slave模式相关的,我在uboot中读不同串口的这个寄存器,就发现UARTx的是0x04, 而USARTx的是0x14,或者0x00(没有初始化的缘故).

image.png

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版