HD21425 发表于 2013-11-26 09:40

DSP中struct用法

DSP中位定义和结构体定义都是struct,那如何区别呢?

HD21425 发表于 2013-11-26 10:08

此贴已结!

zhangmangui 发表于 2013-11-26 10:19

举例来说
struct GPAMUX_BITS{      // bits   description
   Uint16 PWM1_GPIOA0:1;   // 0
   Uint16 PWM2_GPIOA1:1;   // 1
   Uint16 PWM3_GPIOA2:1;   // 2
   Uint16 PWM4_GPIOA3:1;   // 3
   Uint16 PWM5_GPIOA4:1;   // 4
   Uint16 PWM6_GPIOA5:1;   // 5
   Uint16 T1PWM_GPIOA6:1;    // 6
   Uint16 T2PWM_GPIOA7:1;    // 7      
   Uint16 CAP1Q1_GPIOA8:1;   // 8
   Uint16 CAP2Q2_GPIOA9:1;   // 9
   Uint16 CAP3QI1_GPIOA10:1; // 10
   Uint16 TDIRA_GPIOA11:1;   // 11
   Uint16 TCLKINA_GPIOA12:1; // 12
   Uint16 C1TRIP_GPIOA13:1;// 13
   Uint16 C2TRIP_GPIOA14:1;// 14
   Uint16 C3TRIP_GPIOA15:1;// 15         
};
上面这个是结构体里定义了位域,也就是位域结构体,GPIO的每一位长度为一;
union GPAMUX_REG {
   Uint16      all;
   struct GPAMUX_BITS bit;
};
上面这个是联合体,占用同一个内存,也就是要么all   要么bit
其中bit又被定义为上面的位域结构体   即结构体GPAMUX_BITS和bit等价
struct GPIO_MUX_REGS {
   unionGPAMUX_REG   GPAMUX;
   ...
};
上面将定义的各种联合体又汇总到一起,上面结构体里的GPAMUX和上上面的GPAMUX_REG等价;
接下来就是最后的一个定义:
extern volatile struct GPIO_MUX_REGS GpioMuxRegs;
也就是定义了一个GpioMuxRegs结构体,其实整体就是个结构体的嵌套
GpioMuxRegs.GPAMUX.bit.C1TRIP_GPIOA13=**;
上句是应用你跟着追踪一下,嵌套

zhangmangui 发表于 2013-11-26 10:19

HD21425 发表于 2013-11-26 10:08 static/image/common/back.gif
此贴已结!

什么意思

HD21425 发表于 2013-11-26 10:26

看书看懂了,还是非常感谢版主的热心帮忙!

HD21425 发表于 2013-11-26 10:26

zhangmangui 发表于 2013-11-26 10:19 static/image/common/back.gif
什么意思

非常感谢!

zhangmangui 发表于 2013-11-26 10:35

HD21425 发表于 2013-11-26 10:26 static/image/common/back.gif
看书看懂了,还是非常感谢版主的热心帮忙!
相互学习共同进步
你说此贴已结看来你不知道怎么结贴
看看这个方法
https://bbs.21ic.com/icview-442857-1-1.html

HD21425 发表于 2013-11-26 11:49

zhangmangui 发表于 2013-11-26 10:35 static/image/common/back.gif
相互学习共同进步
你说此贴已结看来你不知道怎么结贴
看看这个方法


网站说需要一日以后才能结贴!

zhangmangui 发表于 2013-11-26 13:06

HD21425 发表于 2013-11-26 11:49 static/image/common/back.gif
网站说需要一日以后才能结贴!

哦是的一日之后才能结贴
页: [1]
查看完整版本: DSP中struct用法