编写一个stm32 svc关中断函数

Posted DChipNau

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个stm32 svc关中断函数相关的知识,希望对你有一定的参考价值。

做到了让stm32触发svc中断并传递进去参数然后切换到handler模式并修改特殊寄存器的值,从而达到关中断,但是其实这个程序直接就是特权级,故不进入handler模式也可以修改特殊寄存器。。。。。。

如下为调用写的开关中断函数:

 

新建了一个文件asm.c,所有我写的汇编函数都在里面:

 

 

前两个是关中断和开中断函数,主要做的事将参数传入R8并触发svc中断。

Svc中断中则调用第三个set_i()函数。

 

 

   当触发了中断之后,M3内核进入handler模式,利用R8中的数据,修改特殊寄存器BASEPRI。这个寄存器只有在特权级才能访问。

   Stm32中断分组为组1,优先级位数为4,故抢占优先级为1的中断都被屏蔽。只有tim3中断抢占优先级为0,故调用第一个函数之后只有tim3中断依然可以进行。

 

 

 





以上是关于编写一个stm32 svc关中断函数的主要内容,如果未能解决你的问题,请参考以下文章

STM32Cubemx——外部中断

STM32中断函数

STM32学习笔记——串口控制LED(中断方式)

STM32CubeMX笔记--外部中断,使用按键KEY检测

STM32串口的设置和库函数的介绍

STM32中断函数