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

[复制链接]
1148|2
 楼主| 怎么叫都可以 发表于 2020-4-2 11:49 | 显示全部楼层 |阅读模式
我是跟着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 );
}
ayb_ice 发表于 2020-4-3 09:29 | 显示全部楼层
看看接收的实际数据(HEX格式)不就知道了

,多半是接收错了,

有可能是波特率不准造成的
YDCMAN 发表于 2020-4-22 21:40 | 显示全部楼层
中文要发汉字内码,一个汉字两个字节
您需要登录后才可以回帖 登录 | 注册

本版积分规则

457

主题

483

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部