【嵌入式C学习笔记】宏定义 #define __IO volatile 的作用

文章介绍了C语言中volatile关键字的作用,它用于标记变量为易失性,确保每次读取都从内存中获取最新值。同时,定义了宏#define__IOvolatile,用于简化对这类变量的读写操作。文中提供了一个简单的延时函数Delay作为示例,该函数接受一个被__IO标记的无符号32位整数参数,通过for循环实现延迟效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,要了解C中关键字 volatile的功能:

它告诉编译器,它后面所定义的变量为“易失性变量”,随时都有可能被修改,因此编译器必须确保每次使用变量时都要主动从内存中、根据存储变量的地址读取数据,而不是使用寄存器中的缓存值。

所以,宏定义 #define __IO volatile 的作用是将标记为 “__IO” 的变量设置成可读可写的,具有在任何时候均可读写的权限,本质上,它是一个缩写,意味着变量可以在不需要在代码中显式标明 “volatile” 的情况下使用。

ok,上代码,下面是一个简单的延时函数

typedef unsigned int uint32_t;

#define	 __IO  volatile  /* defines 'read / write' permissions */ 
void Delay(__IO uint32_t nCount)	 //简单的延时函数
{
	for(; nCount != 0; nCount--);
}

首先定义了一个名为 uint32_t 的别名,代表了一个32位无符号整数类型。
然后定义了一个名为 “__IO” 的宏,使用 “__IO” 标记的变量都是被 volatile 修饰的“易失性变量”,在被访问时需要强制读取其在存储器中的最新值。
最后定义延时函数 Delay ,它的形参 nCount 就是一个被标记为 “__IO类型” 的32位无符号整数,函数通过一个for循环来实现延时功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值