21ic电子技术开发论坛

标题: 奇偶校验的异步串口通信例程 [打印本页]

作者: llljh    时间: 2022-5-14 22:43
标题: 奇偶校验的异步串口通信例程
有关于STM32F0系列的奇偶校验的异步串口通信的例程吗?

作者: wyjie    时间: 2022-5-14 22:47
官方的模块

作者: llljh    时间: 2022-5-14 22:49
官方的模块看到的都是无校验模板,希望大侠们给予帮助指导。

作者: zhenykun    时间: 2022-5-14 22:54
没有就自己写啊,坚决不当 拿来主义

作者: dingy    时间: 2022-5-14 22:56

奇偶校验, 这个算法其实非常简单.
这个函数也就四行代码就搞定

作者: llljh    时间: 2022-5-14 22:58
楼上你写写测试一下,好像上位机收到的奇偶校验的数是不正确的。

作者: dengdc    时间: 2022-5-14 23:03
说方法不给结果: 你拿示波器量一下你从MCU端发出的一个字符,看看第 10 bit是不是奇偶校验对应的电平(前提是你的串口配置了奇校验还是偶校验),如果没问题的话,量一下波特率是不是对的,如果都没问题的话,你懂得

作者: zwll    时间: 2022-5-14 23:05
谢谢楼上的提醒,其实STM32F系列要发送奇偶校验位的时候,必须UART_WORDLENGTH_9B设置为9位,不然上位机就不会得到想要的值。

作者: llljh    时间: 2022-5-14 23:08

void MX_USART1_UART_Init(void)
{
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 9600;
  huart1.Init.WordLength = UART_WORDLENGTH_9B;  //UART_WORDLENGTH_8B UART_WORDLENGTH_9B
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_EVEN;    //UART_PARITY_EVEN UART_PARITY_NONE
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_DMADISABLEONERROR_INIT;
  huart1.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

作者: zhaoxqi    时间: 2022-5-14 23:11
关他设置几位,借用小平同志的一句话,实践才是检验真理的唯一标准

作者: llljh    时间: 2022-5-14 23:13
本帖最后由 llljh 于 2022-5-14 23:16 编辑

还有人知道吗

作者: dingy    时间: 2022-5-14 23:16
关他设置几位,借用小#平同志的一句话,实践才是检验真理的唯一标准

作者: llljh    时间: 2022-5-14 23:18
嗯,预料中的结果,多谢大家啦





欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)