OpenEdv-开源电子网

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

有关外部中断的求助

[复制链接]

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2014-12-9 12:58:48 | 显示全部楼层 |阅读模式
5金钱
现在在PD8和PD9接两个开关,用外部中断控制两个LED反转来做外部中断实验,设置和中断函数如下,
void EXTIX_Init(void)
{
 Ex_NVIC_Config(GPIO_D,8,FTIR); //PD8,下降沿触发
 Ex_NVIC_Config(GPIO_D,9,FTIR); //PD9,下降沿触发
 MY_NVIC_Init(2,0,EXTI9_5_IRQn,2); 
 }
void EXTI9_5_IRQHandler(void)
{
if((EXTI->R&0x100)==1)     //PD8发生中断
   { 
    LED0=!LED0; 
    EXTI->R=1<<8; //清除中断标志
   }  
if((EXTI->R&0X200)==1)    //PD9发生中断
   { 
    LED1=!LED1; 
    EXTI->R=1<<9; //清除中断标志
   }  
}
开关初始化如下:
void key_Init (void)     

 RCC->APB2ENR|=1<<5;       //PD时钟使能
 GPIOD->CRH&=0XFFFFFF00;   
 GPIOD->CRH|=0X00000088;   //PD8和PD9上下拉输入
 GPIOD->ODR|=3<<8;         //PD.8.9上拉
}
LED初始化就是原子一样的,也是在战舰开发板上引出的PD8,PD9,
本人刚学STM32不久,现在就是中断不起作用,PD8,PD9开关接地,控制不了两个LED灯的亮灭,不知那里设置的不对,请大家指导一下,谢谢!

最佳答案

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

if((EXTI->R&0x100)==1)  ,这个是个病句。 永远不可能成立。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-9 12:58:49 | 显示全部楼层
if((EXTI->R&0x100)==1)  ,这个是个病句。
永远不可能成立。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
 楼主| 发表于 2014-12-10 08:48:16 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子明白了!
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
 楼主| 发表于 2015-12-28 08:43:55 | 显示全部楼层
EXTI->PR=1<<2;
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 18:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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