STM32
直播中

李丽华

7年用户 1400经验值
私信 关注
[问答]

如何解决STM32串口modbus协议中波特率修改问题?

如何解决STM32串口modbus协议中波特率修改问题?

回帖(1)

李允麒

2021-12-15 10:34:22
3.5个字符间隔表示一帧数据结束
  使用CUBE LL库出现再次初始化波特率不能修改问题,直接操作底层brr寄存器

     uint32_t boaud;
    uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO;
    LL_RCC_ClocksTypeDef rcc_clocks;
    LL_RCC_GetSystemClocksFreq(&rcc_clocks);
    periphclk = rcc_clocks.PCLK2_Frequency;
    LL_USART_SetBaudRate(USART1,periphclk,boaud);
    if((boaud = LL_USART_GetBaudRate(USART1, periphclk)) == boaud)
        HAL_GPIO_TogglePin (LED1_GPIO_Port ,LED1_Pin);

/*  参考来自于LL库底层代码    */
/*  一定要注意3.5个字符时间间隔,如果不是随着波特率变化而更新,。则可能修改波特率时  ,波特率太小时间间隔出错*/
举报

更多回帖

发帖
×
20
完善资料,
赚取积分