typedef enum
{
ADC1_EXTTRIG_TIM = (uint8_t)0x00, /**< Conversion from Internal TIM1 TRGO event */
ADC1_EXTTRIG_GPIO = (uint8_t)0x10 /**< Conversion from External interrupt on ADC_ETR pin*/
} ADC1_ExtTrig_TypeDef;
这是stm8s_adc1.h里面的定义,ADC1触发方式有两种,外部引脚触发和TIM1触发,我用TIM1触发,ADC1_ExtTriggerState也改成了ENABLE,改后的代码如下:
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);
ADC1_DeInit();ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, /*单次转换*/
ADC1_CHANNEL_0, /*目标通道*/
ADC1_PRESSEL_FCPU_D8, /*Fadc = Fcpu/8*/
ADC1_EXTTRIG_TIM, /*Timer1触发*/
ENABLE, /*使能TIM1触发*/
ADC1_ALIGN_RIGHT, /*右对齐*/
ADC1_SCHMITTTRIG_CHANNEL0, /*禁止ADC通道的施密特触发功能*/
DISABLE /*以降低IO的静态功耗*/
);
ADC1_Cmd(ENABLE);
ADC1_StartConversion();
while(ADC1_GetFlagStatus(ADC1_FLAG_EOC) == RESET);
。。。。。。
程序执行结果还是一样,永远在while()处等待,现在触发源TIM1在配置函数里已经打开了,难道TIM1需要单独配置一下吗?
|