C2000中,有16个ADC结果寄存器,AdcResult.ADCRESULT0 ~ AdcResult.ADCRESULT15
我的问题是,在程序中,怎么能把它表态成这样:
AdcResult.ADCRESULT [n]
?
在ECAN里,我是这样用的,
声明:
volatile struct ECAN_REGS *ECan_mp_Regs[2];
volatile struct ECAN_MBOXES *ECan_mp_MBoxes[2];
初始化:
ECan_mp_Regs[ECAN_ECANA_SN] = &ECanaRegs;
ECan_mp_MBoxes[ECAN_ECANA_SN] = &ECanaMboxes;
使用:
ECan_ms_Regs[ECAN_mu16_CANModuleSN].CANMC.bit.SCB = BIT_SET;
for ( ECAN_ms16_i = 0; ECAN_ms16_i < ECAN_MBOX_NUM; ECAN_ms16_i++ )
ECan_mp_MBoxes[ECAN_mu16_CANModuleSN]->MBOX[ECAN_ms16_i].MSGCTRL.all = 0x00000000;
ECan_mp_MBoxes[ECAN_mu16_CANModuleSN]->MBOX[ECAN_ms16_i].MSGID.all = 0x00000000;
这样可以用大致按数组的方式来操作两个模块的相应寄存器,减少代码行数
如果你们使用代码行数考核绩效的话,还是TI V1.3库里那样划算
ADC大概也能类似操作吧,我没试过
看来,只有重新定义数组了。不能用TI原来的定义方法。