首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逆向约定STM32

逆向约定STM32
EN

Stack Overflow用户
提问于 2021-11-24 09:31:00
回答 1查看 30关注 0票数 0

我是STM32新手,我使用STM32L476,我使用CubeIDE编写了一个UART通信,并且我尝试使用反向传输,因此MSB将是第一个,而不是默认约定是LSB优先。我按如下方式配置了UART:

代码语言:javascript
复制
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优先)。

有人能帮我解决这个问题吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 10:59:05

为了解决这个问题,我们需要添加以下l行:

代码语言:javascript
复制
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_MSBFIRST_INIT;

不需要这行代码:

代码语言:javascript
复制
huart1.AdvancedInit.DataInvert = UART_ADVFEATURE_DATAINV_ENABLE;

没有它它也能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70093631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档