【单片机】位域非原子写的风险

单字节变量的写是原子操作,但是位域,比如a.bit0和a.bit1的写,和"a++"属于"读-改-写"。

举个例子,比如a.bit0和a.bit1,现在a是0,低优先级线程给a.bit0置1,然后高优先级线程给a.bit1置1,结束后发现,a.bit0是1,a.bit1是0。高优先级操作被覆盖了。

先读出一个临时变量,改完这个临时变量,再将临时变量写回去(原子操作问题无法用volatile处理)。

位域的非原子操作问题,如果位域的各个bit之间没有关联,可以用独立整数处理,因为独立整数(小于总线大小)的写是原子操作。如果有关联,位域就等价为一个结构体,只能用锁处理。

https://www.kdocs.cn/l/ccVU83rvWaXF

相关推荐
国科安芯4 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
树的枝6 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
单片机杂货铺7 小时前
【单片机毕业设计选题】基于stm32单片机儿童公路车速度检测报警
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
振南的单片机世界9 小时前
看门狗硬核拆解:1.6秒不喂狗,硬件强制“掀桌子”
arm开发·stm32·单片机·嵌入式硬件
嵌入式阿蔡9 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
NYFEA10 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
国科安芯11 小时前
ASL622S:把“信号失真“挡在门外的航天级运放
网络·单片机·嵌入式硬件·架构·状态模式·低轨卫星星座
XiHongShi201611 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺12 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计
LCG元13 小时前
STM32F103 硬件 I2C 驱动 MPU6050:一阶互补滤波姿态解算与零偏校准实测
stm32·单片机·嵌入式硬件