AT32 WorkBench常用功能36--AT32F403A ADC抢占组转换多通道配置
ADC抢占组转换多个通道
本文主要介绍如何基于AT32 WorkBench配置ADC的抢占组,转换多个通道,并通过软件读取转换的数据
转换时序
硬件环境
软件环境
配置步骤
1打开AT32WorkBench新建AT32F403A工程
2配置系统时钟(如果使用默认内部HICK,跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
2.2 打开时钟配置
3配置抢占组转换ADC CH1(PA1引脚)、ADC CH2(PA2引脚)、ADC CH3(PA3引脚)
4配置串口打印
4.1配置USART1
4.2 USART1引脚配置成PA9
4.3 开启串口打印
5点击“生成代码”生成MDK5代码工程
6配置ADC抢占通道转换相关应用代码
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 adc1 function. */
- wk_adc1_init();
- /* add user code begin 2 */
- /* add user code end 2 */
- while(1)
- {
- /* add user code begin 3 */
- adc_preempt_software_trigger_enable(ADC1, TRUE);
-
- while(adc_flag_get(ADC1, ADC_PCCE_FLAG) == RESET);
- adc_flag_clear(ADC1, ADC_PCCE_FLAG);
-
- 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));
-
- wk_delay_ms(1000);
- /* add user code end 3 */
- }
- }
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秒钟转换一次
|