[讨论] 怎么将ADC结果寄存器表述为数组形式?

dontium   2013-10-20 12:21 楼主
C2000中,有16个ADC结果寄存器,AdcResult.ADCRESULT0 ~ AdcResult.ADCRESULT15

我的问题是,在程序中,怎么能把它表态成这样:

AdcResult.ADCRESULT [n]

?

回复评论 (4)

对应地址就可可以啦
点赞  2013-10-20 14:16
在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大概也能类似操作吧,我没试过
点赞  2013-10-23 08:51
看来,只有重新定义数组了。不能用TI原来的定义方法。
点赞  2013-10-23 11:44

回复 板凳Laspide 的帖子

这方法挺好的。非常赞啊
点赞  2013-10-26 23:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复