1. NRF52832带蓝牙协议栈的程序是如何跳转的?
答:如果NRF52832烧录了协议栈S132和用户应用程序,那么程序会先从协议栈的MBR启动,然后跳转到应用程序执行。
2. 关于中断的执行是怎样的?
答:所有应用程序或bootloader的中断都是由协议栈分发出来后执行的,所以烧录协议栈后,中断服务函数进入的时间会被加长了,具体延时的大小看如下官方数据:
对于开放性的外设,最大为3us的延时。
3. 关于中断优先级是怎么划分的?
nrf52832的中断优先级有8个,从0到7(其中0的优先级最高),且这个中断优先级是协议栈规定的,是不能够被改变的。
当芯片复位启动时,所有中断优先级都为0,之后协议栈会占用如下三个中断等级:
level 0 :用于处理协议栈严格时序的事件;
level 1 :用于内存隔离和实时保护用;
level 2 :用于处理可延迟的任务以及SVC中断事件等;
其它5个等级可供用户应用程序使用,如下图所示:
另外需要特别注意的是,因为优先级为4的中断会处理SVC等事件,所以应用程序的中断优先级2和3也是受限的,即不能在中断优先级为2和3的中断服务函数中调用协议栈函数,SVC中断函数以及RTOS函数等。
另外如果你足够细心,你会发现中断优先级为2的中断要比中断优先级为7的中断执行的快,因为前面的中断等级越多,也就是要等待的事件就越多,等待的时间就会越长。
以下为三种场景下的中断响应过程:
4.
手机扫一扫
移动阅读更方便
你可能感兴趣的文章