打印
[开发工具]

STM32学习笔记(4):原子操作(Atomatic Operations)

[复制链接]
2467|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
过期的塔头|  楼主 | 2021-9-29 23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在MCU中,原子操作就是对寄存器的单个数据位进行Read-Modify-Write操作,并且整个操作过程不会被其他总线活动中断,从而避免数据冲突或竞争的产生。

原子操作有两种实现方式:硬件软件结合的方式和软件方式。硬件软件结合的方式指软件实现过程须有硬件的支持。

单独的软件方式的Read-Modify-Write原子操作有时可靠性不太高,会产生数据冲突。可靠的原子操作必须要有硬件方面的支持。

基于Cortex-M核的32位MCU中,有两种原子操作:一种是位带操作,另一种是端口置位复位寄存器GPIOx_BSRR对端口输出寄存器GPIOx_ODR的读写访问。汇编语言可以直接体现出对原子的Read-Modify-Write操作,而C语言是直接体现不出来的,但C语言在编译的过程中会被反汇编成相应的汇编指令。有了硬件方面对原子操作的支持,C语言和汇编语言都可以实现可靠的原子操作。

关于原子操作更多知识可以从下列链接的**中获取:
http://blog.jobbole.com/54345/
http://www.infoq.com/cn/articles/atomic-operation/
http://blog.sina.com.cn/s/blog_6117eeff010110ez.html
http://www.cnblogs.com/kissdodog/archive/2013/04/07/3003822.html

使用特权

评论回复
沙发
小叶三千| | 2021-9-30 08:26 | 只看该作者
感谢分享!貌似有的型号不支持位带操作是吗,之前用的F0

使用特权

评论回复
板凳
caoenq| | 2021-9-30 08:49 | 只看该作者
请教一下,STM32中,给一个uint32型变量赋值(不是读-改-写,而是直接赋值)是原子操作么?会被打断么?

使用特权

评论回复
地板
wowu| | 2021-10-14 15:29 | 只看该作者
原子操作就是微操作是吗

使用特权

评论回复
5
xiaoqizi| | 2021-10-14 15:30 | 只看该作者
所有的型号都支持吗

使用特权

评论回复
6
木木guainv| | 2021-10-14 15:32 | 只看该作者
貌似只是有些系列支持

使用特权

评论回复
7
tpgf| | 2021-10-14 15:36 | 只看该作者
需要严格遵守时序吗

使用特权

评论回复
8
heimaojingzhang| | 2021-10-14 15:38 | 只看该作者
第一次了解这个名词

使用特权

评论回复
9
qjp1988113| | 2021-10-15 15:34 | 只看该作者
不错,挺新鲜的说法~谢谢楼主分享~~

使用特权

评论回复
10
sadicy| | 2021-10-16 14:27 | 只看该作者
感觉稍微有点深奥~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

846

帖子

0

粉丝