打印

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

[复制链接]
870|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是跟着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

粉丝