我正在使用STM8S103F2P这个芯片, CPU没有使用外部晶振, 功能主要是读取电池电压, 我使用是 PD3 / AIN4 这个引脚,
程序一直进入读ADC中断。进入中断读到采集值为0.
程序如下:
main.c
--------------------------------------------------------
/* Includes ------------------------------------------------------------------*/
#include quot;stm8s.h quot;
uint16_t Conversion_Value = 0;
sta
tic void ADC_Config()
{
GPIO_Init(GPIOC, (GPIO_Pin_TypeDef)GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(GPIOC, (GPIO_Pin_TypeDef)GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST);
/* Init GPIO for ADC2 */
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
/* De-Init ADC peripheral*/
ADC1_DeInit();
/* Init ADC2 peripheral */
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_9, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL9, DISABLE);
/* Enable EOC interrupt */
ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE);
/* Enable general interrupts */
enableInterrupts();
/*Start Conversion */
ADC1_StartConversion();
}
void main(void)
{
ADC_Config();
/* Infinite loop */
while (1)
{
}
}
------------------------------------------------------------
stm8s_it.c
----------------------------------------------------------------
INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
/* Get converted value */
Conversion_Value = ADC1_GetConversionValue();
ADC1_ClearITPendingBit(ADC1_IT_EOC);
}