首页 分享 (*(volatile unsigned int *))详解

(*(volatile unsigned int *))详解

来源:萌宠菠菠乐园 时间:2025-04-17 22:08

最新推荐文章于 2023-10-14 16:55:58 发布

liukais 于 2016-12-29 13:21:22 发布

使用一个32位处理器,要对一个32位的内存地址进行访问,可以这样定义

#define RAM_ADDR (*(volatile unsigned long *)0x00000000) 1 1

然后就可以用C语言对这个内存地址进行读写操作了

读:

tmp = RAM_ADDR; 1 1

写:

RAM_ADDR = 0x55; 1 1

volatile的意思是说明这个变量是可能被别的程序或者本程序的其他线程修改的,这样编译器就不能优化它,每次读取都从地址中获取。如果不这样声明的话编译器可以把它缓冲在寄存器中的,这样别的程序修改了它,而寄存器里面的值却是原先的,会发生你不想要的结果。而上面三种情况都是这种可能在本程序或者本线程外被修改的情况,所以要加它。

注意几点: 
1.(volatile unsigned long *)0x00000000 说明是一个指针类型,地址在0x00000000 
2.在前面加上个*,表示指向这个地址的内容。 
3.养成在整体外面再加个括号的习惯。

相关知识

(*(volatile unsigned int *))详解
基于STM32的定时定量智能宠物投食器原理图PCB
嵌入式第二课
linux
一段有趣的代码,喂仓鼠
有点小累
基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB
基于51单片机的智能宠物喂食机【喂食,加水,铲屎,上位机】(仿真)
基于51单片机的智能宠物喂养机仿真
基于单片机的宠物定时喂食器设计

网址: (*(volatile unsigned int *))详解 https://www.mcbbbk.com/newsview1120395.html

所属分类:萌宠日常
上一篇: 《宠物维他命》综艺全集在线观看
下一篇: 狗狗全面体检包括哪些项目

推荐分享