中断就是异常,异常就是中断
关注我,共同交流,一起成长
- 一、中断基础概念
- 二、中断的编程要点
- 三、中断控制器组
- 四、关于EXIT外部中断
一、中断基础概念
关于中断这个东西,简单来说是程序进展过程中的重要节点,而在中断这里其实就是两个“config”了咯。
一个是:static void NVIC_Configuration(void)
另一个则是:void EXTI_KEY_Config (void)
就这个的话,其实也就是两个要点所在了,一个就是main这里的主要的函数关系的书写工作,这个基本上就是一种两个config的初始化和对应关系,当然咯,这个的简单就说明了这个.c和.h文件里需要进行大量的这种代码书写工作了的。
在经历一个实践项目之后,发现这个点是很重要的:
一般来说,外设的电平的变化有两种(低变高和高变低),通过这个EXTI产生中断,然后将这个中断交给NVIC(内核)整个过程就是先从GPIO产生信号,然后交给EXTI,最后给NVIC进行管理。
二、中断的编程要点
这里的编程工作的话,包括有这样子的一些要点:
- 使能某个外设的中断
- 初始化 NVIC_InitTypeDef 结构体
这个就是配置相对应的中断源的问题 - 编写中断服务函数
在启动文件startup_stm32f429 439xx.s 中预先为每个中断都写了一个中断服务函数,只是这些中断函数都是为空,为的只是初始化中断向量表。不过实际的中断服务函数都需要重新编写,中断服务函数我们统一写在stm32f4xx_it.c这个库文件中
然后就是其中的三点:
这两点是最基础的,然后还有就是某一个功能配置的时候要进行中断使能操作。上边那个IRQn就是用来标识中断源来的;然后下边这个IRQHandler就是用在这个中断服务函数里面的,这个是共同存在并其作用的配合关系。而后者是在启动文件里面有定义的,属于芯片内存在啊:startup_stm32f429_439xx.s(启动文件)
三、中断控制器组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
中断控制器组,事实上这个东西是可以进行挑选的,2或者3等都是能够实现,相当于一条路罢了。然后每一条路都是具备着相对应的相对应的架构存在的。
四、关于EXIT外部中断
Io的中断其实就是Exit这几个:
中断线0-4每个中断线对应一个中断函数,中断线5-9共用中断函数EXTI9_5_IRQHandler,中断线10-15共用中断函数EXTI15_10_IRQHandlera。
这个外部中断的相关设置,比这个普通中断的设置也要麻烦一些。
关注我,持续了解行业知识;如果本文让你有所收获,期待你的点赞。
如果想要获取相关知识资料,请扫码关注微信公众号: