打印
[STM32F1]

stm32简单的外部中断程序怎么实现不了?

[复制链接]
1129|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
关关|  楼主 | 2015-6-8 10:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
目的是想让KET2作为外部中断,使LED发生变化,下载到板子里怎么没有任何反应?
另外,关于中断的分组自己也好迷,如何确定是哪一组的?每组的写法是什么?写中断服务函数的时候为什么有的可以一起写有的却要单独写一个?
下面是我的程序,是HARDWARE里的.c程序,帮我看看是哪的问题吧,谢谢各位啦!
#include<stm32f10x_lib.h>
#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"  
//外部中断2服务程序
void EXTI2_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY2==0)         //按键2
        {
                LED0=!LED0;
                LED1=!LED1;       
        }
        EXTI->PR=1<<2;  //清除LINE2上的中断标志位
}
void EXTIX_Init(void)
{
        RCC->APB2ENR|=1<<6;     //使能PORTE时钟
        JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD   
        GPIOE->CRL&=0XFFFFF0FF;//PE2设置成输入          
        GPIOE->CRL|=0X00000800;                                      
        GPIOE->ODR|=1<<2;       
        Ex_NVIC_Config(GPIO_E,2,FTIR); //下降沿触发
        MY_NVIC_Init(2,2,EXTI2_IRQChannel,2);    //抢占2,子优先级2,组2
}
沙发
mark0668| | 2015-6-8 11:03 | 只看该作者
调试下能不能进入中断函数里面就知了

使用特权

评论回复
板凳
关关|  楼主 | 2015-6-8 11:19 | 只看该作者
本帖最后由 关关 于 2015-6-8 11:22 编辑
mark0668 发表于 2015-6-8 11:03
调试下能不能进入中断函数里面就知了

我不太会调试,怎么设置变量的值?就是我想让KEY2=0,看能不能就如中断。我记得是在这儿修改的,怎么设置不成了??

QQ图片20150608112232.png (13.62 KB )

QQ图片20150608112232.png

使用特权

评论回复
地板
mark0668| | 2015-6-8 11:22 | 只看该作者
关关 发表于 2015-6-8 11:19
我不太会调试,怎么设置变量的值?就是我想让KEY2=0,看能不能就如中断

你按下按键不就等0了吗?

使用特权

评论回复
5
关关|  楼主 | 2015-6-8 11:27 | 只看该作者
mark0668 发表于 2015-6-8 11:22
你按下按键不就等0了吗?

0 进不了中断服务函数,最后就停在delay函数这了

2.png (21.33 KB )

2.png

使用特权

评论回复
6
mark0668| | 2015-6-8 12:16 | 只看该作者
按你代码看应该没什么问题的,再确认下你按键按下是不是低电平?

使用特权

评论回复
7
关关|  楼主 | 2015-6-9 09:29 | 只看该作者
mark0668 发表于 2015-6-8 12:16
按你代码看应该没什么问题的,再确认下你按键按下是不是低电平?

#include"key.h"
#include"exti.h"
int main(void)
{
        u8 t;
        Stm32_Clock_Init(9);
        delay_init(72);
        uart_init(72,9600);//串口初始化
        KEY_Init();
        EXTIX_Init();
        while(1)
        {
                printf("OK\n");
                delay_ms(1000);
        }
}
这是我USER中的.c程序,跟这个有关系吗?我按下按键的确是低电平,之前的按键实验就是这样做的。

使用特权

评论回复
8
皈依| | 2015-6-9 09:50 | 只看该作者
你在中断函数中打个点,看看能不能停在中断里面,如果没有停下来,证明没有对应好中断。
你把IT.C文件贴出来看看。

使用特权

评论回复
9
yinhaix| | 2015-6-9 09:57 | 只看该作者
初始化有问题

使用特权

评论回复
10
关关|  楼主 | 2015-6-11 10:49 | 只看该作者
mark0668 发表于 2015-6-8 12:16
按你代码看应该没什么问题的,再确认下你按键按下是不是低电平?

找到问题了,是我自己定义的中断口和按键设置的不对应,谢谢你啦~~

使用特权

评论回复
11
关关|  楼主 | 2015-6-11 10:49 | 只看该作者

找到问题了,是定义的中断口和按键设置的不对应

使用特权

评论回复
12
关关|  楼主 | 2015-6-11 10:50 | 只看该作者
皈依 发表于 2015-6-9 09:50
你在中断函数中打个点,看看能不能停在中断里面,如果没有停下来,证明没有对应好中断。
你把IT.C文件贴出 ...

找到问题了,是我定义的中断口和按键设置的不对应,谢谢你啦~~

使用特权

评论回复
13
hshhshsh| | 2015-6-11 12:53 | 只看该作者
你是直接定义的中断程序……我之前直接定义的中断程序,发现与库中exti.c中的定义有重复,导致直接编译不过去,只好把这些定义全部复制到库文件中,才编译过去。不知你有无这个现象

使用特权

评论回复
14
yinhaix| | 2015-6-11 15:42 | 只看该作者

使用特权

评论回复
15
皈依| | 2015-6-11 16:07 | 只看该作者
关关 发表于 2015-6-11 10:50
找到问题了,是我定义的中断口和按键设置的不对应,谢谢你啦~~

解决啦就好~

使用特权

评论回复
16
FireRiver9| | 2015-6-11 21:09 | 只看该作者
是我定义的中断口和按键设置的不对应

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

531

帖子

10

粉丝