找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2296|回复: 2
收起左侧

stm32串口发送中文乱码,发送英文和字数正常,麻烦各位大佬指点一下

[复制链接]
ID:751817 发表于 2020-7-19 11:08 | 显示全部楼层 |阅读模式
static void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch )
{

        USART_SendData(pUSARTx,ch);
               
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);        
}

void Usart_SendStr_length( USART_TypeDef * pUSARTx, uint8_t *str,uint32_t strlen )
{
        unsigned int k=0;
    do
    {
        Usart_SendByte( pUSARTx, *(str + k) );
        k++;
    } while(k < strlen);
}



void Usart_SendString( USART_TypeDef * pUSARTx, uint8_t *str)
{
        unsigned int k=0;
    do
    {
        Usart_SendByte( pUSARTx, *(str + k) );
        k++;
    } while(*(str + k)!='\0');
}

回复

使用道具 举报

ID:362076 发表于 2020-7-19 22:58 | 显示全部楼层
因为中文的字符编码是多字节的,一个中文字符编译到程序里是以多个字节呈现的,而发送和接收都是一个字节一个字节来的,所以接收端按字节解析字符就会出现“乱码”的情况。
回复

使用道具 举报

ID:801957 发表于 2020-7-20 00:05 | 显示全部楼层
因为中文的编码比英文的更复杂,有多个字节,一个一个显示看起来就比较乱
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表