昨天学习了从图形化开始设计,今天开始要每天学习一个外设。本堂课学习中断。
中断:
中断是硬件管理的一种手段,在中断讲解之初,要引入概念:异常。中断是异常的中的一种,所谓中断就是在任务执行过程中打断,强行执行一个另外的任务。目前可以等同理解。
第一个启动文件中,第一件事是设置栈容量和复位中断。
异常向量表:各个子程序入口,所有的中断和异常都要以地址形式访问
中断的过程:
[if !supportLists]1. [endif]保护现场,
[if !supportLists]2. [endif]储存返回地址
[if !supportLists]3. [endif]进入ISR
[if !supportLists]4. [endif]释放资源并返回现场
[if !supportLists]5. [endif]程序交给PC
中断过程会把目前MPU的所有寄存器状态压入一个专用的栈中,并把返回地址储存起来,这是中断的第一步,即保护现场。
然后将当前要跳转的程序交给中断子程序。
中断子程序用ISR表示
异常用于解决系统性的问题,中断是用户使用的,在中断/异常向量表中,异常用灰色表示,中断用白色表示。
中断的优先级:优先级值越小,优先级越高,但中断都高于前后台的用户程序。
中断嵌套控制器(NVIC):
中断打断中断即称为中断嵌套,通过优先级实现。两类优先级:抢占式优先级和响应优先级。
设置优先级组:表示优先级的只有4位,即0~15共16个优先级,抢占式和响应式并存,但是分为两组,共同参与4位的分配,
抢占式优先级的用法是谁的优先级高,就可以抢占,多用于中断嵌套。抢占优先级高可以打断抢占优先级低的。
响应式优先级,在抢占相同时,响应高的才能执行,当抢占、响应都相同,则应当参考中断向量表,谁先执行
中断的使用:
初始化NVIC
配置优先级(优先级组、优先级值)
使能对应外设的中断,
外设的中断
外部中断EXTI:
外部输入引发中断,在51单片机中,可能是高电平、低电平、上升沿、下降沿引发中断,而在stm32中,只有边沿引发中断
上升沿
下降沿
双边沿
管理一百多根线中断的也只有16根引脚,除了引脚电平变化,还有内部温度采样、或其他内部一些状态可以引发,一共有23个中断