OpenEdv-开源电子网

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

外部中断自己修改了引脚和功能 好像工作不了

[复制链接]

7

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-8-3
在线时间
0 小时
发表于 2013-8-10 20:58:52 | 显示全部楼层 |阅读模式

void EXTI0_IRQHandler(void)
{
 delay_ms(10);//消抖
 while(PE__3==0)  //WK_UP按键
 {
  B__1=0;delay_ms(200); 
  B__1=1;delay_ms(200);      
 }  
 EXTI->R=1<<0;  //清除LINE0上的中断标志位 
}
//外部中断2服务程序
void EXTI1_IRQHandler(void)
{
 delay_ms(10);//消抖
 while(PE__2==0)  //按键KEY2
 {
  B__1=0;delay_ms(300); 
  B__1=1;delay_ms(300);
 }  
 EXTI->R=1<<1;  //清除LINE2上的中断标志位 
}
//外部中断3服务程序
void EXTI2_IRQHandler(void)
{
 delay_ms(10);//消抖
 while(PE__1==0)  //按键KEY1
 {    
  B__1=0;delay_ms(400); 
  B__1=1;delay_ms(400);
 }  
 EXTI->R=1<<2;  //清除LINE3上的中断标志位 
}
//外部中断4服务程序
void EXTI3_IRQHandler(void)
{
 delay_ms(10);//消抖
 while(PE__0==0)  //按键KEY0
 {
  B__1=0;delay_ms(500); 
  PB__1=1;delay_ms(500);
 }  
 EXTI->PR=1<<3;  //清除LINE4上的中断标志位 
}    
//外部中断初始化程序
//初始化PA0/PE2/PE3/PE4为中断输入.
void EXTIX_Init(void)
{
 GPIO_IN_Init();                              //这是自己写的引脚初始

 Ex_NVIC_Config(GPIO_E,0,FTIR);    //下降沿触发
 Ex_NVIC_Config(GPIO_E,1,FTIR);    //下降沿触发
 Ex_NVIC_Config(GPIO_E,2,FTIR);    //下降沿触发
  Ex_NVIC_Config(GPIO_E,3,FTIR);    //下降沿触发

 MY_NVIC_Init(2,3,EXTI0_IRQChannel,2); //抢占2,子优先级3,组2
 MY_NVIC_Init(2,2,EXTI1_IRQChannel,2); //抢占2,子优先级2,组2   
 MY_NVIC_Init(2,1,EXTI2_IRQChannel,2); //抢占2,子优先级1,组2   
 MY_NVIC_Init(2,0,EXTI3_IRQChannel,2); //抢占2,子优先级0,组2   
}


 


 

为什么我自己改了引脚在仿真里怎么也不正常   我上面的写法有没有问题    求高人指点!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 10:33:32 | 显示全部楼层
问题可能出在:

 GPIO_IN_Init();                              //这是自己写的引脚初始

这个函数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-8-11 20:03:18 | 显示全部楼层
void GPIO_OUT_Init(void)
{
RCC->APB2ENR|=1<<3;    //使能PORTB时钟         
GPIOB->CRL&=0XFFFFFF00; 
GPIOB->CRL|=0X00000033;//PB.0   B.1  推挽输出     
    GPIOB->ODR|=2<<0;      //PB.0   B.1  输出高
}
void GPIO_IN_Init(void)
{
RCC->APB2ENR|=1<<6;     //使能PORTE时钟
GPIOE->CRL&=0XFFFF0000; //PE0~3设置成输入,上拉   
GPIOE->CRL|=0X00008888;      
GPIOE->ODR|=0x0000000F;     //PE0~3 上拉
}






我这个函数   这样写应该没问题的吧       基本输入输出都没问题的  为什么外部中断就不行了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 20:08:38 | 显示全部楼层
回复【3楼】949727157:
---------------------------------
没错啊,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-8-11 20:22:20 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥   帮帮吧   不然外部中断这部分和没学一样的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 21:33:59 | 显示全部楼层
唯一不同的是你用的PE__3之类的宏定义,不知道是否真的有效了.
其他地方看着全是对的,只是你自己整的那一堆宏定义东西,得你自己才知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 06:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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