本帖最后由 jing43 于 2014-4-30 11:43 编辑
还有用指针也可以的。
官方的 F280XX_Adc.h 对结果寄存器的定义
struct ADC_RESULT_REGS
{
uint16_t ADCRESULT0; // Conversion Result Buffer 0
uint16_t ADCRESULT1; // Conversion Result Buffer 1
uint16_t ADCRESULT2; // Conversion Result Buffer 2
uint16_t ADCRESULT3; // Conversion Result Buffer 3
uint16_t ADCRESULT4; // Conversion Result Buffer 4
uint16_t ADCRESULT5; // Conversion Result Buffer 5
uint16_t ADCRESULT6; // Conversion Result Buffer 6
uint16_t ADCRESULT7; // Conversion Result Buffer 7
uint16_t ADCRESULT8; // Conversion Result Buffer 8
uint16_t ADCRESULT9; // Conversion Result Buffer 9
uint16_t ADCRESULT10; // Conversion Result Buffer 10
uint16_t ADCRESULT11; // Conversion Result Buffer 11
uint16_t ADCRESULT12; // Conversion Result Buffer 12
uint16_t ADCRESULT13; // Conversion Result Buffer 13
uint16_t ADCRESULT14; // Conversion Result Buffer 14
uint16_t ADCRESULT15; // Conversion Result Buffer 15
uint16_t rsvd[16]; // reserved
};
可见这些结果寄存器原本就是连续的。
可以定义指针 volatile Uint16 * adc;
adc = (Uint16 *) ((Uint32) &AdcResult.ADCRESULT0);
这时 *(adc + n) 就等于你想要的 ADCRESULT[n]。
还可以使用 *( &AdcResult.ADCRESULT0 + n) 来访问。
|