我遇到了以下问题。 当我将一个代码复制到我的主代码中时、它工作正常。 只有当数据是结构时、结果才为零
struct cla_Estdata_
{
MOSPROF_STATE 状态;
int speed_Hz;
motorpos_t position_cnt;
浮动扭矩;
int 计数器;
};
typedef 结构 cla_RESdata_ volatile cla_RESdata_t;
CLA:
#pragma DATA_SECTION (CLA_estdata、"Cla1ToCpuMsgRAM")
易失性 CLA_Estdata_t CLA_estdata;
#pragma DATA_SECTION (CLA_TEST、"Cla1ToCpuMsgRAM")
volatile int CLA_test;
_interrupt void Cla1Task4 (void)
{ cla_estdata.counter++;
CLA_TEST++;
}
主代码:
静态内联 CLA_Update_clafreq (void)
{
extern volatile CLA_Estdata_t CLA_estdata;
extern volatile int cla_test;
extern long volatile CLA_Freq;
cla_Freq=cla_test;
}
结果 CLA_freq 每次更新为新值
静态内联 CLA_Update_clafreq (void)
{
extern volatile CLA_Estdata_t CLA_estdata;
extern volatile int cla_test;
extern long volatile CLA_Freq;
cla_Freq=cla_estdata.counter;
}
结果:CLA_Freq 始终为零。 在调试窗口中、我看到 CLA_estdata.counter 正在计数。 因此、CLA_estdata.counter 被填充正确的数据、因此 CPU 为何无法访问它。
有人建议如何解决这个问题? 单个变量和结构之间有何区别?