你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S103F2P上ADC不功能

[复制链接]
cncz123 提问时间:2014-8-21 17:14 /
 
我正在使用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);  
 }

 
收藏 评论4 发布时间:2014-8-21 17:14

举报

4个回答
霹雳之火 回答时间:2014-8-21 19:25:54

RE:STM8S103F2P上ADC不功能

Conversion_Value = ADC1_GetConversionValue();
ADC1_ClearITPendingBit(ADC1_IT_EOC);  
楼主将这两句顺序调一下,先清除标志位,再读数据
ADC1_ClearITPendingBit(ADC1_IT_EOC);
Conversion_Value = ADC1_GetConversionValue();
cncz123 回答时间:2014-8-21 21:55:31

RE:STM8S103F2P上ADC不功能

我明天测试一下,
版主,再向你请教一个问题, STM8S103F2P 有AIN2,AIN3,AIN4,AIN5,AIN6 ,5个模拟输入,多个同时工作,如何进行配置和读取啊?
cncz123 回答时间:2014-8-22 08:53:09

RE:STM8S103F2P上ADC不功能

版主,我今天按照你的方法对调了一下,进行测试了,还是跟以前一样。无法正常工作。
cncz123 回答时间:2014-8-22 09:20:27

RE:STM8S103F2P上ADC不功能

我现在使用单次进行读,可以正常工作了,但读到转换值,没有什么变化, 我输入电压到AIN4 是在0.5V到1.1V之间变化的,但读到值确一直是377 - 340 之间。 这个是什么问题啊?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版