Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程代码视觉AVR_C_Avr_Avr Gcc_Codevisionavr - Fatal编程技术网

C编程代码视觉AVR

C编程代码视觉AVR,c,avr,avr-gcc,codevisionavr,C,Avr,Avr Gcc,Codevisionavr,我无法理解此代码的某些行,请描述这些代码的作用: 此代码是atmelstudio中编写的,是ATMEL的AVR443应用程序说明的示例代码 unsigned char *pTemp; fastTemp.word = ((PIN_HALL & hallMask)>>1); pTemp = pDrvPattern + fastTemp.word; PORT_MC = *(pTemp); as*pDrvPattern的定义如下: __regvar __no_init unsign

我无法理解此代码的某些行,请描述这些代码的作用: 此代码是atmelstudio中编写的,是ATMEL的AVR443应用程序说明的示例代码

unsigned char *pTemp;
fastTemp.word = ((PIN_HALL & hallMask)>>1);
pTemp = pDrvPattern + fastTemp.word;
PORT_MC = *(pTemp);
as*pDrvPattern的定义如下:

__regvar __no_init unsigned char *pDrvPattern 

pDrvPattern = drvPatternsCW;
unsigned char drvPatternsCW[] = {
0,    //Stop
// MC_PORT drive config
PDP2_CW, //Phase2
PDP6_CW, //Phase6
PDP1_CW, //Phase1
PDP4_CW, //Phase4
PDP3_CW, //Phase3
PDP5_CW,  //Phase5
// Configuration of Output Compare operation for timer 0
COM0P2_CW, //Phase2
COM0P6_CW, //Phase6
COM0P1_CW, //Phase1
COM0P4_CW, //Phase4
COM0P3_CW, //Phase3
COM0P5_CW,  //Phase5
// Configuration of Output Compare operation for timer 2
   COM2P2_CW, //Phase2
COM2P6_CW, //Phase6
COM2P1_CW, //Phase1
COM2P4_CW, //Phase4
COM2P3_CW, //Phase3
COM2P5_CW  //Phase5
};
__regvar __no_init union _fastTemp{
unsigned int word;
struct{
unsigned char LByte;
unsigned char HByte;  //Hbyte = Zero
};
} fastTemp @12;
#define PDP1_CW  ((0<<UL)|(0<<VL)|(1<<WL)|(0<<UH)|(1<<VH)|(0<<WH))
#define PDP2_CW  ((0<<UL)|(0<<VL)|(1<<WL)|(1<<UH)|(0<<VH)|(0<<WH))
#define PDP3_CW  ((0<<UL)|(1<<VL)|(0<<WL)|(1<<UH)|(0<<VH)|(0<<WH))
#define PDP4_CW  ((0<<UL)|(1<<VL)|(0<<WL)|(0<<UH)|(0<<VH)|(1<<WH))
#define PDP5_CW  ((1<<UL)|(0<<VL)|(0<<WL)|(0<<UH)|(0<<VH)|(1<<WH))
#define PDP6_CW  ((1<<UL)|(0<<VL)|(0<<WL)|(0<<UH)|(1<<VH)|(0<<WH))
#define HALL1 PB1
#define HALL2 PB2
#define HALL3 PB3
#define HALL_MASK  ((1<<HALL1)|(1<<HALL2)|(1<<HALL3))
#define PORT_MC PORTD
\uuuu regvar\uuuu no\u init unsigned char*pDrvPattern
pDrvPattern=drvPatternsCW;
无符号字符drvPatternsCW[]={
0,//停止
//MC_端口驱动器配置
PDP2_CW,//第2阶段
PDP6_CW,//相位6
PDP1_CW,//相位1
PDP4_CW,//相位4
PDP3_CW,//相位3
PDP5_CW,相位5
//计时器0的输出比较操作的配置
COM0P2_CW,//第2阶段
COM0P6_CW,相位6
COM0P1_CW,//相位1
COM0P4_CW,//相位4
COM0P3_CW,//相位3
COM0P5_CW,//第5阶段
//定时器2的输出比较操作配置
COM2P2_CW,//第2阶段
COM2P6_CW,相位6
COM2P1_CW,//第1阶段
COM2P4_CW,//相位4
COM2P3_CW,//第3阶段
COM2P5_CW//Phase5
};
__regvar\uuuu no\u init union\u fastTemp{
无符号整数字;
结构{
无符号字符;
无符号字符HByte;//HByte=零
};
}12岁时的fastTemp;

#define PDP1_CW((0您的代码是从内存缓冲区中提取一个数据字段。该代码创建了一个字符数组,
drvPatternsCW[]
,然后用
pDrvPattern
创建一个指向该数组的指针。将
pTemp
设置为
pDrvPattern+fastTemp.word
相当于
pTemp=&pDrvPattern[fastTemp.word]
端口号MC=*(pTemp);
最终与
端口号MC=pDrvPattern[fastTemp.word]相同

欢迎来到Stack Overflow。请花点时间阅读并参考您可以在此处询问的内容和方式。现在您的问题是?您不了解代码的哪些部分?这两个代码行的作用是什么?如果一个poiner添加到int??pTemp=pDrvPattern+fastTemp.word;PORT_MC=*(pTemp);添加到
int
(或反之亦然)的指针应用指针艺术。非常感谢您帮助我完全理解。非常感谢