我是STM32新手,我使用STM32L476,我使用CubeIDE编写了一个UART通信,并且我尝试使用反向传输,因此MSB将是第一个,而不是默认约定是LSB优先。我按如下方式配置了UART:
static void UART_Init(void)
{
/* Peripheral clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
huart1.Instance = USART1;
huart1.Init.BaudRate = 9600;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.Parity = UART_PARITY_EVEN;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.AdvancedInit.MSBFirst = UART_ADVFEATURE_MSBFIRST_ENABLE;
huart1.AdvancedInit.DataInvert = UART_ADVFEATURE_DATAINV_ENABLE;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
while(1);
}
}我使用了作用域,并看到数据是以直接约定传输的(LSB优先)。
有人能帮我解决这个问题吗?
提前谢谢。
发布于 2021-11-24 10:59:05
为了解决这个问题,我们需要添加以下l行:
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_MSBFIRST_INIT;不需要这行代码:
huart1.AdvancedInit.DataInvert = UART_ADVFEATURE_DATAINV_ENABLE;没有它它也能正常工作。
https://stackoverflow.com/questions/70093631
复制相似问题