初始化USART中调用HAL_USART_Receive_IT(&USART1_Handle, rxBufIT, 1)开启接收中断,然后程序一运行到这个函数后,就会在串口助手接收到个0xFF。后面进入这个函数发现有一句: /* Send dummy byte in order to generate the clock for the slave to send data */ husart->Instance->DR = (DUMMY_DATA & (uint16_t)0x01FFU); //#define DUMMY_DATA 0xFFFFU 是的,这个0xFF果然是HAL库发出来的。 如果调用HAL_USART_Receive_IT(&USART1_Handle, rxBufIT, 10),那么中断中也会通过USART_Receive_IT()同样发出10个0xFF。 然后在HAL_USART_RxCpltCallback()中会接收到0x7F(不知从何而来),调用HAL_USART_Transmit()发送,函数返回HAL_OK,但是串口助手收不到任何数据。 请问HAL库中为什么要专门发0XFF?是BUG吗?又不走同步模式,产生时钟干什么? |
STM32F407 USB怎么测试接口的极限速度
大佬们,请教有关串口通信问题
STM32F407ZGT6物料表面丝印问题
stm32f407进入boot里,通过DFU更新程序,没有识别到usb设备
STM32F4作为SPI从机,主机发送完数据后,从机没有正确进入中断
stm32cubeide如何修改芯片型号和启动文件
CDC_Transmit_HS 卡死
修改stm32f407 tim14的ccr1,但是占空比不变?
修改stm32f407 tim14的ccr1,但是占空比不变
STM32IDE工程内如何访问、计算得到当前程序flash已经使用的情况?
中断
接收回调
评分
查看全部评分
哦,虽然外设用的USART,但好像是要调用HAL_UART的APIs进行异步通讯,而不是HAL_USART的APIs,我以为USART不涉及到同步时钟过程就会和UART一样。
感谢提供思路,下周试试。
我是想USART1当普通调试口用,结果用的HAL_USART相关的APIs,其实应该用HAL_UART的APIs。看了下USART和UART内部HAL库的实现,确实USART内部会多发个时钟同步信号(FF)。