OpenEdv-开源电子网

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

求各位帮忙看一下,配置了4个中断,分别为PA0,PA15,PC4,PC5,可能用的只有PA0,PC4

[复制链接]

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
发表于 2018-7-6 20:42:09 | 显示全部楼层 |阅读模式
10金钱
[mw_shl_code=c,true]
#define EXTI_IMR       *((unsigned volatile int*)0X40010400)
#define EXTI_PR        *((unsigned volatile int*)0X40010414)
#define EXTI_RTSR      *((unsigned volatile int*)0X40010408)
#define EXTI_FTSR      *((unsigned volatile int*)0X4001040C)
#define AFIO_EXTICR1   *((unsigned volatile int*)0X40010008)
#define AFIO_EXTICR2   *((unsigned volatile int*)0X4001000C)
#define AFIO_EXTICR4   *((unsigned volatile int*)0X40010014)
#define NVIC_ISER0     *((unsigned volatile int*)0XE000E100)
#define NVIC_ISER1     *((unsigned volatile int*)0XE000E104)


void INT_init(void)
{        
//使能GPIOA、GPIOC
RCC_APB2ENR|=1<<2|1<<4;  
GPIOA_CRL=0X8;//配置PA0为下拉模式
GPIOA_CRH=(unsigned int)1<<31;//配置PA15为上拉模式
GPIOA_ODR|=1<<15;
GPIOC_CRL=8<<16|8<<20;//配置PC4、PC5为上拉模式
GPIOC_ODR|=1<<4|1<<5;
//开启IO复用功能,设置映射关系
RCC_APB2ENR|=0X1;
AFIO_EXTICR4=0<<12;    //PA15中断
AFIO_EXTICR2=2<<0|2<<4;//PC4,PC5中断
EXTI_IMR=1<<15|1<<5|1<<4|1;//开启PA15,PC5,PC4,PA0的中断         
EXTI_FTSR|=1<<15|1<<5|1<<4;//设置PA15,PC5,PC4下降沿触发
EXTI_RTSR|=1;//设置PA0上降沿触发
NVIC_ISER0=1<<23|1<<10|1<<6;
NVIC_ISER1=1<<8;//使能中断
}
[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

5-9号中断线共用一个,名称必须是:void EXTI9_5_IRQHandler(void) 10-15共用一个,名称必须是:void EXTI15_10_IRQHandler(void) 这是规定,不是你想当然编一个就行了的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4519
金钱
4519
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-6 20:42:10 | 显示全部楼层

5-9号中断线共用一个,名称必须是:void EXTI9_5_IRQHandler(void)
10-15共用一个,名称必须是:void EXTI15_10_IRQHandler(void)
这是规定,不是你想当然编一个就行了的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4519
金钱
4519
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-6 20:51:30 | 显示全部楼层
要使用中断服务函数的。
PC5或PA15都没有单独的中断服务函数
5-9号中断线共用一个,
10-15共用一个
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
 楼主| 发表于 2018-7-6 21:01:32 | 显示全部楼层
warship 发表于 2018-7-6 20:51
要使用中断服务函数的。
PC5或PA15都没有单独的中断服务函数
5-9号中断线共用一个,

[mw_shl_code=applescript,true]void EXTI5_IRQHandler(void)
{
        if(!(GPIOC_IDR&(1<<5)))
    {
        Delay_ms(10);
                if(GPIOC_IDR&(1<<5))       
                {
                        if(EXTI_PR&(1<<5))
                        {
                                Last_song=1;
                                EXTI_PR=1<<5;       
                        }
                }
    }
}
void EXTI15_IRQHandler(void)
{
        if(!(GPIOA_IDR&(1<<15)))
    {
        Delay_ms(10);
                if(GPIOA_IDR&(1<<15))       
                {
                        if(EXTI_PR&(1<<15))
                        {
                                Netx_song=1;
                                EXTI_PR=1<<15;       
                        }
                }
    }
}[/mw_shl_code]
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
 楼主| 发表于 2018-7-6 21:02:26 | 显示全部楼层
warship 发表于 2018-7-6 20:51
要使用中断服务函数的。
PC5或PA15都没有单独的中断服务函数
5-9号中断线共用一个,

有中断服务函数啊
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4519
金钱
4519
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-6 21:07:32 | 显示全部楼层
ljfljf 发表于 2018-7-6 21:02
有中断服务函数啊

这两个中断服务函数是你自己编的还是从KEIL上移植过来的?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
 楼主| 发表于 2018-7-6 21:11:16 | 显示全部楼层
warship 发表于 2018-7-6 21:07
这两个中断服务函数是你自己编的还是从KEIL上移植过来的?

自己编的 函数名不知道对不对  向量表里不是那个名字
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
 楼主| 发表于 2018-7-6 21:14:42 | 显示全部楼层
warship 发表于 2018-7-6 21:12
5-9号中断线共用一个,名称必须是:void EXTI9_5_IRQHandler(void)
10-15共用一个,名称必须是:void  ...

好了,谢谢
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4519
金钱
4519
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-6 21:19:55 | 显示全部楼层

在多条外部中断线共用一个中断服务函数时,
你需要在中断服务入口处判断一下是哪条中断线发生了中断,
然后执行相应的中断服务分支。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
 楼主| 发表于 2018-7-6 21:57:49 | 显示全部楼层
warship 发表于 2018-7-6 21:19
在多条外部中断线共用一个中断服务函数时,
你需要在中断服务入口处判断一下是哪条中断线发生了中断,
...

知道了,非常感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 13:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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