6173|12

12

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

麻烦各位帮我看一下STM32 外部中断,为什么进不去中断。 [复制链接]

代码如下:
void Exit_Init(void)
{
        RCC->APB2ENR|=1<<2;     //使能PORTA时钟
        GPIOA->CRL&=0XFFFFFFF0;//设置成输入          
        GPIOA->CRL|=0X00000008;   
        GPIOA->ODR|=1<<0;           //上拉
    Ex_NVIC_Config(GPIO_A,0,FTIR);//下降沿触发
        MY_NVIC_Init(2,1,EXTI0_IRQChannel,2);//抢占2,子优先级1,组2          
}


void EXTI0_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY1==0)         //按键S5
        {
                led7 = !led7;
       
        }                 
        EXTI->PR=1<<0;  //清除LINE0上的中断标志位  
}

void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)         
{
        u32 temp;       
        u8 IPRADDR=NVIC_Channel/4;  //每组只能存4个,得到组地址
        u8 IPROFFSET=NVIC_Channel%4;//在组内的偏移
        IPROFFSET=IPROFFSET*8+4;    //得到偏移的确切位置
        MY_NVIC_PriorityGroupConfig(NVIC_Group);//设置分组
        temp=NVIC_PreemptionPriority<<(4-NVIC_Group);          
        temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
        temp&=0xf;//取低四位

        if(NVIC_Channel<32)NVIC->ISER[0]|=1<         else NVIC->ISER[1]|=1<<(NVIC_Channel-32);   
        NVIC->IPR[IPRADDR]|=temp< }

//外部中断配置函数
//只针对GPIOA~G;不包括PVD,RTC和USB唤醒这三个
//参数:GPIOx:0~6,代表GPIOA~G;BITx:需要使能的位;TRIM:触发模式,1,下升沿;2,上降沿;3,任意电平触发
//该函数一次只能配置1个IO口,多个IO口,需多次调用
//该函数会自动开启对应中断,以及屏蔽线   
//待测试...
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
{
        u8 EXTADDR;
        u8 EXTOFFSET;
        EXTADDR=BITx/4;//得到中断寄存器组的编号
        EXTOFFSET=(BITx%4)*4;

        RCC->APB2ENR|=0x01;//使能io复用时钟

        AFIO->EXTICR[EXTADDR]&=~(0x000F<         AFIO->EXTICR[EXTADDR]|=GPIOx<        
        //自动设置
        EXTI->IMR|=1< //        EXTI->EMR|=1<         if(TRIM&0x01)EXTI->FTSR|=1<         if(TRIM&0x02)EXTI->RTSR|=1< }
此帖出自stm32/stm8论坛

最新回复

一般我都是用库的,STM32的库多好用? 调试建议: 1. 调试看看,是一次都进不去还是只能进中断一次而已? 2. 做个其他外设的中断看看,是不是外设的中断你都进不去? ps,觉得中断里来个delay是否合适?调试时可以,实际用时这多浪费CPU的中断时间啊,响应会变差的。  详情 回复 发表于 2014-6-5 08:51
点赞 关注
 

回复
举报

12

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮我看一下是不是配置有问题啊  
此帖出自stm32/stm8论坛
 
 

回复

6040

帖子

203

TA的资源

版主

板凳
 
我只能说呵呵了,这代码谁能看的懂?
此帖出自stm32/stm8论坛

点评

又在谦虚?  详情 回复 发表于 2014-6-2 00:16
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

4
 
你直接说你运行的 时候遇到什么问题,然后才好解决啊,如果你的代码没有问题的话,说不定大伙都骂你坑DIE的啊
此帖出自stm32/stm8论坛

点评

没得错误 没的警告  详情 回复 发表于 2014-6-2 00:15
 
 
 

回复

4008

帖子

0

TA的资源

版主

5
 
你这种直接赋值寄存器的程序很难懂,要对这手册查半天才能看出毛病.
建议你找个例程先跑一下再按你的需要改,这样比较容易.
此帖出自stm32/stm8论坛

点评

就是按着改的啊 找不到原因  详情 回复 发表于 2014-6-2 00:16
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

6
 
GZHUIYU 发表于 2014-6-1 21:40
你直接说你运行的 时候遇到什么问题,然后才好解决啊,如果你的代码没有问题的话,说不定大伙都骂你坑DIE的 ...

没得错误   没的警告
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

7
 
huo_hu 发表于 2014-6-1 22:53
你这种直接赋值寄存器的程序很难懂,要对这手册查半天才能看出毛病.
建议你找个例程先跑一下再按你的需要改 ...

就是按着改的啊     找不到原因
此帖出自stm32/stm8论坛

点评

那就是原来的可以咯,改哪儿后不对的呢?  详情 回复 发表于 2014-6-2 01:00
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

8
 
lcofjp 发表于 2014-6-1 21:04
我只能说呵呵了,这代码谁能看的懂?

又在谦虚?
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 
本帖最后由 huo_hu 于 2014-6-2 01:02 编辑
abcd5867 发表于 2014-6-2 00:16
就是按着改的啊     找不到原因


那就是原来的可以咯,改哪儿后不对的呢?
你截在这里void EXTI0_IRQHandler(void) {
看看中断进得去不
此帖出自stm32/stm8论坛

点评

就是进不去啊  详情 回复 发表于 2014-6-2 08:46
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

10
 
看看是不是中断没有清中断标志
此帖出自stm32/stm8论坛

点评

EXTI->PR=1  详情 回复 发表于 2014-6-2 08:46
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

11
 
huo_hu 发表于 2014-6-2 01:00
那就是原来的可以咯,改哪儿后不对的呢?
你截在这里void EXTI0_IRQHandler(void) {
看看中断进得去不
...

就是进不去啊
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

12
 
wangyun1987 发表于 2014-6-2 07:36
看看是不是中断没有清中断标志

EXTI->PR=1<<0;  //清除LINE0上的中断标志位     
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

13
 
一般我都是用库的,STM32的库多好用?
调试建议:
1. 调试看看,是一次都进不去还是只能进中断一次而已?
2. 做个其他外设的中断看看,是不是外设的中断你都进不去?

ps,觉得中断里来个delay是否合适?调试时可以,实际用时这多浪费CPU的中断时间啊,响应会变差的。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表