请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 453|回复: 3
收起左侧

[其它] 变量在中断被修改,在主程序被读取时候,是否需要关中断?

[复制链接]

26

主题

23

回帖

101

积分

初级会员

积分
101
发表于 2023-5-31 09:35:24 | 显示全部楼层 |阅读模式
STM32H7.   全局变量在中断服务程序中被修改,当在主程序被读取时候,是否需要关中断?


更极端一点,如果在主程序中对这个变量也会读会写,是否就一定要关中断?

有没有这方面确定的说法?
回复

使用道具 举报

2

主题

260

回帖

266

积分

高级会员

积分
266
发表于 2023-5-31 11:26:47 | 显示全部楼层
32位机读写32位数据本身就是原子操作,中断不会改一半的数据。要不要关看具体应用了。
回复

使用道具 举报

5

主题

65

回帖

80

积分

初级会员

积分
80
发表于 2023-5-31 11:44:38 | 显示全部楼层
读取全局变量不建议关断,如果需要修改变量可以关闭,不过也要看场景。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105917
QQ
发表于 2023-5-31 12:01:07 | 显示全部楼层
如果是读操作,加上_IO即可,保证每次都是从变量源地址读取。

如果是写操作,也可以不使用开关中断方式,也可以使用原子操作API

RTX5里面提供的各种原子操作API,可以独立复制出来使用,含MDK,IAR和GCC
https://www.armbbs.cn/forum.php? ... 9114&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 08:35 , Processed in 0.236866 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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