打印

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

[复制链接]
1288|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
someonewho|  楼主 | 2014-1-30 22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
someonewho|  楼主 | 2014-1-30 22:57 | 只看该作者
求助给位了

使用特权

评论回复
板凳
拿起书本| | 2014-2-21 15:40 | 只看该作者
这个只要重新定义数组就OK了,楼主不妨一试。

使用特权

评论回复
地板
jing43| | 2014-2-22 10:25 | 只看该作者
本帖最后由 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) 来访问。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

1150

帖子

1

粉丝