STM8S103F2P上ADC不功能
我正在使用STM8S103F2P这个芯片, CPU没有使用外部晶振, 功能主要是读取电池电压, 我使用是 PD3 / AIN4 这个引脚,
程序一直进入读ADC中断。进入中断读到采集值为0.
程序如下:
main.c
--------------------------------------------------------
/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"
uint16_t Conversion_Value = 0;
static 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);
}
RE:STM8S103F2P上ADC不功能
Conversion_Value = ADC1_GetConversionValue();ADC1_ClearITPendingBit(ADC1_IT_EOC);
楼主将这两句顺序调一下,先清除标志位,再读数据
ADC1_ClearITPendingBit(ADC1_IT_EOC);
Conversion_Value = ADC1_GetConversionValue();
RE:STM8S103F2P上ADC不功能
我明天测试一下,版主,再向你请教一个问题, STM8S103F2P 有AIN2,AIN3,AIN4,AIN5,AIN6 ,5个模拟输入,多个同时工作,如何进行配置和读取啊?
RE:STM8S103F2P上ADC不功能
版主,我今天按照你的方法对调了一下,进行测试了,还是跟以前一样。无法正常工作。RE:STM8S103F2P上ADC不功能
我现在使用单次进行读,可以正常工作了,但读到转换值,没有什么变化, 我输入电压到AIN4 是在0.5V到1.1V之间变化的,但读到值确一直是377 - 340 之间。 这个是什么问题啊?
页:
[1]