24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 嵌入式单片机开发的中...
技术专题
嵌入式单片机开发的中断处理(lǐ)
众所周知,一方面,在嵌入式系统中普遍使用(yòng)单片机的一个重要原因是它们比MPU 和通用(yòng)CPU 具有(yǒu)及时性优势。低延迟的外设中断和中断嵌套是确保MCU实时性能(néng)的极大保证。另一方面,在嵌入式系统单片机开发软件的开发中随着系统功能(néng)的日益复杂,无论是否采用(yòng)RTOS,多(duō)任務(wù)处理(lǐ)都是不可(kě)避免的。在裸奔系统中,為(wèi)了获得时间紧迫的任務(wù)来获得第一响应,通常有(yǒu)必要实现外围中断嵌套,该嵌套中断属于基于外围设备的硬件中断嵌套。在RTOS中,分(fēn)配了所有(yǒu)系统任務(wù)。具有(yǒu)特定优先级的内核会根据优先级进行调度,实际上它实现了一组基于优先级的软件中断嵌套。嵌套在RTOS中的任務(wù)软件使用(yòng)内核滴答(dá)计时器中断来连续查询RTOS任務(wù)准备列表中每个任務(wù)的优先级,以实现任務(wù)切换,而外围硬件中断不一定需要嵌套。
由于中断嵌套对于嵌入式单片机开发设计非常重要,所以什么是中断嵌套?在具體(tǐ)说明中断嵌套之前,有(yǒu)必要先谈谈嵌入式MCU的中断工作机制和中断优先级:
编写准系统的工程师知道,核心CPU一次只能(néng)执行一个任務(wù)/程序代码/指令,例如数据计算以及与片上外围设备的交互通信。代码的执行顺序由用(yòng)户自己编写,CPU逐行获取,解码和执行。乘积函数的实现在主函数(通常称為(wèi)主程序)的while(1)循环中,并由其他(tā)函数不断调用(yòng)。但是,在实际的工作环境中,许多(duō)事件是随机发生的,例如网络通信,外部IO输入和其他(tā)不确定事件。此时,CPU必须放下当前正在执行的工作,但要对这些紧急情况做出响应并及时读取网络消息。处理(lǐ)和响应网络通信需求以及及时的外部IO请求。这种处理(lǐ)称為(wèi)中断。
嵌入式单片机开发中的内核CPU异常和各种外设操作可(kě)以生成响应中断,并由中断控制器统一管理(lǐ)。这样,CPU可(kě)以专注于不产生中断时顺序执行的任務(wù),并且仅在产生中断时才通过中断控制器中断CPU(通过向CPU产生高/低信号,此过程称為(wèi)打断)。请求),如果此时启用(yòng)了CPU全局中断,则CPU将组合中断向量表和中断优先级配置,根据中断优先级(如果同时发生多(duō)个外设中断),从中断向量表中取出很(hěn)高优先级中断服務(wù)程序的ISR地址将当前CPU运行时环境压入堆栈,然后跳转到中断ISR地址。如果CPU全局中断已关闭,则当前中断请求将被忽略。
S12核心CPU的中断/异常处理(lǐ)流程图如下:
中断响应-中断ISR和实时中断
产生中断时,中断控制器会向核心CPU请求中断响应。
典型的响应是CPU运行预先准备的中断ISR。