文章背景:前段时间使用公司的老产品(STM32F413芯片)时发现一个bug,串口配置为波特率115200,数据位8位,停止位1位,偶校验时,出产生乱码的现象,但是在新产品(HC32F4A0芯片)上没有这个问题,由于之前都是用的无校验的,所以并没有暴露这个bug,于是决定好好看一看用户手册,结果一看就发现了不一样。
上图是STM32F413芯片用户手册“28.4.1 USART字符说明”章节中截取的图片,从图中可以看出,在8位字长的情况下,最后一位为“可能的奇偶校验位”,意思就是说STM32F413芯片中奇偶校验位是包含在数据位字长中的,所以在选择了偶校验的情况下会出现乱码,这个时候只要把数据位改为9位即可。
上图是HC32F4A0芯片用户手册“29.4.1.2 数据格式”章节中截取的图片,从图中可以看出HC32F4A0数据位和校验位是分开的,所以选择奇偶校验不影响数据的正确性。
仅在此写篇文章记录下这个问题,希望能对后续的人有所帮助。