| AT32 WorkBench常用功能39--AT32F435ADC电压监测器配置 本文主要介绍如何基于AT32 WorkBench配置ADC的电压监测器,通过电压监测器,可以实时监测通道电压有没有超出设定的阈值范围,当AD值超过阈值电压时,VMOR标志会被硬件置1,如果使能了VMORIEN,同时会产生中断
 
 本次例程使用电压监测器监测普通通道
 转换时序
 
   硬件环境
 
 软件环境
 
 
 配置步骤
 1打开AT32 WorkBench新建AT32F435工程
 
   
 2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
 2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
 
   
 2.2 打开时钟配置
 
   
 3 配置ADC模式和分频
 
   
 4配置普通组转换ADC CH1(PA1引脚),开启电压监测,监测所有普通组通道,低边界为1000,高边界为3000,只要ADC值超过这个范围,就会触发电压监测中断
 
   
 5 配置ADC中断
 
   
 6配置串口打印
 6.1配置USART1
 
   
 6.2 USART1引脚配置成PA9
 
   
 6.3 开启串口打印
 
   
 7点击“生成代码”生成MDK5代码工程
 
   8配置ADC普通通道转换相关应用代码
 8.1 main.c的mian函数写法如下, 可以直接替换这部分代码
 
 
 int main(void)
{
  /* add user code begin 1 */
  /* add user code end 1 */
  /* system clock config. */
  wk_system_clock_config();
  /* config periph clock. */
  wk_periph_clock_config();
  /* nvic config. */
  wk_nvic_config();
  /* timebase config. */
  wk_timebase_init();
  /* usart1 already supports printf. */
  /* init usart1 function. */
  wk_usart1_init();
  /* init adc-common function. */
  wk_adc_common_init();
  /* init adc1 function. */
  wk_adc1_init();
  /* add user code begin 2 */
  adc_interrupt_enable(ADC1, ADC_VMOR_INT, TRUE);
  /* add user code end 2 */
  while(1)
  {
    /* add user code begin 3 */
    adc_ordinary_software_trigger_enable(ADC1, TRUE);
    
    while(adc_flag_get(ADC1, ADC_OCCE_FLAG) == RESET);
    
    printf("adc data:%d\r\n", adc_ordinary_conversion_data_get(ADC1));
    
    wk_delay_ms(1000);
    /* add user code end 3 */
  }
}
8.2 at32f435_437_int.c的ADC1_2_3_IRQHandler函数写法如下, 可以直接替换这部分代码
 
 void ADC1_2_3_IRQHandler(void)
{
  /* add user code begin ADC1_2_3_IRQ 0 */
  if(adc_flag_get(ADC1, ADC_VMOR_FLAG) != RESET)
  {
    adc_flag_clear(ADC1, ADC_VMOR_FLAG);
    
    printf("VMOR FLAG = 1\r\n");
  }
  /* add user code end ADC1_2_3_IRQ 0 */
  /* add user code begin ADC1_2_3_IRQ 1 */
  /* add user code end ADC1_2_3_IRQ 1 */
}
 9在MDK5上编译,并下载代码到AT32F435 MCU 上
 
 10复位运行AT32F435MCU,用串口助手观看打印信息,ADC数据每1秒钟转换一次,修改 PA1引脚电压为3.3V、1.6V、0V,即可看到在3.3V和0V下会产生电压监测中断,在1.6V不会产生电压监测中断
 
   
 
 |