OpenEdv-开源电子网

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

usart中的这段代码如果不注释掉就会导致串口一直重复发送数据

[复制链接]

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
发表于 2019-9-18 21:05:04 | 显示全部楼层 |阅读模式
1金钱

#if 1
#pragma import(__use_no_semihosting)            

struct __FILE
{         int handle;
};
FILE __stdout;      

_sys_exit(int x)
{
        x = x;
}
//ÖØ¶¨òåfputcoˉêy
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);
    USART1->DR = (u8) ch;      
        return ch;
}
#endif



这是我的主函数部分关于发送数据的部分其他的跟原子例程一样
        data='A';
         for(i=0;i<5;i++)
         {
         USART_SendData(USART1,data);
                 delay_ms(10);
                 delay_ms(1000);
               
                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
                 data++;
         }
         
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-18 21:13:53 | 显示全部楼层
C:\Users\Administrator\Desktop
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2019-9-18 22:21:29 | 显示全部楼层
“我的主函数部分关于发送数据的部分”
你说的这段代码在while(1)中吧,那肯定时一直重复发送了
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-9-19 02:56:50 | 显示全部楼层
试试我们例程
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-19 07:46:47 来自手机 | 显示全部楼层
你们例程没有问题,但我想做的就是单方面发送ABCDE到调试助手,但是虚拟和调试的时候都会出现重口重复发送,串口中断时能已经被我关掉了,还是这种情况,那段重定向代码注释了就不会了
回复

使用道具 举报

7

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2016-1-28
在线时间
135 小时
发表于 2019-9-19 10:40:01 | 显示全部楼层
讲了半天了不知道你在说什么。到底指哪段代码。
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-19 11:39:37 来自手机 | 显示全部楼层
就是这段代码用来发送ABCDE到串口对吧,然后发送完就停止了但是实际上他会ABCDE重复发,但是把usart中关于printf重定向的内容注释掉就不会重复发送
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-19 11:42:05 来自手机 | 显示全部楼层
我的主函数也没有调用printf吖
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-19 11:42:46 来自手机 | 显示全部楼层
开头的是usart中的printf重定向
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2019-8-17
在线时间
21 小时
 楼主| 发表于 2019-9-19 12:08:31 来自手机 | 显示全部楼层
szczyb1314 发表于 2019-9-18 22:21
“我的主函数部分关于发送数据的部分”
你说的这段代码在while(1)中吧,那肯定时一直重复发送了

while中不是对状态寄存器标志位的查询嘛,查询到发送完了才继续发送
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 03:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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