硬汉嵌入式论坛

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

请教,串口FIFO实验,此处需要通过关闭中断保护吗?为什么?

[复制链接]

7

主题

18

回帖

39

积分

新手上路

积分
39
发表于 2020-9-8 14:30:59 | 显示全部楼层 |阅读模式
如题,串口FIFO实验,stm32f4 + mdk。

111.png

首先,这里使用局部变量ucCount暂存_pUart->usTxCount我是能够理解的(主要是担心在多线程环境中,在下面的if...else if...中使用的_pUart->usTxCount可能会得到不同的值)。
但是,我认为这里关闭中断是没有必要的,由于通过地址获取值(大概是间接寻址指令吧)可以通过一条指令完成(天然原子性),因此这里进行关闭中断保护没有什么意义啊。
以上是我的理解,哪里理解错了,恳请各位不吝赐教,感谢。
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2020-9-8 14:45:17 | 显示全部楼层
volatile属性的变量读取一般要开关中断保护
回复

使用道具 举报

7

主题

18

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2020-9-8 23:22:07 | 显示全部楼层
有没有大神给个详细的解释,感激不尽~
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115668
QQ
发表于 2020-9-9 01:37:58 | 显示全部楼层
读操作可以不用加的,这个变量定义的时候加上了__IO ,即
__IO uint16_t usTxCount;

这样已经保证了不被编译器优化,实时读取最新的值。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-11 05:24 , Processed in 0.245525 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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