智能车制作

标题: 能回答这个问题的都他妈是大师。。。。 [打印本页]

作者: gc286    时间: 2010-8-2 13:48
标题: 能回答这个问题的都他妈是大师。。。。
/*** PWME - PWM Enable Register; 0x00000300 ***/
typedef union {
  byte Byte;
  struct {
    byte PWME0       :1;                                       /* Pulse Width Channel 0 Enable */
    byte PWME1       :1;                                       /* Pulse Width Channel 1 Enable */
    byte PWME2       :1;                                       /* Pulse Width Channel 2 Enable */
    byte PWME3       :1;                                       /* Pulse Width Channel 3 Enable */
    byte PWME4       :1;                                       /* Pulse Width Channel 4 Enable */
    byte PWME5       :1;                                       /* Pulse Width Channel 5 Enable */
    byte PWME6       :1;                                       /* Pulse Width Channel 6 Enable */
    byte PWME7       :1;                                       /* Pulse Width Channel 7 Enable */
  } Bits;
} PWMESTR;
extern volatile PWMESTR _PWME @(REG_BASE + 0x00000300);
#define PWME                                    _PWME.Byte
#define PWME_PWME0                      _PWME.Bits.PWME0
#define PWME_PWME1                      _PWME.Bits.PWME1
#define PWME_PWME2                      _PWME.Bits.PWME2
#define PWME_PWME3                      _PWME.Bits.PWME3
#define PWME_PWME4                      _PWME.Bits.PWME4
#define PWME_PWME5                      _PWME.Bits.PWME5
#define PWME_PWME6                      _PWME.Bits.PWME6
#define PWME_PWME7                      _PWME.Bits.PWME7

#define PWME_PWME0_MASK                 1
#define PWME_PWME1_MASK                 2
#define PWME_PWME2_MASK                 4
#define PWME_PWME3_MASK                 8
#define PWME_PWME4_MASK                 16
#define PWME_PWME5_MASK                 32
#define PWME_PWME6_MASK                 64
#define PWME_PWME7_MASK                 128


这段代码的具体意义怎么理解?  我懂C语言。。。。。。谢谢。。。。
作者: zzy2099    时间: 2010-8-2 16:52
你对大师的要求太低了,
这个问题其实不需要大师回答的,
很遗憾的是,我不能冒充大师
作者: zouyf12    时间: 2010-8-2 19:37
建议你看看C语言的共同体吧,具体什么意思我也不知道,但是作用我知道  你用过51吧?  你知道KEIL吧,比如你要访问P1口,但是KEIL不知道什么是P1 ,所以在reg52.h里定义了sfr P1    = 0x90; 这样,当你写P1=0X38的时候,KEIL就知道是吧0X38放到0x90这个地址。上面的作用就是定义了PWME这个寄存器的地址extern volatile PWMESTR _PWME @(REG_BASE + 0x00000300);让你在程序里可以直接写PWME来访问这个寄存器。其他的长篇大论无非你让你可以直接用PWME_PWME0这样的语句来访问PWME这个寄存器的第 0位, 原理没空研究~
等你用过STM32的硬件库就知道了,这样的写法很常用。其实就是让别人用起来方便而已,原理有兴趣就研究,没兴趣可以不用管
作者: gc286    时间: 2010-8-9 14:04
回复 2# zzy2099


    那你是大湿。。。。。。
作者: gc286    时间: 2010-8-9 14:06
回复 3# zouyf12


    谢谢,大师。。。
作者: jay404823000    时间: 2010-8-25 13:44
首先说你的素质不高,我也不是大师!
寄存器的声明采用最经典的结构体位域法,具体看C语言的结构体位域教程。
所有的位域寄存器都是按2的位权赋值的,所以就有1,2,4,8,32,.......
后面只是一些定义罢了
作者: encrease    时间: 2010-10-9 16:39
请LZ自行复习联合体与结构体。。这种问题不需要大师回答。。
这段程序中只有@(REG_BASE + 0x00000300)不是标准的C语言。
作者: joab    时间: 2010-10-31 15:35

作者: suaibinhan    时间: 2011-2-1 23:25
学习了
作者: wugongzi    时间: 2011-2-2 07:22
en
作者: make1001    时间: 2011-2-16 14:51
学习下
作者: zyy464533641    时间: 2011-6-26 09:58
hh




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2