单片机/MCU论坛
直播中

李小龙

未满1年用户 4经验值
擅长:嵌入式技术
私信 关注
[问答]

gd32f130代码写好ADC后,运行发现ADC的各个寄存器值没有改变,后续循环判断eoc的位也没有置1

void ADC_init(void)
{
//1开时钟 //PA1->j4->ADC_IN1
rcu_periph_clock_enable(ADC);
//设置预分频值
rcu_adc_clock_config(RCU_ADC_CKAPB2_DIV8);
rcu_periph_clock_enable(RCU_GPIOA);
//2配置为模拟模式gpio_mode_set(GPIOA,GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_1);
//清除状态
adc_deinit();
//配置特殊寄存器 禁用扫描模式 和 连续模式
adc_special_function_config(ADC_SCAN_MODE,DISABLE);
adc_special_function_config(ADC_CONTINUOUS_MODE,DISABLE);
//5 单通道采集 通道长度为1
adc_channel_length_config(ADC_REGULAR_CHANNEL,1);
adc_regular_channel_config(0,ADC_CHANNEL_1,ADC_SAMPLETIME_239POINT5);
adc_external_trigger_config(ADC_REGULAR_CHANNEL,ENABLE);
//adc外部触发源 CTL1的17 18 19 位是设置触发源 全1为软件触发
adc_external_trigger_source_config(ADC_REGULAR_CHANNEL,0xe0000);
adc_data_alignment_config(ADC_DATAALIGN_RIGHT)
//ADC使能生效
adc_enable();
//ADC校验
adc_calibration_enable();
delay_1ms(100);
//ADC软件触发
//adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
//ADC_CTL1 |= ADC_CTL1_SWRCST;
}
第一次接触gd32的板子还不是很熟练,麻烦各位大佬帮忙看一下 谢谢了

回帖(1)

张虎豹

2024-3-27 18:11:29
ADC_CFGR1 &= ~ADC_CFGR1_SCANDIR;
ADC_CFGR1 &= ~ADC_CFGR1_CONT;
  //6 设置通道声明   
  adc_regular_channel_config(ADC, 0, ADC_CHANNEL_1, ADC_SAMPLETIME_239POINT5);
  //7 开启ADC converting alternate usage enabled          ADC_ADCx_ADC_INIT(ADC);   
  
  //8 开启ADC时钟
  ADC_CTL1(ADC) |= ADC_CTL1_ADCON;
  
  //9 等待ADC稳定
  delay_us(2);

}

void ADC_start(void){
  //10 开始ADC转换
  ADC_CTL1(ADC) |= ADC_CTL1_ADCON;
}

void ADC_stop(void){
  //11 停止ADC转换
  ADC_CTL1(ADC) &= ~ADC_CTL1_ADCON;
}

void ADC_wait_eoc(void){
  //12 等待转换完成
  while(!(ADC_STAT(ADC) & ADC_STAT_EOC));
}

uint16_t ADC_get_result(void){
  //13 读取转换结果
  return ADC_RDATA(ADC);
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分