大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
这个_IO 是指静态 这个 _IO 是指静态 volatile uint32_t 是指32位的无符号整形变量uint32_t 是指32位的无符号整形变量;
搞stm32这么久了,经常看到stm32里面库文件里面有用“_IO”定义的变量,查过一下当时记住了,过段时间又给忘记了。所以才特意的写一个博文来记住。
volatile
volatile
1.
2.
对于((volatile
对于(volatile
unsigned
char
*)0x20我们再分析一下,它是由两部分组成:
1)(unsigned
char
*)0x20,0x20只是个值,前面加(unsigned
char
*)表示0x20是个地址,而且这个地址类型是unsigned
char
,意思是说读写这个地址时,要写进unsigned
char
的值,读出也是unsigned
char
。
2)volatile,关键字volatile
确保本条指令不会因C
编译器的优化而被省略,且要求每次直接读值。例如用while((unsigned
char
*)0x20)时,有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile
则要求每次都去读0x20的实际值。
那么(volatile
unsigned
char
*)0x20是一个固定的指针,是不可变的,不是变量。而char
*u则是个指针变量。
再在前面加”*”:*(volatile
unsigned
char
*)0x20则变成了变量(普通的unsigned
char变量,不是指针变量),如果#define
i
(*(volatile
unsigned
char
*)0x20),那么与unsigned
char
i是一样了,只不过前面的i的地址是固定的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197376.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...