F407开发板,第九章“串口通信实验的中断”与第十章“外部中断实验”关于中断,2章为什么初始化不一样?

2019-07-20 18:21发布

第九章“串口通信”这一章,有一个串口接收中断,是用函数“NVIC_Init()”初始化的,而且工程中也没有添加库函数“stm32f4xx_exti.c”;
但是第十章“外部中断函数”这一章,却用函数“EXTI_Init()”初始化,且工程中添加了“stm32f4xx_exti.c”;


请问这2种中断有什么差别?导致要使用不同库函数初始化,非常谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
taizonglai
1楼-- · 2019-07-20 23:20
本帖最后由 zuozhongkai 于 2016-12-6 10:16 编辑
Gene 发表于 2016-12-6 10:02
NVIC_Init()在misc.c里面
EXTI_Init()在stm32f4xx_exti.c
两个初始化的内容也不一样

看错了,EXTI_Init()函数是库里面的,用来根据你设置的参数配置外部中断相关寄存器的,里面没有用NVIC_Init()。EXTI_Init()和NVIC_Init()是两个不同功能的函数!NVIC_Init()用来设置某个中断的优先级,比如串口中断,定时器中断,外部中断等等!但是串口中断、定时器中断、外部中断等这些中断它们还需要其他的设置,比如外部中断就需要设置中断引脚,IO复用什么的。这个时候就是由函数EXTI_Init()来完成的。还有,说谁的串口中断使用了外部中断!你已经彻底混乱了。去看看参考手册吧,串口的中断章节和外部中断章节
taizonglai
2楼-- · 2019-07-21 05:09
 精彩回答 2  元偷偷看……
Gene
3楼-- · 2019-07-21 05:33
zuozhongkai 发表于 2016-12-6 09:58
NVIC_Init()是用来设置中断有优先级的,EXTI_Init()是用来配置外部中断相关寄存器的!EXTI_Init()里面也要 ...

既然串口通信使用了外部中断,为什么不需要EXTI_Init()和“stm32f4xx_exti.c”啊?
不懂这一点
Gene
4楼-- · 2019-07-21 09:31
zuozhongkai 发表于 2016-12-6 09:58
NVIC_Init()是用来设置中断有优先级的,EXTI_Init()是用来配置外部中断相关寄存器的!EXTI_Init()里面也要 ...

NVIC_Init()在misc.c里面
EXTI_Init()在stm32f4xx_exti.c
两个初始化的内容也不一样
Gene
5楼-- · 2019-07-21 15:02
 精彩回答 2  元偷偷看……
cloudlj
6楼-- · 2019-07-21 18:30
Gene 发表于 2016-12-6 10:00
既然串口通信使用了外部中断,为什么不需要EXTI_Init()和“stm32f4xx_exti.c”啊?
不懂这一点

恩,串口没有外部的中断吧,外部中断是外届触发的

一周热门 更多>