OpenEdv-开源电子网

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

ADC1中断进不去,贴出代码,求大神回复

[复制链接]

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
发表于 2014-6-24 07:23:01 | 显示全部楼层 |阅读模式
5金钱
/************主 函 数 *************/
void main(void)
{  
   CLK_Config();
   GPIO_Config();
   TM1642_Init();

   SegBufCha(888,1);   
   SegBufCha(888,2);
   ledCtrl (6,1); 
   displayLED ();
   Delay(1000);  
   
   ledCtrl (6,0);
   ledCtrl (0,1);
   ledCtrl (3,1);
   SegBufon();
   displayLED ();
 
   Delay(1000);
****************************ADC1.C******************
   ADC1_init();
   
   enableInterrupts();
 
   while(1)    
   { 
      Delay(10);
      SegBufCha(ADC1_Buf[0],2);
      SegBufCha(ADC1_Buf[1],1);
      Key_Scan();
      displayLED ();
   }
}

#include "main.h"


    u8 ADC_Index=0;
u32 ADC1_Buf[4];
u32 ADC1_change(u8 AIN_x)              //AD信号采集函数
{
    u8 i;
    u16 AD_data1;
    u32 ADData,AD_sum;

    for(i=0;i<10;i++)                //平均值滤波,好像没什么效果
    {
      ADC1->CSR = AIN_x&0x0F;         // 选择AD转换通道
      ADC1->CR1 |= 0x01;              // 启动AD转换
      while(!(ADC1->CSR & 0x80));    // 等待AD转换完成
      AD_data1 = ADC1->DRH;          // 左对齐时候高八位在DRH里面,低两位在DRL最低位
      //AD_data0 = ADC1->DRL;
      ADC1->CSR &= ~0x80;
      AD_sum+=AD_data1;
    }
    
    AD_sum/=10;
    ADData=AD_sum;
    return(ADData);
}
void ADC1_init(void)
{
  ADC1->CSR = 0x20;          //转换结束EOC中断ENABLE
  ADC1->CR1 = 0x40;          //设置AD转换时钟1/8,单次 转换模式
  ADC1->CR2 = 0x00;          //设置数据为左对齐
  ADC1->CR3 = 0x00;          //不使用数据缓冲
  //ADC1->TDRL = 0xff;       //关闭施密特触发器
  ADC1->CR1 |= 0x01;         //打开AD模块电源
}
*******ADC.H*********
#ifndef __ADC_H__
#define __ADC_H__
extern u8 ADC_Index;
extern u32 ADC1_Buf[4];

extern u32 ADC1_change(u8 AIN_x);
extern void ADC1_init(void);

#endif


*****************************************

 */
 INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
 {      //ADC中断处理程序
     //ADC_Index=(ADC_Index>3)?0ADC_Index+1);
      //ADC1_Buf[ADC_Index]=ADC1_change(ADC_Index+3);//ADC_Index=0~3;ADC_Index_0=ADC_AIN3
       ADC1_Buf[2]=45;
       ADC1_ClearITPendingBit(ADC1_IT_EOC);

   /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
 }



彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:23:31 | 显示全部楼层
现在进不去中断啊,求大神解答,一晚上没搞起来
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:24:30 | 显示全部楼层
我采集的十位AD,我保留8位,所以左对齐,直接去高8位
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:25:04 | 显示全部楼层
取高8位ADC1->DRH
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:26:08 | 显示全部楼层
本来是用定时器TIM2做的但是不理想,ADC1 自己EOC中断
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:27:32 | 显示全部楼层
求回复啊。。。。。。路过的大神别走啊,,看看的
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 07:29:35 | 显示全部楼层
上面TM1642什么的是数码管显示,想吧采集的电压显示在两个三段数码管上面,还有按键扫描,那些不管了,已经很好工作了,主要讨论ADC1中断的问题
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

11

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
651
金钱
651
注册时间
2012-8-1
在线时间
68 小时
发表于 2014-6-24 08:40:52 | 显示全部楼层
帮顶
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-6-24 09:49:28 | 显示全部楼层
回复【8楼】2012lc:
---------------------------------
怎么论坛这么人少啊
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

11

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
651
金钱
651
注册时间
2012-8-1
在线时间
68 小时
发表于 2014-6-24 12:43:09 | 显示全部楼层
这里讨论STM32的人多,STM8讨论的少。
STM8的ADC我没有用过,提供不了什么有用的建议了
楼主实在不行的话,不妨参考下STM8 ADC的官方库是怎样处理的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-6-24 22:56:18 | 显示全部楼层
帮顶....
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-7-2 10:32:28 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
每次我自问自答啊没错,是编译器问题,好了现在
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

11

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
651
金钱
651
注册时间
2012-8-1
在线时间
68 小时
发表于 2014-7-2 12:39:50 | 显示全部楼层
回复【12楼】cornrn:
---------------------------------
用的是哪个编译器啊,这么不完善?
回复

使用道具 举报

163

主题

1223

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2014-5-21
在线时间
339 小时
 楼主| 发表于 2014-7-2 14:17:46 | 显示全部楼层
回复【13楼】2012lc:
---------------------------------
破解不完全,重新找个IAR 4.0版本安装好后 好好滴
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

14

主题

51

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-6-10
在线时间
49 小时
发表于 2016-9-21 20:11:15 | 显示全部楼层
我也进不去,所以就进来了。。。我设定的是转换完成中断,找不到中断服务函数
回复

使用道具 举报

14

主题

51

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-6-10
在线时间
49 小时
发表于 2016-9-21 20:29:41 | 显示全部楼层
我也进不去,所以就进来了。。。我设定的是转换完成中断,找不到中断服务函数
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-5-9
在线时间
11 小时
发表于 2017-3-1 14:06:39 | 显示全部楼层
没有添加ADC中断使能    ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE);
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-3-13 22:41:29 | 显示全部楼层
顶顶顶
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-1-11
在线时间
11 小时
发表于 2017-8-1 17:00:15 | 显示全部楼层
本帖最后由 fanghaoxu 于 2017-8-1 17:02 编辑

楼主,我写的代码ADC中断也进不去,你可以把你解决问题的编译器在那下载的发个地址出来吗?

回复

使用道具 举报

10

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2015-5-19
在线时间
23 小时
发表于 2017-8-1 17:52:27 | 显示全部楼层
    while(!(ADC1->CSR & 0x80));    // 等待AD转换完成
      AD_data1 = ADC1->DRH;          // 左对齐时候高八位在DRH里面,低两位在DRL最低位
      //AD_data0 = ADC1->DRL;
你在这里已经把AD读出来了,还要进中断干嘛
回复

使用道具 举报

25

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
468
金钱
468
注册时间
2017-6-10
在线时间
66 小时
发表于 2019-1-14 10:37:19 | 显示全部楼层
cornrn 发表于 2014-7-2 14:17
回复【13楼】2012lc:
---------------------------------
破解不完全,重新找个IAR&nbsp;4.0版本安装好后&n ...

怎么会是编译器的问题呢,楼主仔细说一下啊,我的中断也进不了,配置没有什么问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 14:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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