免费发布

SIEMENS山东省济南市 西门子代理商——西门子华北一级总代理

更新时间:2024-06-27 07:00:00 信息编号:30227804 发布者IP:120.237.217.245 浏览:4次
供应商
广东湘恒智能科技有限公司 商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
1
主体名称:
广东湘恒智能科技有限公司
组织机构代码:
91441304MAC3TWY11U
报价
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
关键词
PLC,变频器,代理商,一级代理,伺服电机
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
联系电话
15903418770
手机号
15915421161
微信号
15915421161
联系人
张经理  请说明来自顺企网,优惠更多
让卖家联系我
15915421161

产品详细介绍

5.2.2 任务切换

















#define portNVIC_PENDSVSET_BIT      ( 1UL << 28UL ) //PendSV的悬起位(第28位)
#ifndef portYIELD_WITHIN_API    #define portYIELD_WITHIN_API portYIELD#endif
/* Scheduler utilities. */#define portYIELD()                                                             \{                                                                               \    /* Set a PendSV to request a context switch. */                             \    portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;                             \                                                                                \    /* 触发PendSV,产生上下文切换 */                      \    __dsb( portSY_FULL_READ_WRITE );                                            \    __isb( portSY_FULL_READ_WRITE );                                            \}

portYIELD()任务切换函数,主要就是将PendSV的悬起位置1,在没有其它中断运行时执行PendSV中断服务函数,在这个中断函数中实现任务切换。

5.2.3 PendSV中断服务函数

PendSV中断服务函数是一段汇编代码,可能不太容易看懂,该函数需要先了解如下:

外部变量pxCurrentTCB是当前正在运行的任务的任务控制块

当进入PendSV中断服务函数时,上一任务的运行环境为:xPSR,PC(任务入口地址),R14,R12,R3,R2,R1,R0(任务的形参),这些CPU寄存器的值会自动保存到任务的栈中,剩下的R4~R11需要手动保存。

总的来说,该函数实现3部分功能:上文保存,下文切换,中间调用了一个C函数vTaskSwitchContext,用于寻找要运行的任务。





























































__asm void xPortPendSVHandler( void ){    extern uxCriticalNesting;    extern pxCurrentTCB;    extern vTaskSwitchContext;
   PRESERVE8
   mrs r0, psp       /* 保存当前任务PSP地址到R0中 */    isb
   ldr r3, =pxCurrentTCB  /* 获取pxCurrentTCBConst指针地址 */    ldr r2, [r3]           /* R2被赋予当前TCB地址 */
   /* Is the task using the FPU context?  If so, push high vfp registers. */    tst r14, #0x10    it eq    vstmdbeq r0!, {s16-s31}
   /* Save the core registers. */    stmdb r0!, {r4-r11, r14}
   /* Save the new top of stack into the first member of the TCB. */    str r0, [r2]
   stmdb sp!, {r3}    mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY    msr basepri, r0  /*屏蔽中断*/    dsb    isb    bl vTaskSwitchContext  /*调用vTaskSwitchContext*/    mov r0, #0    msr basepri, r0  /*打开中断*/    ldmia sp!, {r3}
   /* The first item in pxCurrentTCB is the task top of stack. */    ldr r1, [r3] /* R3依然是pxCurrentTCBConst指针地址,R1变为新TCB地址 */    ldr r0, [r1] /* R0值成为新TCB的栈地址(该TCB发生上一次调度的PSP值) */
   /* Pop the core registers. */    ldmia r0!, {r4-r11, r14}
   /* Is the task using the FPU context?  If so, pop the high vfp registers    too. */    tst r14, #0x10    it eq    vldmiaeq r0!, {s16-s31}
   msr psp, r0    isb    #ifdef WORKAROUND_PMU_CM001 /* XMC4000 specific errata */        #if WORKAROUND_PMU_CM001 == 1            push { r14 }            pop { pc }            nop        #endif    #endif
   bx r14}


相关产品:PLC , 变频器 , 代理商 , 一级代理 , 伺服电机
所属分类:中国电工电气网 / PLC
本页链接:https://product.11467.com/info/30227804.htm
SIEMENS山东省济南市 西门子代理商——西门子华北一级总代理的文档下载: PDF DOC TXT
关于广东湘恒智能科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
主要经营:西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程 ...
相关文章
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由企业自行发布,本站完全免费,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112