打印

请教指针问题

[复制链接]
1996|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlgcumt|  楼主 | 2009-12-14 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CAN, AN, ni, TI, ui
typedef union  _canier_
{
INT32U Word;   //字操作定义
struct
{
  INT32U RIE  :1; //接收中断使能位
  INT32U TIE1  :1; //TxBUF1发送完成中断使能位
  INT32U EIE  :1; //错误报警中断使能位
  INT32U DOIE  :1; //数据溢出中断使能位
  INT32U WUIE  :1; //睡眠模式唤醒中断使能位
  INT32U EPIE  :1; //错误认可中断使能位
  INT32U ALIE  :1; //仲裁丢失中断使能位
  INT32U BEIE  :1; //总线错误中断使能位
  INT32U IDIE :1; //接收到CAN标识符中断使能位
  INT32U TIE2  :1; //TxBUF2发送完成中断使能位
  INT32U TIE3 :1; //TxBUF3发送完成中断使能位
  INT32U RSV21 :21;//保留位
}Bits;
}uCANIER,*P_uCANIER;
#define  CANIER(CanNum)  (*((volatile P_uCANIER)( CANIER_BADR+CanNum* CAN_OFFSET_ADR )))

最后一句是什么意思?

相关帖子

沙发
arm_fan168| | 2009-12-15 08:37 | 只看该作者
最后一句,定义了一个带参数的宏。可以向CanNum这个参数写不同的数值来寻址不同的寄存器。
比如: CANIER(0x01) = 0x12345678;

使用特权

评论回复
板凳
gooogleman| | 2009-12-25 11:07 | 只看该作者
带参数的宏,正解。

使用特权

评论回复
地板
zssmcu| | 2010-1-6 19:53 | 只看该作者
这个现象很常见,比如CAN控制器有一堆寄存器,按照他们的顺序定义一个数据结构,把1号CAN的最小寄存器地址做为基址,然后通过这种方式就很方便访问2号CAN的寄存器啦,主要的理解在于宏后面的指针强制转换
http://www.zssmcu.com

使用特权

评论回复
5
wbh9527| | 2010-3-29 21:37 | 只看该作者
正解

使用特权

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

本版积分规则

个人签名:善攻者,动于九天之上,善守者,藏于九地之下!

183

主题

733

帖子

4

粉丝