打印

外部中断通道0到4 与外部中断 5到9 有何区别

[复制链接]
5043|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
外部中断通道0 到4 与 通道 5 到 9 有何区别,如果在5到9之间的一个通道需要外部中断,中断入口函数和0到4 的入口函数有不同吗,又要怎么样配置才能呢正常工作呢?
沙发
香水城| | 2010-2-8 15:17 | 只看该作者
除了编号不同,以及中断的向量地址不同之外,功能上没有区别。

使用特权

评论回复
板凳
yybj| | 2010-2-8 19:25 | 只看该作者
只是中断的入口地址不同

使用特权

评论回复
地板
冬至如年|  楼主 | 2010-2-10 10:23 | 只看该作者
外部中断通道0到4有各自独立的中断入口地址.
例如 EXTI0  的地址 为 0X0000 0058 , 对应的中断处理函数 void EXTI0_IRQHandler(void)
        EXTI1 的地址 为 0X0000 005C  , 对应的中断处理函数 void EXTI1_IRQHandler(void)   .
而外部中断5到9 EXTI9_5  EXTI[9:5] 地址为 0X0000 009C  
       1.为什么只有一个地址,
       2.怎么区分其中的一根线上的中断呢,如果只要其中一根线上的中断信号那 中断函数名是怎么写的呢!

使用特权

评论回复
5
香水城| | 2010-2-10 11:27 | 只看该作者
1)为什么只有一个地址,因为中断向量的资源不够。

2)怎么区分其中的一根线上的中断,使用中断状态寄存器。
如果只要其中一根线上的中断信号那 中断函数名是怎么写,怎么写都可以,随便你喜欢。

使用特权

评论回复
6
冬至如年|  楼主 | 2010-2-21 09:07 | 只看该作者
多谢香水城,还有问题想请教,   当外部中断被触发后这个硬件中断是通过什么被指向相应的中断函数的,就是当外部中断到来后它怎么关联到中断函数的,还有通过哪个头文件定义的.

使用特权

评论回复
7
司徒老鹰| | 2010-2-22 00:36 | 只看该作者
香主回答真好,还有颜色标记

使用特权

评论回复
8
ST_ARM| | 2010-2-22 10:48 | 只看该作者

图中在第4步根据中断屏蔽寄存器中的设定判别发生了哪一个中断,然后将该信号发送给NVIC(增强型可屏蔽中断控制器),NVIC根据信号将相应的中断函数的地址赋予PC要调用的寄存器,这样Cortex-M3将执行对应的中断函数。
用户在使用中无需通过头文件定义,在软件库3.1.2中的startup_stm32f10x_??.s文件中对中断函数的地址进行了宏定义,用户只需根据startup_stm32f10x_??.s中的PPP_IRQHandler,在stm32f10x_it.c和stm32f10x_it.h中添加相应的void PPP_IRQHandler(void) 函数,并在.c中添加中断处理代码即可。
对于EXTI9_5_IRQHandler和EXTI15_10_IRQHandler中断用户需要在处理函数中通过ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)来判别发生了哪一个中断,再进行相应的处理。

使用特权

评论回复
9
冬至如年|  楼主 | 2010-2-22 11:49 | 只看该作者
多谢赐教,很详细啊!

使用特权

评论回复
10
btyang| | 2011-8-26 15:47 | 只看该作者
学习了

使用特权

评论回复
11
几度随逝水| | 2015-1-22 17:09 | 只看该作者
学习

使用特权

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

本版积分规则

5

主题

18

帖子

1

粉丝