主要内容:中断与串口
绪论:中断是为了处理突发事件 而产生的
中断含义:由于某一随机事件的发生,计算机暂停原事件运行,转而执行另一个事件,。处理完毕后又自动返回,执行原事件
中断
·NVIC,Nested Vectored Interrupt Controller,嵌套向量中断控制器,即中断优先级控制器
·中断嵌套,指新的优先级高的中断产生,会打断原来的中断
优先级 = 抢占优先级(影响是否嵌套)+子优先级(响应顺序)
1.抢占优先级高的中断可以 中断 优先级低的中断
2.两个中断的抢占优先级相同,后来中断要等前面的中断处理完
3.两个中断的抢占优先级相同,同时产生,子优先级高的先执行
4.抢占优先级、子优先级相同,同时产生,由中断向量表默认位置决定
·抢占优先级0 比 抢占优先级1 的优先级要高
图中得到的信息:
1.同组GPIO共享一条中断线,即如图PA0使用了中断,PB0和其他就不能使用中断(中断线我们需要使能)
2.EXTI控制是外部中断还是事件
3.中断控制器NVIC是设置中断优先级的
中断向量表
·即外设发生中断,就会执行中断向量表里面的对应的函数(具体函数的实现自己写)
·STM32的中断向量表在启动文件中找到(具体是keil工程中startup.s文件中找到)
·中断的回调函数:里面最好少放操作,最好只修改标志位,然后根据标志位,操作放在值函数是上,如提升课的第1天的,改进的事件驱动。
理由:
这样也会因为一个中断事件的运行时间长,影响其他中断事件的运行。但是我们这样设置的话,宁愿占据主函数的运行时间,也不愿占据回调函数运行时间,是因为这样虽然影响其他中断事件的运行,起码会保证一定会执行其他中断事件。如果一直执行回调函数,那么其他中断事件可能会被忽略,从而不会运行中断事件!!!
1.这个函数里面写中断的事件,即产生中断后需要执行的任务
2.里面的HAL_GPIO右键跳转到定义
3.真正的事件写在HAL_GPIO_EXTI_Callba