OpenEdv-开源电子网

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

STM32单片机发送一串数据帧时,接收完第一个字符时会切换回主程序吗??

[复制链接]

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
发表于 2020-6-5 14:04:34 | 显示全部楼层 |阅读模式
1金钱
比如我要发一帧数据 “11 22 33 44 55 66 77 88”,那STM32是接收一个字节才中断一下,那么接收下一个字符则需要在下一个中断里执行(比如这个接收中断收11,下一个中断收22,依次类推....)。此时假如我的程序只有这个串口接收中断的程序,不考虑被其它更高优先级中断。
此时,我想问的是:STM32收完11后再去收22的这个中间过渡过程还会跳回到main.c主程序里吗?
是不是当接收完11时,程序必须先切换回main函数里,然后再去执行下一个中断?
假如会切换回来。那么这个切换回来的这个过程一般会有多少个机器的延时消耗?

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

使用道具 举报

12

主题

3394

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8665
金钱
8665
注册时间
2020-5-11
在线时间
4131 小时
发表于 2020-6-5 14:18:17 | 显示全部楼层
一般不必关心这个问题,(主要是我也不了解
以9600波特率为例,传输一个字节耗时约1ms,进中断处理一个字节到退出中断估计耗时1us,
所以程序还是会回到main里,假如中断里有调用了延时函数耗时超过1ms,那么它可能这次中断处理完马上又进下一次中断,可能不会回到main,
(但是似乎在哪见过一个说法是仍会回到main并执行一条指令).
如果波特率实在太高,中断里处理来不及,那就用DMA吧,自动将收到的数据放入数组,较节省CPU。
专治疑难杂症
回复

使用道具 举报

1

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2019-9-27
在线时间
142 小时
发表于 2020-6-5 14:32:44 | 显示全部楼层
应该是中断之后直接把数据存放到硬件buf了吧,剩下就看你的程序怎么写了
回复

使用道具 举报

2

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-12-29
在线时间
36 小时
发表于 2020-6-5 15:43:41 | 显示全部楼层
STM32的速度对于串口来说是非常快的,MCU进出中断的时间是固定的,中断里面的时间和你的中断处理程序有关。如果MCU负载较重,可以使用DMA加空闲中断的方式,就是DMA自动收数据到你指定的地址,一帧数据收完了,在产生中断通知你。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 05:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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