我用的是F5438
对PMM寄存器操作的时候一写就PUC,不知道怎么回事。
下面这两句,执行到第二句的时候就PUC...
PMMCTL0 = 0xA500;
SVSMIO |= SVMHOE;
哪位大侠指点一二
我用的头文件是自带的io430x54x.h
头文件是如下面这样写的,但是PMMCTL0是16位的寄存器,而下面的定义只有8位。
按照这个定义去执行上面两条语句的时候到第二句就PUC了。
__no_init volatile union
{ unsigned short PMMCTL0; /* PMM Control 0 */ struct { unsigned short PMMCOREV0 : 1; /* PMM Core Voltage Bit: 0 */ unsigned short PMMCOREV1 : 1; /* PMM Core Voltage Bit: 1 */ unsigned short PMMSWBOR : 1; /* PMM Software BOR */ unsigned short PMMSWPOR : 1; /* PMM Software POR */ unsigned short PMMREGOFF : 1; /* PMM Turn Regulator off */ unsigned short : 2; unsigned short PMMHPMRE : 1; /* PMM Global High Power Module Request Enable */ } PMMCTL0_bit;
} @ 0x0120;
所以我又在下面加了一个高8位:
__no_init volatile union
{ unsigned short PMMCTL0; /* PMM Control 0 */ struct { unsigned short PMMCOREV0 : 1; /* PMM Core Voltage Bit: 0 */ unsigned short PMMCOREV1 : 1; /* PMM Core Voltage Bit: 1 */ unsigned short PMMSWBOR : 1; /* PMM Software BOR */ unsigned short PMMSWPOR : 1; /* PMM Software POR */ unsigned short PMMREGOFF : 1; /* PMM Turn Regulator off */ unsigned short : 2; unsigned short PMMHPMRE : 1; /* PMM Global High Power Module Request Enable */ unsigned short : 8; /*加的高8位PMMKEY } PMMCTL0_bit;
} @ 0x0120;
加上后再执行上面两条语句还是PUC
密码是A5没有错啊,那是哪里问题了。请教! |