结构体变量赋值问题
最近在写键盘扫描函数的时候用结构体来存储按键信息,但是,调试的时候却发现结构体中的某个变量不能赋值,
typedef struct /*structure type for switch*/
{
UINT8 ucSignal_Time_Cnt : 8; /*counter for timer */
UINT8 ucSignal_Old_Status : 8; /*old state before filter */
UINT8 ucSignal_Now_Status : 8; /* new state after filter */
UINT16 ucSignal_Dead_Cnt : 16; /*counter for clamping */
UINT8 ucAction_Val : 8; /*switch value */
UINT8 ucAction_State : 1; /*press or release state */
UINT8 ucAction_Trig : 1; /*trigger flag */
}stButton_Input_Struct;
在程序运行过程中ucKey_Media_Button.ucSignal_Old_Status的结构是正常的,而
if(pDebounce_Signal->ucSignal_Time_Cnt < 255)
{
pDebounce_Signal->ucSignal_Time_Cnt++;
i = pDebounce_Signal->ucSignal_Time_Cnt;
}
在单步执行是时候,pDebounce_Signal->ucSignal_Time_Cnt只是从最初的0变成了1,之后打死都不变,i的变化正常。
在后边给结构体中变量赋值的之后发现付不了,于是就把其它函数调用都注释掉,在初始化中试探着给变量ucSignal_Now_Status赋值也不成功
stButton_Input_Struct ucKey_Media_Button;
void vMLp_Switch_Mess_Init()
{
ucKey_Media_Button.ucSignal_Time_Cnt = 1;
ucKey_Media_Button.ucSignal_Old_Status = 0;
ucKey_Media_Button.ucSignal_Now_Status = 1;
ucKey_Media_Button.ucSignal_Dead_Cnt = 1024;
}
其它函数都不调用,但是运行完之后查看变量结构依次为 0,1,0,0.
看到这样的结构百思不得其解,望高人出来指点!