OpenEdv-开源电子网

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

战舰版 Key0 按键中断问题 请教大师们,感激不尽!

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2021-10-3
在线时间
1 小时
发表于 2021-10-7 15:24:21 | 显示全部楼层 |阅读模式
1金钱
中断不发生是什么原因。 代码如下。 Key0 接PE4上。PE4初始化为输入模式,上拉,Line4设置为 下降沿触发。



#include "stm32f10x.h"
#include "core_cm3.h"

#include "usart.h"
#include "delay.h"

int xt=0;
//void int_enable(void);
void EXTI4_IRQHandler(void)
{
        printf("key0 pressed!\r\n");
        GPIOE->ODR&=~(0x1<<5);
        GPIOE->ODR|=xt<<5;
        xt^=0x1;
        EXTI->PR|=0x1<<4;  //清中断线4       
}       
       
int main()
{
        //pe.4 line4 interrupt
        //xt=0;
        uart_init(72,115200);
        int i=3000000;
        //初始化 PE.4  输入模式 上拉  Key0 按键下触发中断
        RCC->APB2ENR        |= (0x1<<6);
        GPIOE->CRL         =        (GPIOE->CRL & ~(0xf<<16))| (0x8<<16);       
        GPIOE->ODR        |=        0x1<<4 ;
               
        //IO复用 使用AFIO时钟
        RCC->APB2ENR        |=        0x1;   //enable rcc AFIO
        AFIO->EXTICR[1]        =         (AFIO->EXTICR[1] & ~(0xf))|0x4;
        EXTI->FTSR                        |=                0x1<<4;  //下降沿触发
        EXTI->IMR                                |=                 0x1<<4; //使能中断
       
        int tmp;
        tmp=SCB->AIRCR;
        SCB->AIRCR                        =        (tmp & 0xf8ff)|(0x5<<8)|0x05fa0000;  //group 2
        NVIC->IP[4]                        =        0x8<<4;          //设置优先级
        NVIC->ISER[0]                |=                0x1<<4;         //使能中断
       
        //led: pe.5  output   LED PE5初始化
        GPIOE->CRL=(GPIOE->CRL & ~(0xf<<20))|(0x3<<20);
        GPIOE->ODR|=(0x1<<5);
        GPIOE->ODR&=~(0x1<<5);

        while(1)
        {
                        i=30000000;
                        printf("hello world! %d\r\n",xt);                       
                        for(;i--;);
        }
        return 0;
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-10-8 10:34:21 | 显示全部楼层
可以参考下原子的外部中断例程
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2021-10-8 12:09:52 | 显示全部楼层
仿真调试看看有没有进中断,没有进去那就需要考虑:1、配置对不对    2、硬件上是不是真的有下降沿脉冲到了
回复

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-10-6
在线时间
4 小时
发表于 2021-10-12 16:11:10 | 显示全部楼层
不应该用下降沿触发吧,用低电平触发
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 20:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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