打印

关于DSP程序中宏定义#define 以及 volatile的用法分析

[复制链接]
509|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
尤彼卡|  楼主 | 2016-9-29 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学DSP者,经常会在DSP程序中发现类似如下面的程序的写法,很多同学不是很懂,今天在这里,给大家简要分析一下
程序
#define GPIO01           *( volatile Uint32* )( GPIO_BASE + 0x34 )
复制代码
这是什么用法?

这里使用的是宏定义,具体用法估计都懂吧,不会的请查看C语言相关内容;
也就是说 这句可以改成这样
#define GPIO-01           *( volatile Uint32* )( GPIO_BASE + 0x34 )
复制代码
或者 #define hello      *( volatile Uint32* )( GPIO_BASE + 0x34 ) 等等

意思都是一样的;
下面我们来说说这句的意思
#define GPIO01           *( volatile Uint32* )( GPIO_BASE + 0x34 )
复制代码
意思是 GPIO01等于地址( GPIO_BASE + 0x34 )的值;

即GPIO01 就是一个对( GPIO_BASE + 0x4 )进行强制转换成( volatile Uint32* )类型的指针,再用“*”取这个地址的内容;

如此我们在编写程我需要对地址 GPIO_BASE + 0x34赋值的话,只需这样写 "GPIO01=0x1234;"(不包含"")

希望对大家有用!

相关帖子

沙发
Stannis| | 2016-9-29 20:50 | 只看该作者
volatile意思是这个变量是易变的

使用特权

评论回复
板凳
zhangmangui| | 2016-9-29 21:00 | 只看该作者
恩  很有用   感谢分享

使用特权

评论回复
地板
Rangar| | 2016-9-29 21:13 | 只看该作者
如果把volatile这个去掉可能会提示warning。

使用特权

评论回复
5
hellosdc| | 2016-10-6 21:57 | 只看该作者
宏定义还是使用IO好用一些。

使用特权

评论回复
6
hellosdc| | 2016-10-6 21:57 | 只看该作者
不太习惯用volatile这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

116

主题

774

帖子

1

粉丝