OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8397|回复: 5

又有不会的了,求解答。。。ADC中断

[复制链接]

27

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-4-29
在线时间
6 小时
发表于 2014-6-19 10:28:15 | 显示全部楼层 |阅读模式
5金钱
那个我使用模拟看门狗中断,EOC中断,所以在中断函数里需要判断是那种中断,看中断标志位,但是我还需要在主程序中判断中断转换结束,读取转换值。
所以问题出现了,如果主程序中判断中断转换结束的话就直接跳到中断中了啊,但是从中断回来怎么没有执行主程序后面的程序。所以想问一下,怎么在中断中判断EOC中断,除了中断标志位就没别的办法了吗?


ADC中断程序

void ADC1_2_IRQHandler(void)
{
delay_init();
led_init();
if(ADC_GetITStatus(ADC1, ADC_IT_AWD))    
{
PAout(8) = 0;
delay_ms(200); 
PAout(8) = 1;
delay_ms(200);
ADC_ClearITPendingBit(ADC1, ADC_IT_AWD);  
}
// if(ADC_GetITStatus(ADC1, ADC_IT_EOC))                 ***
{
PDout(2) = 0;
delay_ms(200);
delay_ms(200);  
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); 

}
}


主程序中的
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));       ****
adcz =ADC_GetConversionValue(ADC1);

标*号的两句话是不是冲突了,就是说主程序中始终停在了主程序中*号那句话呢。。。。

最佳答案

查看完整内容[请看2#楼]

你需要明白,中断进去了,意味着采集完成了,库函数我不熟悉。。。但是你可以这样 int ADC_FLAG=1; 主程序 ... while(ADC_FLAG); ADC_FLAG=1; ... 中断里做 ADC_FLAG=0;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3337
金钱
3337
注册时间
2013-5-28
在线时间
467 小时
发表于 2014-6-19 10:28:16 | 显示全部楼层
你需要明白,中断进去了,意味着采集完成了,库函数我不熟悉。。。但是你可以这样

int ADC_FLAG=1;

主程序
...
while(ADC_FLAG);
ADC_FLAG=1;
...

中断里做
ADC_FLAG=0;
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3337
金钱
3337
注册时间
2013-5-28
在线时间
467 小时
发表于 2014-6-19 11:32:54 | 显示全部楼层
但是我还需要在主程序中判断中断转换结束


好拗口,不会说点通俗易懂的语言啊,主程序中判断ADC采集结束,是不是这个意思
回复

使用道具 举报

27

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-4-29
在线时间
6 小时
 楼主| 发表于 2014-6-19 14:17:29 | 显示全部楼层
回复【2楼】聚东风:
---------------------------------
是的,抱歉语文有点不过关。有什么好方法吗?
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3337
金钱
3337
注册时间
2013-5-28
在线时间
467 小时
发表于 2014-6-19 17:49:00 | 显示全部楼层
EOC人家每采集完成1路通道给你一个中断,你自己进入中断去判断中断类型,判断完出来就是读取数值,不冲突啊
回复

使用道具 举报

27

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-4-29
在线时间
6 小时
 楼主| 发表于 2014-6-19 18:08:48 | 显示全部楼层
回复【4楼】聚东风:
---------------------------------
但是每次中断结束时我都中断标志位复位了的,那在主程序中的那个while循环能过去吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表