指针的应用场景

连续寄存器寻址

#include <stdio.h>                                                              
#define __arch_getb(a)                  (*(volatile unsigned char *)(a))        
struct lpuart_serial_platdata {                                                 
        void *reg;                                                              
};                                                                              
#define u8 unsigned char                                                        
struct lpuart_fsl {                                                             
        int ubdh;                                                               
        u8 ubdl;                                                                
        u8 uc1;                                                                 
        u8 uc2;                                                                 
        u8 us1;                                                                 
        u8 us2;                                                                 
        u8 uc3;                                                                 
        u8 ud;                                                                  
        u8 uma1;                                                                
        u8 uma2;                                                                
        u8 uc4;                                                                 
        u8 uc5;                                                                 
        u8 ued;                                                                 
        u8 umodem;                                                              
        u8 uir;                                                                 
        u8 reserved;                                                            
        u8 upfifo;                                                              
        u8 ucfifo;                                                              
        u8 usfifo;                                                              
        u8 utwfifo;                                                             
        u8 utcfifo;                                                             
        u8 urwfifo;                                                             
        u8 urcfifo;                                                             
        u8 rsvd[28];                                                                                                                                                                                        
};                                                                                 
int main()                                                                         
{                                                                                  
    struct lpuart_serial_platdata data1;                                           
    data1.reg = (void *)0x123456;                                                  
                                                                                   
    struct lpuart_fsl *base = data1.reg;                                           
    printf("reg=%x\n",data1.reg);                                                  
    printf("base=%x\n",base);                                                      
    printf("&base=%x\n",&base);                                                 
    /*printf("reg1=%x\n",base->urcfifo);*/                                      
    printf("urcfifo=%x\n",&base->ubdh);                                         
    printf("urcfifo=%x\n",&base->ubdl);                                         
   

打印结果:

reg=123456
base=123456
&base=3c16aa60
urcfifo=123456
urcfifo=12345a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值