初始化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吗?又不走同步模式,产生时钟干什么?