
用STM32CubeMX生成STM32mp135D的USART1,2,3,6代码初始化是空的,参考其他代码做了初始化操作,可以通过HAL_USART_Transmit接口发送数据,但是调用HAL_USART_Receive_IT接口无法触发中断。请问下STM32MP135的HAL库中,USART的部分代码是不是有缺陷,不能使用? |
添加PWM,板卡无设备
STM32MP257 可以用FIT启动CM33吗
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
使用STM32L451CEU6型号的芯片,在用usart(PA9、PA10)进行串口通信时,发送0x55在PC端可以收到正确的数据,但是发送0x80会收到0x00的数据,发送0x01会收到0x7F的数据,串口助手的配置和CubeMX上的配置参数是一样的(都是115200,8N1),请问各位这个是什么原因呀?
STM32H7,0x00000000地址的内容引发hardfault
使用HAL_UARTEx_RxEventCallback实现的uart数据接收不会被清理,一直累加
stm32mp135 使用官方SDK交叉编译工具链,但是编译的时候却找不到头文件,这怎么解决?
STM32MP13 操作 DDR 过慢的问题
STM32 Bootloader提问
DMA发送函数只能被调用一次
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模式。
我开始也怀疑是版本问题,都已经升级到最新的版本了还是一样的,现在发现就是跟slave模式相关,
[md]我读取了uart4和usart3的CR寄存器,发现基本一致的,只是uart4开启了dma接收,usart3暂时只配置了中断接收
唯一不同的是USART_HWCFGR2寄存器,这个寄存器是只读的
而这一位是跟slave模式相关的,我在uboot中读不同串口的这个寄存器,就发现UARTx的是0x04, 而USARTx的是0x14,或者0x00(没有初始化的缘故).