OpenEdv-开源电子网

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

配置A1口为模拟输入后,所有的中断都进不去

[复制链接]

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-7-15
在线时间
6 小时
发表于 2015-7-15 22:31:37 | 显示全部楼层 |阅读模式
5金钱
正在学习32,然后学到ADC时,因为开发板的ADC1是测电位器电压,接在了GPIOA_Pin_1口,先不提ADC配置,一旦我在GPIO口中配置GPIOA_Mode = GPIO_Mode_AIN时,即配置A1脚为模拟输入,则我原来写的中断函数,无论是串口、定时还是外部中断全都进不去,只能在主循环里面转。如果删掉这句或者A1口不为模拟输入的话,所有中断都正常,求大神解答,,,被困了好久了,一直找不到原因,问了别人也说没遇到过。
[mw_shl_code=c,true] void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; //?¨??GPIO???????á???? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD, ENABLE); //???í*****?±?? GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1); //LED?????????? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_5; //°??ü???????? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOD, &GPIO_InitStructure); /* ?®??????*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//USART TX?è???????ì???????? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//???????????????ò?????? GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//USART RX?è???????????? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//AD???????? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//???????? GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_Init(GPIOA, &GPIO_InitStructure); }[/mw_shl_code]

[mw_shl_code=c,true]int main(void) { // u16 AD; // u8 AD_H, AD_L; RCC_Configuration(); GPIO_Configuration(); EXTI_Configuration(); USART1_Configuration(); NVIC_Configuration(); TIM2_Configuration(); // ADC_Configuration(); delay_init(72); while(1) { if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_0)==Bit_SET) GPIO_ResetBits(GPIOB,GPIO_Pin_0); else GPIO_SetBits(GPIOB,GPIO_Pin_0); if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_1)==Bit_SET) GPIO_ResetBits(GPIOB,GPIO_Pin_1); else GPIO_SetBits(GPIOB,GPIO_Pin_1); delay_ms(500);[/mw_shl_code]

最佳答案

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

已解决,只要不把 27     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; 28     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 29     GPIO_Init(GPIOA, &GPIO_InitStructure); 即不能把模拟输入配置放在子函数的底部就可,改完后程序为: void GPIO_Configuration(void) {   GPIO_InitTypeDef  ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-7-15
在线时间
6 小时
 楼主| 发表于 2015-7-15 22:31:38 | 显示全部楼层
已解决,只要不把
27
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
28
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
29
    GPIO_Init(GPIOA, &GPIO_InitStructure);
即不能把模拟输入配置放在子函数的底部就可,改完后程序为:
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;        //?¨??GPIO???????á????

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD, ENABLE);  //???í*****?±??

GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1); //LED??????????
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
  GPIO_Init(GPIOB, &GPIO_InitStructure); 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_5; //°??ü????????
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
  GPIO_Init(GPIOD, &GPIO_InitStructure); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//AD????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//????????
GPIO_Init(GPIOA, &GPIO_InitStructure);

/* ?®??????*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//USART TX?è???????ì????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//???????????????ò??????
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//USART RX?è????????????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

}


然后,求知道原因的大神解释一下吧
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-15 23:53:58 | 显示全部楼层
仿真看看。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-7-15
在线时间
6 小时
 楼主| 发表于 2015-7-16 08:22:43 | 显示全部楼层
不太会用仿真啊,不太懂仿真时应该干什么、怎么找问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-16 23:06:49 | 显示全部楼层
回复【3楼】lx10110:
---------------------------------
慢慢研究下,这个必须学
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-7-15
在线时间
6 小时
 楼主| 发表于 2015-7-17 14:17:37 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
恩,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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