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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版