前言
PendSV典型使用场合是在上下文切换时(在不同任务之间切换)。本文主要介绍触发PendSv中断的两种代码,分别是采用c语言和汇编语言进行实现。
一、关于PendSV的基础知识
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012165055403.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMjg3OQ==,size_16,color_FFFFFF,t_70#pic_center)
对中断控制及状态寄存器ICSR的位28置1,可以触发PendSV中断。而在触发PendSV中断之前呢,需要对该PendSV的中断优先级进行设置。向系统异常优先级寄存器(地址为0xE000ED22)写入0xff,将优先级设置成最低。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012165628911.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMjg3OQ==,size_16,color_FFFFFF,t_70#pic_center)
二、代码
1.c语言
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012170057939.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMjg3OQ==,size_16,color_FFFFFF,t_70#pic_center)
2.汇编语言
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012170744903.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMjg3OQ==,size_16,color_FFFFFF,t_70#pic_center)
这里再对Cortex-M内核设置的开关中断CPS指令进行说明:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012171227449.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012171246105.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMjg3OQ==,size_16,color_FFFFFF,t_70#pic_center)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)