野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16583|回复: 5

指南者F103串行通信中发送字符串时,发送中文会显示乱码,英文数字则不会,求解

[复制链接]
发表于 2020-3-13 23:34:00 | 显示全部楼层 |阅读模式
我是跟着B站野火的视频编程的,前面的发送一个字节两个字节和8位数据的数组都没问题,然后到发送字符串的函数,发送中文,在调试助手那里显示的就是乱码了
也在网上看过一些解决方法,说改HSE时钟还有的是改倍频因子的,都不行,求解求解


主函数:
#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "bsp_usart.h"
#include "bsp_led.h"


int main(void)
{
        // 来到这里的时候,系统的时钟已经被配置成72M。
        uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};
        USART_Config();
       
        //Usart_SendByte(DEBUG_USARTx,'A');
        //Usart_SendHalfWord(DEBUG_USARTx,0xff56);
        //Usart_SendArray(DEBUG_USARTx,a,10);
        Usart_SendStr(DEBUG_USARTx,"一二三");
       
        while(1);
}


发送字符串函数:
/*        发送字符串        */
void Usart_SendStr(USART_TypeDef* pUSARTx,uint8_t *str)
{
        uint8_t i=0;
        do
        {
                Usart_SendByte(pUSARTx,*(str+i));
                i++;
        }while( *(str+i) != '\0' );
       
        while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET );
}


微信图片_20200313223210.png 微信图片_20200313223234.png
回复

使用道具 举报

 楼主| 发表于 2020-3-14 14:06:31 | 显示全部楼层
顶一顶顶一顶顶一顶顶一顶
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 14:07:01 | 显示全部楼层
有大佬吗有大佬吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 14:26:43 | 显示全部楼层
写到后面的printf函数的时候依然是发送中文显示的乱码,英文数字显示的就没问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 14:36:43 | 显示全部楼层
问题解决了,原来要改main.c的编码改成ANSI编码,可能是默认的对中文不解析?
链接:https://blog.csdn.net/easylovecs ... _relevant.none-tasktribute.pc_relevant.none-task
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-14 14:44:44 | 显示全部楼层
问题解决了,是要改main.c的编码,用记事本打开main.c然后另存为,下面有个编码,改成ANSI,另存为覆盖原来的文件就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 22:07 , Processed in 0.033642 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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