【元能芯24V全集成电机专用开发板】+中断读取ADC转换结果编程与调试

安装完keil配套pack包之后,使用stlink进行连接,显示如下截图:

184448l3yz28vp822dyf8h

在实例程序ADC上进行实验和调试;

184448odzefksb00hzhfle

本来以为芯片上有DMA,查询手册发现没有,所以数据必须及时读取,在源文件中是用查询方式在读取ADC数据,这里我尝试使用中断方式来读取数据:

在main中添加了这样一段代码

void NVIC_Config(void)

{NVIC_InitTypeDef NVIC_InitStructure;

  NVIC_InitStructure.NVIC_IRQChannel = ADC1_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}其中标红的标识符是从以下文件中找的中断函数编号,和stm32的固件库非常相似,只是文件名不同;

184448f5zgyduf55skuzs2

从注释可以看出是ADC1的转换中断;那么还要找到对应的中断函数名;和stm32固件库类似,从启动代码中去查找:

184449w7a3r2lf1xjlewb7

中断函数一般放在myg0002_it.c文件中,要注意变量的定义和函数声明引用,不然很容易报错;这些函数定义的位置也和标准库类似,很容易找到;

void ADC1_IRQHandler (void)

{  while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

    ADCConvertedValue = ADC_GetConversionValue(ADC1);

    ADCConvertedVoltage = (ADCConvertedValue * 3.3) / 4095;

        ADC_ClearFlag(ADC1, ADC_FLAG_EOC);

}

模板工程没有打开ADC中断,所以还要在ADC设置位置添加标红语句,打开ADC转换中断:

  ADC_ChannelConfig(ADC1, ADC_Channel_2, ADC_SampleTime_239_5Cycles);



   ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);

   ADC_Cmd(ADC1, ENABLE);

因为工程本身已经设置了定时器等,所以添加这些代码再进行调试就完成了定时器周期性启动ADC的功能,可以在调试图片中看到调试界面的DR寄存器不断变化,输出的ADC结果在中断函数中不断更新赋值给全局变量ADCConvertedValue,这个测评说明了元能芯的软件开发基本类似与标准库,有基础的话,使用该芯片很容易。

184449jksbqepsne0fm8g8