找回密码
 立即注册
查看: 61|回复: 2

串口中断怎么在别的地方调用接收到的数据

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-04-08 21:02:17
已绑定手机

9

主题

35

回帖

205

积分

中级会员

积分
205
发表于 2025-3-23 09:18:09 | 显示全部楼层 |阅读模式
在串口接收到的数据,在中断外怎么使用,比如说云平台通过esp8266下发指令单片机的SBUF接收到数据,想要在其他函数里调用这个数据并进行提取,还是说可以在中断里直接进行提取。
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-23 09:23:00 | 显示全部楼层
在串口通信中,接收到的数据通常通过中断服务程序(ISR)进行处理。为了在中断外使用这些数据,建议采用以下方法:

1. 数据缓冲区的使用:在中断服务程序中,将接收到的数据存储到一个全局缓冲区(如数组或队列)中。这样可以确保数据在中断外仍然可访问,同时避免在中断中执行复杂的处理逻辑。

2. 标志位的设置:在中断服务程序中,设置一个标志位(如dataReceivedFlag)来指示新数据已接收。在其他函数中,可以通过检查该标志位来判断是否有新数据需要处理。

3. 数据提取与处理:在其他函数中,读取缓冲区中的数据并进行提取和处理。确保在访问缓冲区时,使用适当的互斥机制(如禁用中断或使用临界区)以防止数据竞争。

4. 避免在中断中执行复杂操作:中断服务程序应尽可能简短,避免执行耗时操作,以确保系统的实时性。复杂的数据处理逻辑应在中断外的主程序或任务中执行。

通过上述方法,可以在中断外安全地调用和处理串口接收到的数据,同时保持系统的稳定性和响应速度。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2025-3-23 09:33:08 | 显示全部楼层
存储到全局变量里面应该可以吧
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:14 , Processed in 0.202238 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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