[AT32 WorkBench] AT32 WorkBench常用功能37--AT32F435 ADC抢占组转换多通道配置

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

AT32 WorkBench常用功能37--AT32F435 ADC抢占组转换多通道配置

ADC抢占组转换多个通道
本文主要介绍如何基于AT32 WorkBench配置ADC的抢占组,转换多个通道,并通过软件读取转换的数据
转换时序
42ff835f5352a4b3d04dc685ebff9747
硬件环境
  • AT-START-F435
软件环境
  • AT32 Workbench
  • MDK5
  • 串口助手

配置步骤
1打开AT32 WorkBench新建AT32F435工程
2bc22a04d76ed06107ef05961342ce4f

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

2.2 打开时钟配置
375c5cfedf29a44629afb727b28809ce

3 配置ADC模式和分频
9c62dcc037f6d250400b3851c453a81e

4配置抢占组转换ADC CH1(PA1引脚)、ADC CH2(PA2引脚)、ADC CH3(PA3引脚)
8946af88bb45102cdf52841d0bd6a7ab

5配置串口打印
5.1配置USART1
df39c2bc10e866dbacfe7199f2acde2d

5.2 USART1引脚配置成PA9
119adc09bd1135d68cd401045fe7b575

5.3 开启串口打印
d059510340c84a9ca02372d3f8c9490b

6点击“生成代码”生成MDK5代码工程
c3f4efdd24352e150ceb74ff26b5942f

7配置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 adc-common function. */
  17.   wk_adc_common_init();

  18.   /* init adc1 function. */
  19.   wk_adc1_init();

  20.   /* add user code begin 2 */

  21.   /* add user code end 2 */

  22.   while(1)
  23.   {
  24.     /* add user code begin 3 */
  25.     adc_preempt_software_trigger_enable(ADC1, TRUE);
  26.    
  27.     while(adc_flag_get(ADC1, ADC_PCCE_FLAG) == RESET);
  28.     adc_flag_clear(ADC1, ADC_PCCE_FLAG);
  29.    
  30.     printf("adc data  pa1:%d  pa2:%d  pa3:%d\r\n", adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1), adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2), adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3));
  31.    
  32.     wk_delay_ms(1000);
  33.     /* add user code end 3 */
  34.   }
  35. }


8将ADC引脚接以下电压
ADC CH1(PA1引脚)接3.3V
ADC CH2(PA2引脚)接1.6V
ADC CH3(PA3引脚)接0V

9在MDK5上编译,并下载代码到AT32F435 MCU 上

10复位运行AT32F435MCU,用串口助手观看打印信息,ADC数据每1秒钟转换一次
71fdbba31e6fb85a8268d56f178d994b

AT32 WorkBench常用功能37--AT32F435 ADC抢占组转换多通道配置.zip

605.76 KB, 下载次数: 0

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

本版积分规则

198

主题

304

帖子

17

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

198

主题

304

帖子

17

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