stm32是一款基于cortex m3的单片机,其对中断的控制在核内部,因此stm32对中断处理与cortex m3区别不大
一、几个概念
异常与中断:《权威指南》译者给出的定义为:“所有能打断正常执行流的事件都称为异常”、“异常与中断的区别在于,那240个中断对CM3核来说是‘突发事件’,也就是说该请求信号来自CM3核的外面,对CM3核来说是‘异步’的;而异常则是因CM3核的活动产生的,在执行指令或访问存储器时产生的,对CM3核是‘同步’的”。我认为他第一句和第二句矛盾。对这个问题有两个理解:
第一种就是第一句的理解。第二种理解为:编号(权威手册表述)0~15的为异常,16~255的‘外部中断’就是中断。我认为这只是概念的冲突,并不影响对芯片的使用,本文采用第一种理解。
外部中断:对这个概念的理解有两个出发点,若讨论内核,则来自核以外的中断,即编号16~255的都叫外部中断。另外一种是从stm32芯片出发来理解,所谓的“外部”是指受EXTI控制的中断。本文研究的是单片机,采用第二种理解,同时把16~255号称为中断。
事件与通道。事件还不能算为一个中断。上面谈到的16~255号中断,在stm32中其实是中断通道的概念,多个要申请中断的事件可能会公用一个中断通道,在核看来他们是一样的,只有在中断服务子程序里读标志位才能分辨到底是谁申请的中断。就好像一个宿舍里好几个人,通过一部公用电话给警