STM32f407学习 ----(1)外部中断

任务:主要利用跑马灯、按键、外部中断这三个例程实现:初始状态红灯亮,当按键按下(既有外部中断产生),此时红灯灭,          绿灯闪烁3下后红灯继续亮,如此循环。

1:外部中断初始化可以按例程根据需要配置

2:根据需要中断的个数写外部中断函数,我是用了两个键控制LED0,LED1,所以写了两个函数
3:在初始化外部中断函数 void EXTIX_Init(void) 时,对抢占优先级,响应优先级这两个概念不太清楚,

下面是这抢占优先级与响应优先级的解释:

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

总结:
(1)抢占式优先级>响应优先级>中断表中的排位顺序(其中“>”理解为比较的方向);
(2)抢占优先级数字越大,优先级越低,反之越高;
(3)响应优先级数字越小,优先级越低,反之越高;
(4)当抢占优先级相同时,输入一个中断,响应优先级高的会中断正在进行的状态来完成新的状态

4:中断子程序

   在此程序中,清除中断标志位函数很关键,中断一次后,状态标志位需要清零,否则,之后产生的中断无效。 

    自己学习笔记,若有错误,欢迎指出。


猜你喜欢

转载自blog.csdn.net/naturly/article/details/80150561