OpenEdv-开源电子网

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

版主求助个问题,不用库函数,自己写的外部中断能进入不能执行

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-5-8
在线时间
0 小时
发表于 2014-5-15 22:56:58 | 显示全部楼层 |阅读模式
5金钱
如下PA15上的KEY外部中断,如果根据EXTI->R值判断KEY中断,则判断语句里的语句无法执行。
void KEY_EXIT_ININT(void)
{
 
 RCC->APB2ENR|=0x01;//使能io复用时钟
 RCC->APB2ENR|=1<<2;//PA时钟

 GPIOA->CRH&=0X0FFFFFFF;
 GPIOA->CRH|=0X80000000;//上拉输入
 GPIOA->ODR|=(1<<15);

 AFIO->EXTICR[3]&=0Xffff0fff;//PA15作为中断输出
 EXTI->IMR|=1<<15;//允许线15上的中断请求
 EXTI->EMR|=1<<15;//允许线15上的中断请求
// EXTI->RTSR|=1<<15;//上升沿触发
 EXTI->FTSR|=1<<15;//下降沿触发

 MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//设置中断

}

void EXTI15_10_IRQHandler(void)
{
//AF_VOL=5;  如果不注释这个语句,可以在显示屏上看到数字“5”,说明进入了中断

if(EXTI->R&(1<<15)==1) //如果用状态寄存器判断哪根线发生了中断,则无法执行括号里面 的语句
   {
AF_VOL=9;  //无法执行这个语句
   }
  EXTI->R|=1<<15;//清除标志

}

最佳答案

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

if(EXTI->R&(1<<15)==1) 改为: if(EXTI->R&(1<<15))
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-15 22:56:59 | 显示全部楼层
if(EXTI->R&(1<<15)==1)
改为:
if(EXTI->R&(1<<15))
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-5-8
在线时间
0 小时
 楼主| 发表于 2014-5-18 13:04:12 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢哦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 02:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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