OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2220|回复: 2

stm32串口通信的问题

[复制链接]

19

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-6-22
在线时间
21 小时
发表于 2018-9-9 22:20:49 | 显示全部楼层 |阅读模式
10金钱
# include <usart.h>
# include <delay.h>
# include <sys.h>
u16 res;
int main (void)
{
        uart_init (115200);               
        while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET)        ;
        res=USART_ReceiveData(USART1);         
        USART_SendData(USART1, res);
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);

}
这个为什么定义为u16 res却只能输出一个字符?而原子哥的教程上是u8  Res;却可以输出那么多字


# include <usart.h>
# include <delay.h>
# include <sys.h>
u16 res;
int main (void)
{
        while (1)
        {
        uart_init (115200);               
        while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);
        res=USART_ReceiveData(USART1);         
        USART_SendData(USART1, res);
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
   }
}

这个程序在外部加了while(1)循环,这和上一个不加的有什么区别吗,我加了循环后原来只可以输出12而现在可以输出123这是为什么啊

最佳答案

查看完整内容[请看2#楼]

加while就是重复收发的动作, 不加就只做一次, 而且你要在main函数的最后面加个while(1);不让它退出, 规则会跑飞 要是加while, 要把 uart_init (115200); while前面, uart_init (115200); while (1) { USART是可以设置为多于8bit, 所以函数的返回值是u16, 读回来后你只用8位就行了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-9 22:20:50 | 显示全部楼层

加while就是重复收发的动作, 不加就只做一次, 而且你要在main函数的最后面加个while(1);不让它退出, 规则会跑飞

要是加while, 要把   uart_init (115200);   while前面,
    uart_init (115200);  
    while (1)
    {

USART是可以设置为多于8bit, 所以函数的返回值是u16, 读回来后你只用8位就行了
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-9-10 12:28:11 | 显示全部楼层
USART是可以设置为多于8bit, 所以函数的返回值是u16, 读回来后你只用8位就行了
这句话你可以举个例子说下哈!更能简单易懂
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 00:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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