C/C++结构体赋值问题

unsignedshortwr_map[8]={0x0000,0x0000,0x0000,0x00000,0x00000,0x0000,0x0000,0x0000};un... unsigned short wr_map[8] = {0x0000,0x0000,0x0000,0x00000,0x00000,0x0000,0x0000,0x0000};unsigned short rr_map[8] = {0x0000,0x0000,0x0000,0x00000,0x00000,0x0000,0x0000,0x0000};
void Encoder_Init(Encoder_InitTypeDef Encoder_InitStruct){ wr_map[R2] &= 0xf1ff; wr_map[R2] |= (Encoder_InitStruct.Pulse_Mode << 8) |(Encoder_InitStruct.Pulse_Mul); Reg_Write(R2, wr_map[R2]);}
typedef enum{ DOUBLE_PULSE, DIR_PULSE } PULSE_MODE;
typedef enum{ MUL_1 = 0x0000, MUL_2 = 0x0400, MUL_4 = 0x0800 } ENCODER_MUL;
typedef struct{ PULSE_MODE Pulse_Mode; ENCODER_MUL Pulse_Mul; } Encoder_InitTypeDef;
int main(void){Encoder_InitTypeDef Encoder_InitStruct;Encoder_InitStruct-> Pulse_Mode = DOUBLE_PULSE; Encoder_InitStruct-> Pulse_Mul = MUL_4; Encoder_Init(&Encoder_InitStruct);}这是程序的一部分Regwrite()函数在这之前已经声明过了,问题在main()中队结构变
量Encoder_InitStruct的赋值。
展开
 我来答
zjnny
2015-11-05 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1053万
展开全部

只从出现的代码看

Encoder_InitTypeDef  Encoder_InitStruct;
Encoder_InitStruct-> Pulse_Mode = DOUBLE_PULSE; //这是个实体,你还用->赋值,Encoder_InitStruct.Pulse_Mode
Encoder_InitStruct-> Pulse_Mul = MUL_4;   //同上
Encoder_Init(&Encoder_InitStruct);//函数声明的参数是结构体变量,你这里反而取的是实体的地址
追问

    用这种方式,编译能通过,但是写入ARM单片机时无法通过校验。

追答
那是你自己的问题,没有做过类似东西的人从这点代码难看出什么,也许是实现逻辑错误,也许是代码有bug
从你提的这个问题,我觉得你对c非常不熟练,最好请教身边的人帮你检查
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式