|
用STM32CubeMX生成STM32mp135D的USART1,2,3,6代码初始化是空的,参考其他代码做了初始化操作,可以通过HAL_USART_Transmit接口发送数据,但是调用HAL_USART_Receive_IT接口无法触发中断。请问下STM32MP135的HAL库中,USART的部分代码是不是有缺陷,不能使用?
|
STM32MP135F OTP读写异常
STM32CUBE programmer 软件出错
ECK10-135A5M5M-I的开发板,烧录官方提供的nandflash镜像,结果起不来
STM32H523CEU6的Pin41和Pin42能否作为USART6使用?
stm32mp157 通过codesys 运行PLC程序
[SD卡]关于SD卡升级的地址一致性
STM32MP157DAA1进行异核通信时配置初始化 函数无法进入
STM32u575 USART 用GPDMA接收,DMA中断,usart 中断正常来,ROR数据正确,接收缓冲却不变
请教STM32F103的DMA空闲接收问题
STM32G030F6串口空闲中断配置卡死
微信公众号
手机版
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(没有初始化的缘故).