This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我从 ISR 调用 Task1、如下所示:
_interrupt void
adc_isr1 (空)
{
ADCValue_PWM1B = AdcResult.ADCRESULT0;
Cla1ForceTask1();
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//为下一个 SOC 清除 ADCINT1标志*/
PieCtrlRegs.PIEACK.all = PIEACK_Group1;//确认 PIE 中断
}
在 CLA 中、我将按如下方式修改 ADC 值:
_interrupt void
Cla1Task1 (空)
{
_mdebugstop();
ADCValue1= ADCValue_PWM1B*3;
}
然而、ADCValue1的值在 main 中不会改变、我一直读取0。 任何人能否就如何在 CPU 和 CLA 之间共享变量提出建议?
下面是我在 shared_data.c 中定义变量的方式:
#pragma DATA_SECTION (ADCValue_PWM1B、"CpuToCla1MsgRAM");
UINT16 ADCValue_PWM1B;
#pragma DATA_SECTION (ADCValue1、"Cla1ToCpuMsgRAM");
uint16 ADCValue1;
我认为我在这里遇到了数据类型问题:
_interrupt void
Cla1Task1 (void){
_mdebugstop();
ADCValue1=(浮点) ADCValue_PWM1B*2;
}
在调试器中、我发现 ADCValue_PWM1B=485 (这是我对 ADC 的预期)、但当我进一步执行时、我得到一个值:对于 ADCValue1为1905092393。
以下是我的变量声明:
#pragma DATA_SECTION (ADCValue_PWM1B、"CpuToCla1MsgRAM");
长 ADCValue_PWM1B;
#pragma DATA_SECTION (ADCValue1、"Cla1ToCpuMsgRAM");
长 ADCValue1;
unsigned long y;
有什么意见?
我已经分配了一个 ADC 来触发一个 CLA 任务: AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;我已经注意到 CLA 只被调用一次? 有人能告诉我可能缺少什么吗?
_interrupt void
Cla1Task1 (空)
{
_mdebugstop();
ADCValue_PWM1B = AdcResult.ADCRESULT0;
ADCValue1= ADCValue_PWM1B*2;
}
_interrupt void
cla1_Task1_ISR (空)
{
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
PieCtrlRegs.PIEACk.bit.ACK11 = 1;
}