ZhouJun_BUAA 发表于 2021-10-4 22:03:47

串口校验位只能设置为None,设置为Odd时会乱码?

在安富莱的FreeRTOS的V4开发板的例程里,将串口配置为校验位为Odd,再将串口调试助手同步为Odd,串口助手上收到的打印数据为乱码。Even也一样是乱码。只能将此校验位设置为None,才可以正常打印数据。
调试了多个工程文件,都是一样的现象,不清楚该怎么解决了?
        /* 第4步: 配置串口硬件参数 */
        USART_InitStructure.USART_BaudRate = UART1_BAUD;        /* 波特率 */
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No ;
        //USART_InitStructure.USART_Parity = USART_Parity_Odd ;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(USART1, &USART_InitStructure);



eric2013 发表于 2021-10-4 23:01:03

这个应该是你的测试环境有bug或者配置不对,看下是不是串口线不行,还是串口软件不行,还是你的板子不行,数据长度配置的多少,我现在手头没有V4板子了,帮你测试下V5的。

      USART_InitStructure.USART_BaudRate = UART1_BAUD;      /* 波特率 */
      USART_InitStructure.USART_WordLength = USART_WordLength_9b;
      USART_InitStructure.USART_StopBits = USART_StopBits_1;
      USART_InitStructure.USART_Parity = USART_Parity_Odd ;
      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
      USART_Init(USART1, &USART_InitStructure);


你修改为USART_WordLength_9b应该可以解决,试试。



eric2013 发表于 2021-10-4 23:20:17


www2205290064 发表于 2021-10-5 06:54:48

eric2013 发表于 2021-10-4 23:20


白工, H7-TOOL 功能越来越完善。对于串口打印,请问你现在是一直用 H7-TOOL 吗,还是继续在用 SecureCRT。

eric2013 发表于 2021-10-5 10:05:14

www2205290064 发表于 2021-10-5 06:54
白工, H7-TOOL 功能越来越完善。对于串口打印,请问你现在是一直用 H7-TOOL 吗,还是继续在用 SecureCRT ...
现在只用TOOL,从今年年初开启已经全面转战TOOL,当前所有教程制作的贴图也是全部是TOOL的了。

ZhouJun_BUAA 发表于 2023-11-29 14:01:48

eric2013 发表于 2021-10-4 23:20


数据位数改为9后,问题解决了,谢谢白工啦
页: [1]
查看完整版本: 串口校验位只能设置为None,设置为Odd时会乱码?