“__IO uint32_t“ 中的__IO 表达的意思

搞stm32这么久了,经常看到stm32里面库文件里面有用“_IO”定义的变量,查过一下当时记住了,过段时间又给忘记了。所以才特意的写一个博文来记住。

1. volatile变量可变允许除了程序之外的比如硬件来修改他的内容 
2. 访问该数据任何

对于(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的地址是固定的。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒马玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值