我是新人,正在学习核子板
单片机STM32F411RE的UART数据传输。我已阅读并理解函数 HAL_UART_Transmit。但是,在这个函数中,有一部分我不明白。我不明白下面程序的含义:
如果(huart->Init.WordLength ==
UART_WORDLENGTH_9B)
{
如果(UART_WaitOnFlagUn
tilTimeout(huart,UART_FLAG_TXE,
RESET,tickstart,超时)!=
HAL_OK)
{
返回HAL_TIMEOUT;
}
tmp = (uint16_t *) pData;
huart->Instance->DR = (*tmp & (uint16_t)0x01FF);
如果 (huart->Init.Parity == UART_PARITY_NONE)
{
pData += 2U;
}
别的
{
pData += 1U;
}
}
在9-Bit帧模式下,为什么每次从pData指针到DR寄存器赋值后:
- pData += 2U 如果奇偶校验 = PARITY_NONE
- pData += 1U 如果奇偶校验!= PARITY_NONE
据我了解,在:
tmp = (uint16_t *) pData;之后
huart->Instance->DR = (*tmp & (uint16_t)0x01FF);
然后指针会加1,将下一个内存区域分配给DR。那么为什么会出现pData指针增长到2U的情况。如果是这样,是否有可能传输的数据是错误的?
希望大家能够解答。谢谢你。