野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9982|回复: 1

串口通信的疑问

[复制链接]
发表于 2019-3-18 00:44:37 | 显示全部楼层 |阅读模式
看视频教程的代码
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 );
}

然后在main函数中调用                Usart_SendStr(DEBUG_USARTx, "你");可以正常输出 你;

视频代码

视频代码


用单独的一个去传送就会变成乱码
void Usart_SendStr1(USART_TypeDef* pUSARTx, uint8_t *ch)
{

        Usart_SendByte(pUSARTx, *(ch));
        while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET );
}

单独传送

单独传送





还有putc已经重编写了,直接用的范例里的代码,stdio.h也包含了,但是printf()就是没反应,我单独编译范例的工程就有反应,是哪里的问题
int fputc(int ch, FILE *f)
{
                /* 发送一个字节数据到串口 */
                USART_SendData(DEBUG_USARTx, (uint8_t) ch);
               
                /* 等待发送完毕 */
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);               
       
                return (ch);
}
学艺不精,求教啊。。。。。。。。。。。。。
回复

使用道具 举报

发表于 2019-3-18 16:32:39 | 显示全部楼层
因为中文是两个字节的,调用Usart_SendStr会发送多个字节
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-8 10:59 , Processed in 0.030017 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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