初级会员

- 积分
- 55
- 金钱
- 55
- 注册时间
- 2018-5-22
- 在线时间
- 9 小时
|
5金钱
我用的是stm32精英板。在学习完ADC转换之后,我尝试着在原子哥给的例程上加以稍微的改进,改进内容如下。
首先是在adc的初始化函数中(即Adc_Init()),增加了中断的初始化部分,代码如下:
NVIC_InitTypeDef ABC;
ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE); ABC.NVIC_IRQChannel=ADC1_2_IRQn;
ABC.NVIC_IRQChannelCmd=ENABLE;
ABC.NVIC_IRQChannelPreemptionPriority=0;
ABC.NVIC_IRQChannelSubPriority=0;
NVIC_Init(&ABC);
之后是定义了中断服务函数,代码如下:
void ADC1_2_IRQHandler()
{
if(ADC_GetITStatus(ADC1,ADC_IT_EOC))
{
LED1=0;
delay_ms(1000);
}
ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);
LED1=1;
delay_ms(1000);
}
其他的地方就没有改动了,跟例程是一模一样的。
实验现象是:按下重置按键之后,屏幕先开始是白色的,同时了绿色的led灯会一亮一灭。
之后屏幕显示字符,同时绿色的led再一次一闪一灭,之后就没有变化了。
红色的led灯至始至终没有亮过。屏幕上显示的字符一直是如图所示的样子,也是一直没有变化。
当然,不使能中断之后,程序就跟adc转换一样了。
请各位大神赐教,到底是哪儿出现了问题?感觉就好像程序一直陷入了中断函数中出不来的样子。
|
|