找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 444|回复: 3
打印 上一主题 下一主题

volatile unsigned int *

[复制链接]

62

主题

284

帖子

2111

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2111
跳转到指定楼层
1#
发表于 2014-5-21 14:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
#define          LCD_REG          (*((volatile  unsigned  int *)0x3BFF))1 H: D# W- G. q
最近学程序上面语句没看懂,本来这个语句在自己编程时用的也少,不是很理解,大家看看有这个语句真实用户如何?
7 U8 d2 G7 Q( b' Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

62

主题

284

帖子

2111

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2111
推荐
 楼主| 发表于 2014-5-21 14:38 | 只看该作者
#define A (*(volatile unsigned long *)0x48000000) ' T; ~" b4 n% \- C' `' d
... * A4 F' c, [4 m4 o, {& c  j; V
     A = 0x01; 0 q2 x7 k0 L( S' ]" X- E1 f+ y
... % @8 }7 Q+ H: N3 L$ W
    这实际上就是内存映射机制的方便性了。其中 volatile 关键字是嵌入式系统开发的一个重要特点。上述表达式拆开来分析,首先(volatile unsigned long *)0x48000000的意
; x2 y9 J# `( F! P! n. h* a思是把 0x48000000 强制转换成 volatile unsigned long 类型的指针,暂记为 p,那么就是5 z1 E; v9 U; }/ E) f; e% `- W" J
#define A *p, 即A 为P 指针指向位置的内容了。 这里就是通过内存寻址访问到寄存器 A,
5 F2 E8 T$ ]& B" ?0 N可以读/写操作。 0 v) U, R) O: C: j9 s# R  ?( ~
用 GCC 编译时。volatile 所指示的寄存器不进行优化!!! 1 A4 r/ W8 b% z7 A% A: O

1

主题

8

帖子

80

积分

二级会员(20)

Rank: 2Rank: 2

积分
80
3#
发表于 2014-6-6 17:17 来自手机 | 只看该作者
随便打开一个stm32的工程,打开寄存器地址映射头文件,你就发现这个用法多么重要了!

62

主题

284

帖子

2111

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2111
4#
 楼主| 发表于 2014-6-7 12:41 | 只看该作者
是的哇 以前一直没用这些语法 就用现成的东西 搞的现在好多都不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-2 04:45 , Processed in 0.058445 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表