OpenEdv-开源电子网

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

ADC1外部触发信号EXTI 11的选择问题

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-11-13
在线时间
0 小时
发表于 2013-11-13 09:34:26 | 显示全部楼层 |阅读模式
    原子,我现在用用ADC1采集信号,想用外部触发信号EXTI 11线来控制,出问题了!
    问题是我用PB11作为触发信号就不能触发ADC1采集,当我用PA11触发时,就可以,这是怎么回事呢?
    初始化也都对着呢!却只有PA11可以触发,但是我们的板子是要用PB11触发ADC1的,怎么办?      求解答!!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-13 10:54:51 | 显示全部楼层
是配置问题吧?或者你电路是不是有问题?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-11-13
在线时间
0 小时
 楼主| 发表于 2013-11-13 11:11:43 | 显示全部楼层
应该不会的,我配置PA11就可以,以同样的方式配置PB11就不行了,PC11也不行。


    下面是我的ADC初始化程序,原子给看看吧。底层的那些系统函数用的都是你们例程提供的。


//初始化ADC
void  ADC_Init(void)  
{   
//先初始化IO口  
RCC->APB2ENR|=1<<2;     //使能PORTA口时钟
RCC->APB2ENR|=1<<3;     //使能PORTB口时钟    
GPIOA->CRL&=0X000000FF; //PA2、PA3、PA4、PA5、PA6、PA7 anolog输入 
GPIOB->CRH&=0XFFFF0FFF;
GPIOB->CRH|=0X00008000; //PB11 上拉/下拉输入
 
   
//通道设置    
RCC->APB2ENR|=1<<9;    //ADC1时钟使能     
RCC->APB2RSTR|=1<<9;   //ADC1复位  
RCC->APB2RSTR&=~(1<<9);//复位结束       
RCC->CFGR&=~(3<<14);   //分频因子清零  
//SYSCLK/DIV2=8M ADC时钟设置为8M,ADC最大时钟不能超过14M!  
//否则将导致ADC准确度下降!   
RCC->CFGR|=3<<14;      //8分频    
ADC1->CR1&=0XF0FFFF;   //工作模式清零   
ADC1->CR1|=6<<16;      //规则同步模式
ADC1->CR1|=1<<8;       //扫描模式 扫描选中的通道   
ADC1->CR2|=0<<1;       //单次转换模式

ADC1->CR2&=~(7<<17);     
ADC1->CR2|=6<<17;    //EXTI线PB11控制转换 
   
ADC1->CR2|=1<<20;      //使用用外部触发,必须使用一个事件来触发 
ADC1->CR2&=~(1<<11);   //右对齐   
ADC1->SQR1&=~(0XF<<20);  
ADC1->SQR1|=0X5<<20;   //6个转换在规则序列中
      
//设置通道的采样时间  
ADC1->SMPR2&=~(7<<6);   //通道2采样时间清空     
ADC1->SMPR2|=7<<6;      //通道2  239.5周期,提高采样时间可以提高精确度
ADC1->SMPR2&=~(7<<9);   //通道3采样时间清空     
ADC1->SMPR2|=7<<9;      //通道3  239.5周期,提高采样时间可以提高精确度  
ADC1->SMPR2&=~(7<<12);  //通道4采样时间清空     
ADC1->SMPR2|=7<<12;     //通道4  239.5周期,提高采样时间可以提高精确度
ADC1->SMPR2&=~(7<<15);  //通道5采样时间清空     
ADC1->SMPR2|=7<<15;     //通道5  239.5周期,提高采样时间可以提高精确度  
ADC1->SMPR2&=~(7<<18);  //通道6采样时间清空     
ADC1->SMPR2|=7<<18;     //通道6  239.5周期,提高采样时间可以提高精确度 
ADC1->SMPR2&=~(7<<21);  //通道7采样时间清空     
ADC1->SMPR2|=7<<21;  //通道7  239.5周期,提高采样时间可以提高精确度
    
ADC1->SQR3&=~(0x1f<<0);    
ADC1->SQR3|=2<<0;  //通道2      
ADC1->SQR3&=~(0x1f<<5);   
ADC1->SQR3|=3<<5;  //通道3      
ADC1->SQR3&=~(0x1f<<10);  
ADC1->SQR3|=4<<10; //通道4 
ADC1->SQR3&=~(0x1f<<15);  
ADC1->SQR3|=5<<15; //通道5 
ADC1->SQR3&=~(0x1f<<20);  
ADC1->SQR3|=6<<20; //通道6
ADC1->SQR3&=~(0x1f<<25);  
ADC1->SQR3|=7<<25; //通道7
      
ADC1->CR2|=1<<0;       //开启ADC并启动转换  
ADC1->CR2|=1<<3;       //使能复位校准    
while(ADC1->CR2&1<<3); //等待校准结束     
//该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。     
ADC1->CR2|=1<<2;       //开始AD校准      
while(ADC1->CR2&1<<2); //等待校准结束  
//该位由软件设置以开始校准,并在校准结束时由硬件清除     
ADC1->CR2|= 1<<8 ;     //使用DMA模式转换    
ADC1->CR2|=1<<22;   //启动规则转换通道
ADC1->CR2|=0<<0;       //关闭AD转换 
}
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-11-13
在线时间
0 小时
 楼主| 发表于 2013-11-13 11:17:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
应该不会,我把ADC初始化代码贴出来,你帮忙看看。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-13 21:08:38 | 显示全部楼层
应该还少了这个配置:
Ex_NVIC_Config(GPIO_B,11,RTIR);
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 08:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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