OpenEdv-开源电子网

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

stm32外部中断服务函数进不去,求教

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
发表于 2013-12-22 19:47:35 | 显示全部楼层 |阅读模式

#include "stm32f10x.h"

void gpio_init()//PA0为外部中断触发脚,PA2控制led
{
 GPIO_InitTypeDef GPIO_InitStructure; 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA, &GPIO_InitStructure);

 GPIO_ResetBits(GPIOA , GPIO_Pin_2);
}

void EXTI_init()//PA0与EXTI_Line0连通
{
 EXTI_InitTypeDef EXTI_InitStructure;
 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // 管脚选择
 EXTI_ClearITPendingBit(EXTI_Line0);
 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;// EXTI_Trigger_Rising
 EXTI_InitStructure.EXTI_Line = EXTI_Line0;
 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
 EXTI_Init(&EXTI_InitStructure); 
}

void NVIC_Config(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
 NVIC_InitStructure.NVIC_IRQChannel = EXTI_Line0; //通道
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
}

int main(void)
{
 gpio_init();
 EXTI_init();
 NVIC_Config();
 while(1);
}
为什么外部中断服务函数进不去呢?

有时间出去转转
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-12-22 19:57:51 | 显示全部楼层
看似正确。
仿真看下,没看到你的中断服务函数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 20:22:39 | 显示全部楼层
void EXTI0_IRQHandler(void)
{
if( EXTI_GetITStatus(EXTI_Line0) != RESET )
{
EXTI_ClearITPendingBit(EXTI_Line0);

GPIO_SetBits(GPIOA , GPIO_Pin_2);

}
这是中断服务函数,我硬件仿真过,进不来
有时间出去转转
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-12-22 20:27:37 | 显示全部楼层
你的PA0有外部上拉电阻么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 20:32:05 | 显示全部楼层
            


有时间出去转转
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 20:42:54 | 显示全部楼层
是不是中断优先级设置有问题啊?
有时间出去转转
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 20:49:25 | 显示全部楼层
其实NVIC我不太明白,是不是设置不对啊?
有时间出去转转
回复 支持 反对

使用道具 举报

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
发表于 2013-12-22 20:57:12 | 显示全部楼层
NVIC_IRQChannel =EXTI0——IRQn;试试。。
回复 支持 反对

使用道具 举报

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
发表于 2013-12-22 20:57:40 | 显示全部楼层
打错了EXTI0_IRQn
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 21:07:59 | 显示全部楼层
还是不行
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-22 21:20:14 | 显示全部楼层
EXTI_Line0和EXTI0_IRQn只是在不同版本的库里面的不同叫法
有时间出去转转
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-12-22
在线时间
0 小时
 楼主| 发表于 2013-12-23 19:47:54 | 显示全部楼层
有人遇到这种情况没?纠结了一天了啊~~~
有时间出去转转
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-6-1
在线时间
11 小时
发表于 2016-6-12 19:41:36 | 显示全部楼层
问一下,最后这个解决了么。我也没进去呢
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-3
在线时间
7 小时
发表于 2016-8-3 11:51:07 | 显示全部楼层
试试把速度调快一点
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2016-7-21
在线时间
18 小时
发表于 2016-8-3 18:20:50 | 显示全部楼层
void EXTI2_IRQHandler(void)
{
        delay_ms(10);
        if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0)//
                GPIO_SetBits(GPIOE,GPIO_Pin_5);
        EXTI_ClearITPendingBit(EXTI_Line2);


}




我也不知道   第三句那样写行不行       你看一下  这个的第三句。。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-8-4
在线时间
2 小时
发表于 2019-8-4 16:10:31 | 显示全部楼层
我也是类似问题,按键中断服务进不去
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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