哪位大神帮个忙,程序如下,就是读的不对。
/**********************************************************************************/
int main(void)
{
uint32_t sj;
FlagStatus bz=0;
systick_config();
rcu_deinit(); //复位RCU
rcu_system_clock_source_config(RCU_CKSYSSRC_PLL); //系统时钟CK_SYS为PLL时钟 最高108M
rcu_pll_config(RCU_PLLSRC_HXTAL,8); //外部晶振作为PLL时钟,8倍频 12*8
rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1); //系统时钟1分频作为AHB时钟
rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV1); //AHB时钟1分频作为APB2时钟
rcu_osci_on(RCU_HXTAL);
rcu_osci_on(RCU_PLL_CK);
rcu_periph_clock_enable(RCU_GPIOE); //使能外设时钟 GPIOE
gpio_init(GPIOE,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_3); //GPIO参数初始化
adcInit();
while(1)
{
adc_software_trigger_enable(ADC1, ADC_REGULAR_CHANNEL); //启动转换
while(!bz)
bz=adc_flag_get(ADC1,ADC_FLAG_EOC); //获取转换结束标志位
sj=adc_regular_data_read(ADC1);
adc_flag_clear(ADC1,ADC_FLAG_STRC); //清除转换开始标志位
if(sj>1000)
gpio_bit_set(GPIOE,GPIO_PIN_3);
else
gpio_bit_reset(GPIOE,GPIO_PIN_3);
delay_1ms(1);
}
}
/******************************************************************/
void adcInit(void)
{
rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV12); //配置ADC时钟 最大14M APB2时钟12分频为8M
rcu_periph_clock_enable(RCU_ADC1); //使能ADC1时钟
gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_10MHZ,GPIO_PIN_2); //PA2模拟输入
adc_deinit(ADC1); //复位ADC外设
adc_special_function_config(ADC1,ADC_CONTINUOUS_MODE, DISABLE); //禁止连续模式
adc_special_function_config(ADC1,ADC_SCAN_MODE, DISABLE); //禁止扫描模式
adc_discontinuous_mode_config(ADC1,ADC_CHANNEL_DISCON_DISABLE,1); //间断模式禁能
adc_external_trigger_source_config(ADC1, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULA R _NONE); //配置ADC外部触发源 软件触发
adc_external_trigger_config(ADC1, ADC_REGULAR_CHANNEL, ENABLE); //配置ADC外部触发 规则通道组 使能
adc_data_alignment_config(ADC1, ADC_DATAALIGN_RIGHT); //配置ADC数据对齐方式 低位对齐
adc_channel_length_config(ADC1, ADC_REGULAR_CHANNEL, 1); //配置规则通道组或注入通道组的长度(1路AD) 规则通道组
adc_regular_channel_config(ADC1, 0, ADC_CHANNEL_2, ADC_SAMPLETIME_55POINT5); //配置ADC规则通道组 通道2 采样时间55.5周期
adc_mode_config(ADC_MODE_FREE); //配置ADC模式 ADC0和ADC1运行在独立模式
adc_enable(ADC1); //使能ADC外设
delay_1ms(1); //使能后必须不少于20us的延时
adc_calibration_enable(ADC1); //ADC校准复位
//adc_dma_mode_enable(ADC1); //ADC_DMA请求使能
}
/******************************************************************/ |