怎么把ADC各函数都放到.c文件,然后在主函数调用

2019-07-14 23:15发布

ADC的程序没有问题,采回了AD值。新建一个adc.c文件就不能采ad值了。
目标:把ADC配置函数、中断服务函数都放到adc.c文件中,按照我的方式处理后,采不到AD,好像是进不了中断
我的做法:新建adc.c文件并加入工程中;新建adc.h文件声明void ADC_Configuration(void);  uint16_t ADC1_sample(void);然后怎么就进不去中断了呢?
adc.c文件内容:
#include "STM32f10x.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_rcc.h"
#include "misc.h"

static uint16_t ADC_Value;
static volatile int ad_over;

void ADC_Configuration()
{
        
}


void ADC1_2_IRQHandler(void)
{
        
    while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
                ADC_Value=ADC_GetConversionValue(ADC1);
                ad_over=1;
          ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
}

uint16_t ADC1_sample(void)
{
//         ADC_Cmd(ADC1, ENABLE);
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
        while(1)
        {
                if(ad_over)
                {
                        ad_over=0;
                        break;
                }
        }
        return ADC_Value;
}

下面是adc.h文件的内容:
#ifndef __ADC_H
#define __ADC_H

#include "stdint.h"

void ADC_Configuration(void);

uint16_t ADC1_sample(void);


#endif

下面是主函数main.c文件内容:

#include "pbdata.h"
#include "adc.h"

unsigned char Buffer[2];

int main(void)
{
        u16 ad;
        SystemInit();

        while(1)
        {
                        ad = 0;
                        ad=ADC1_sample();
                        ad=(3.3/4095)*ad*1000;
                        Buffer[0]=ad/100;
                        Buffer[1]=ad%100;
                        SysTick_delay_ms(800);
        }
}
请问我哪里出了问题



原先程序是这样的,可以正常运行
void ADC_Configuration()在main.c文件中
void ADC1_2_IRQHandler(void)和uint16_t ADC1_sample(void);在stm32f10x_it.c中
程序可以正常运行,采到AD值。我把他们放的adc.c文件就不行了。
  • void ADC_Configuration(void)
  • {
  •         /* Initialize the ADC1 according to the ADC_InitStructure members */
  • }


复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。