[AT32 WorkBench] AT32 WorkBench常用功能32--AT32F403AADC普通组转换多通道配置(软件切换通道,不用DMA)

[复制链接]
 楼主| ArterySW 发表于 2025-4-16 13:53 | 显示全部楼层 |阅读模式
本帖最后由 ArterySW 于 2025-4-16 13:55 编辑

AT32 WorkBench常用功能32--AT32F403AADC普通组转换多通道配置(软件切换通道,不用DMA)

ADC普通组转换多个通道(使用软件切换不同的通道)
本文主要介绍如何基于AT32 WorkBench配置ADC的普通组,转换多个通道,并读取转换的数据
转换时序
b3255902eeba8c1925acbf6545ba9e85
硬件环境
  • AT-START-F403A

软件环境
AT32 Workbench
  • MDK5
  • 串口助手
  • 配置步骤

1打开AT32WorkBench新建AT32F403A工程
47c5496ffb9c876bf4fa07a0bebe66a7

2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
caf36ddba1fbefd4e7303d6e8e985fa8

2.2 打开时钟配置
6f6056b060334c750c635c55e1b816da

3配置普通组转换ADC CH1(PA1引脚)、ADC CH2(PA2引脚)、ADC CH3(PA3引脚)
3b13061cb4951d224c0b8f236f5a7d40

4配置串口打印
4.1配置USART1
7c9ef869039b4d8e328150531f2aeb39

4.2 USART1引脚配置成PA9
71ce8e348f7c7c7b5b989687eee6001d

4.3 开启串口打印
a503ead9c7deb52e2e5bf9fcdf3be1f8

5点击“生成代码”生成MDK5代码工程
50fe727999bb65f19ecd6009728936e6
6 配置ADC普通通道转换相关应用代码
main.c的mian函数写法如下, 可以直接替换这部分代码

  1. int main(void)
  2. {
  3.   /* add user code begin 1 */

  4.   /* add user code end 1 */

  5.   /* system clock config. */
  6.   wk_system_clock_config();

  7.   /* config periph clock. */
  8.   wk_periph_clock_config();

  9.   /* nvic config. */
  10.   wk_nvic_config();

  11.   /* timebase config. */
  12.   wk_timebase_init();

  13.   /* usart1 already supports printf. */
  14.   /* init usart1 function. */
  15.   wk_usart1_init();

  16.   /* init adc1 function. */
  17.   wk_adc1_init();

  18.   /* add user code begin 2 */

  19.   /* add user code end 2 */

  20.   while(1)
  21.   {
  22.     /* add user code begin 3 */
  23.     adc_ordinary_channel_set(ADC1, ADC_CHANNEL_1, 1, ADC_SAMPLETIME_239_5);
  24.    
  25.     adc_ordinary_software_trigger_enable(ADC1, TRUE);
  26.    
  27.     while(adc_flag_get(ADC1, ADC_CCE_FLAG) == RESET);
  28.    
  29.     printf("adc data pa1:%d\r\n", adc_ordinary_conversion_data_get(ADC1));
  30.    
  31.    
  32.     adc_ordinary_channel_set(ADC1, ADC_CHANNEL_2, 1, ADC_SAMPLETIME_239_5);
  33.    
  34.     adc_ordinary_software_trigger_enable(ADC1, TRUE);
  35.    
  36.     while(adc_flag_get(ADC1, ADC_CCE_FLAG) == RESET);
  37.    
  38.     printf("adc data pa2:%d\r\n", adc_ordinary_conversion_data_get(ADC1));
  39.    
  40.    
  41.     adc_ordinary_channel_set(ADC1, ADC_CHANNEL_3, 1, ADC_SAMPLETIME_239_5);
  42.    
  43.     adc_ordinary_software_trigger_enable(ADC1, TRUE);
  44.    
  45.     while(adc_flag_get(ADC1, ADC_CCE_FLAG) == RESET);
  46.    
  47.     printf("adc data pa3:%d\r\n", adc_ordinary_conversion_data_get(ADC1));
  48.    
  49.     wk_delay_ms(1000);

  50.     /* add user code end 3 */
  51.   }
  52. }

7将ADC引脚接以下电压,
ADC CH1(PA1引脚)接3.3V
ADC CH2(PA2引脚)接1.6V
ADC CH3(PA3引脚)接0V
8在MDK5上编译,并下载代码到AT32F403A MCU 上
9复位运行AT32F403A MCU,用串口助手观看打印信息,ADC数据每1秒钟转换一次
5c646e6885b08bed500d7c43193e1b21

AT32 WorkBench常用功能32--AT32F403A ADC普通组转换多通道配置(软件切换通道,不用DM.zip

557.24 KB, 下载次数: 3

您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部