当前文档版本为 v0.3.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

adc_compare例程

1 功能概述

本代码示例主要演示ADC外设的采样比较功能,分别设定比较寄存0和比较寄存器1的比较阀值和比较条件后,每次ADC采样结果会自动与比较阀值进行比较,当达到指定条件后,产生比较中断。

2 环境要求

  • Board: PAN2628b1_evb

  • Micro USB线两2根,一根用于程序下载,一根用于查看串口打印Log

  • 将 J15开关拔至ADC侧,将P3_3与电位器相连

  • 将 J19 开关拔至TX侧,将P3_1与uart的TX引脚相连

3 编译和烧录

例程位置:pan2628_dk\01_SDK\example_basic\adc\adc_compare

打开目录下keil下的adc_compare.uvprojx工程,编译整个代码工程。

4 演示说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载:

  1. 在电脑上打开串口调试工具,串口参数:115200/8bit/1stop/无校验

  2. 观察串口打印的内容,看看是否有Adc data:1845类似格式信息输出

  3. 调节电位器,让ADC值低于1500,观察是否有AdcCompare0 interrupt.

  4. 调节电位器,让ADC值高于2500,观察是否有AdcCompare1 interrupt.

串口输出信息如下:

AdcCompare0 interrupt.
Adc code:1274
Adc code:1488
AdcCompare0 interrupt.
Adc code:1488
Adc code:1561
...........
Adc code:2699
AdcCompare1 interrupt.
Adc code:2700
Adc code:2891
AdcCompare1 interrupt.
Adc code:2904
Adc code:2905

5 开发说明

通过调用 adc.c 的ADC_Init()、ADC_ConfigTriggerMode()、ADC_ConfigCmpFunc()、ADC_EnableIRQ()等函数接口来实现ADC的采样比较功能。

    /** Config ADC params */
    ADC_Init(ADC_CH3, 0x0020, ENABLE);
    ADC_ConfigTriggerMode(ADC_SW_TRIGGER);

    /** Config ADC compare function */
    ADC_ConfigCmpFunc(ADC_CmpFunc0, ADC_CH3, ADC_CMP_COND_LESS, 1500, 3);

    /** Config ADC compare function */
    ADC_ConfigCmpFunc(ADC_CmpFunc1, ADC_CH3, ADC_CMP_COND_NOTLESS, 2500, 3);

    /** Enable ADC convert over interrupt&compare0/1 interrupt */
    ADC_EnableIRQ(ENABLE, ENABLE, ENABLE);

6 RAM/Flash资源使用情况

Program Size: data=35.1 xdata=0 const=84 code=2616