select326 发表于 2018-4-2 10:24:50

butterflyspring 发表于 2018-4-2 10:17
中断首先需要各个时钟开启,GPIO功能使能,中断开启,优先级开启.实在找不到,先调试好的代码,查看寄存器,再调 ...

谢谢,按照这个思路我再查查

wenyangzeng 发表于 2018-4-2 10:52:06

select326 发表于 2018-4-2 10:09
我是新手,还请指点


void EXT0_IRQHandler(void)
{

if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
   EXTI_ClearITPendingBit(EXTI_Line0);
               
}


}

select326 发表于 2018-4-2 11:26:32

wenyangzeng 发表于 2018-4-2 10:52
void EXT0_IRQHandler(void)
{




void EXTI4_IRQHandler(void)
{
        delay_ms(10);//消抖

        EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE4上的中断标志位
}

我在这里面打断点,无法触发按键没任何响应。。。

wenyangzeng 发表于 2018-4-2 11:47:47

select326 发表于 2018-4-2 11:26
void EXTI4_IRQHandler(void)
{
        delay_ms(10);//消抖


EXTI_GenerateSWInterrupt(EXTI_Line4);
就可以判断EXTI4中断配置是否正确

MrJiu 发表于 2018-4-2 11:56:38

select326 发表于 2018-4-2 11:26
void EXTI4_IRQHandler(void)
{
        delay_ms(10);//消抖


牛逼。。。中断里面硬件延时10ms。。。膜拜!!!

select326 发表于 2018-4-2 13:05:46

本帖最后由 select326 于 2018-4-2 13:10 编辑

MrJiu 发表于 2018-4-2 11:56
牛逼。。。中断里面硬件延时10ms。。。膜拜!!!
问题是,都不执行中断里面的代码。。。。
再说了,从正点原子拿的例子拿的代码

miracle533 发表于 2018-4-2 15:46:29

while(1)里边就一个延时函数吗?
想进入中断的话我觉得while里边起码要有个判断按键按下的函数吧,要记得加上消抖。

toofree 发表于 2018-4-2 23:16:37

中断中延时10ms,这个不应该。但是你说的不进中断,那可能另有问题。
void EXTI4_IRQHandler(void)
{
        delay_ms(10);//消抖

        EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE4上的中断标志位
}

经过查看你的程序,你的外部中断使能在哪里?
EXTI_InitStructure.EXTI_LineCmd = ENABLE;

加上使能试试,见下图。




select326 发表于 2018-4-3 09:48:16

toofree 发表于 2018-4-2 23:16
中断中延时10ms,这个不应该。但是你说的不进中断,那可能另有问题。
void EXTI4_IRQHandler(void)
{


这个确实没有。但是,正点原子的例子是可以执行的。
后来我比较了下,我发下一个RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
有这句,中断就能执行,没有的话,原子的例子也不能中断。很奇怪,串口和中断有什么关系?

wolfgang2015 发表于 2018-4-3 11:30:52

按键这不执行简单得就两个问题:
1、中断未打开;
2、中断开错了;

如果深入你会发现还有一个问题会造成无按键中断产生:
就是中断的映射位与其他中断映射位冲突。
页: 1 [2] 3
查看完整版本: STM32F103ZE 按键中断不执行