打印
[STM32F0]

奇偶校验的异步串口通信例程

[复制链接]
271|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
没有就自己写啊,坚决不当 拿来主义

使用特权

评论回复
5
dingy| | 2022-5-14 22:56 | 只看该作者

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

使用特权

评论回复
6
llljh|  楼主 | 2022-5-14 22:58 | 只看该作者
楼上你写写测试一下,好像上位机收到的奇偶校验的数是不正确的。

使用特权

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

使用特权

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

使用特权

评论回复
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__);
  }

}

使用特权

评论回复
10
zhaoxqi| | 2022-5-14 23:11 | 只看该作者
关他设置几位,借用小平同志的一句话,实践才是检验真理的唯一标准

使用特权

评论回复
11
llljh|  楼主 | 2022-5-14 23:13 | 只看该作者
本帖最后由 llljh 于 2022-5-14 23:16 编辑

还有人知道吗

使用特权

评论回复
12
dingy| | 2022-5-14 23:16 | 只看该作者
关他设置几位,借用小#平同志的一句话,实践才是检验真理的唯一标准

使用特权

评论回复
13
llljh|  楼主 | 2022-5-14 23:18 | 只看该作者
嗯,预料中的结果,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

粉丝