STM32
直播中

李文

7年用户 165经验值
私信 关注
[问答]

OSCtxSw()入口,将OSCtxSw()及其中断函数执行完就跳出汇编程序?

今天下午又看了下例程当中汇编部分的代码:脑袋里出现了三个问题
(1)
PRESERVE8      
  
  AREA    |.text|, CODE, READONLY
        THUMB
这段代码是什么意思?主要实现的是什么??????
(2)
OSTaskCreate()——>OS_Sched()——>OS_TASK_SW()——>OSCtxSw():  由此进入到了汇编程序,这个
大家都知道!现在我不明白的是  :进入汇编程序是从汇编代码的第一行开始执行直至最后一行还是从
OSCtxSw()入口,将OSCtxSw()及其中断函数执行完就跳出汇编程序?????????
(3)
#define  OS_CRItiCAL_METHOD   4
#if OS_CRITICAL_METHOD == 4
  void OS_ENTER_CRITICAL (void);
     void OS_EXIT_CRITICAL (void);     
#endif
为什么这个变成4了,不是3吗????怎么回事???????
小弟不才,请教!!在此先谢了

回帖(1)

张览秀

2020-8-11 06:53:50
1,见这里:http://www.openedv.com/posts/list/5903.htm
2,OSCtxSw的代码如下:
OSCtxSw
PUSH    {R4, R5}
        LDR     R4, =NVIC_INT_CTRL  ;触发PendSV异常 (causes context switch)
        LDR     R5, =NVIC_PENDSVSET
        STR     R5, [R4]
POP     {R4, R5}
        BX      LR
不知道你哪里看到有其他函数...
3,你可以用3.我们为了方便,使用4.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分