SIEMENS山东省济南市 西门子代理商——西门子华北一级总代理
更新时间:2024-06-29 07:00:00 信息编号:30227804 发布者IP:120.237.217.245 浏览:4次![](http://img.11467.com/2024/03-12/1853573942.webp)
![](https://static.11467.com/img/ab-prev-0.png)
![](http://img.11467.com/2024/03-12/1853573942.webp)
![](http://img.11467.com/2024/03-12/1853223847.webp)
![](http://img.11467.com/2024/03-12/1854179760.webp)
![](http://img.11467.com/2024/03-12/1853241859.webp)
![](http://img.11467.com/2024/03-04/881664549_small.jpg)
![](http://img.11467.com/2024/03-12/1853263699.webp)
![](http://img.11467.com/2024/03-06/1003722575_small.jpg)
![](http://img.11467.com/2024/03-12/1853081799.webp)
![](http://img.11467.com/2024/03-12/1853213300.webp)
![](https://static.11467.com/img/ab-next-0.png)
- 供应商
- 广东湘恒智能科技有限公司 商铺
- 认证
- 资质核验:已通过营业执照认证入驻顺企:第1年主体名称:广东湘恒智能科技有限公司组织机构代码:91441304MAC3TWY11U
- 报价
- 请来电询价
- 西门子总代理
- PLC
- 西门子一级代
- 驱动
- 西门子代理商
- 伺服电机
- 关键词
- PLC,变频器,代理商,一级代理,伺服电机
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
- 联系电话
- 15903418770
- 手机号
- 15915421161
- 微信号
- 15915421161
- 联系人
- 张经理 请说明来自顺企网,优惠更多
- 让卖家联系我
- 15915421161
产品详细介绍
5.2.2 任务切换
#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 ); \}
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}
#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,用于寻找要运行的任务。
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代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程 ...
相关文章
- 西门子超级自动化超级自动化超级自动化是Gartner2022年重要战略技术趋势之一,指的是“一种规范且业务驱动的方法...
- 西门子将收购EcoDomus数字孪生软件,以扩展其智能楼宇产品组合EcoDomus软件可创建和显示基于BIM的楼宇数字孪生模型此次收购可扩展西门子的数字楼宇软件产品组...
- 西门子携手万泰沧海 共同推进中国疫苗产业向数字化发展西门子今天与厦门万泰沧海生物技术有限公司(万泰沧海)签署数字化战略合作协议,双方将在生物制药领域展开...
- Sierra Space使用西门子 Xcelerator革新太空探索技术西门子Xcelerator解决方案组合为SierraSpace的下一代数字化工程平台提供核心动力Dr...
- 西门子彰显创新竞争力西门子位列欧洲专利局专利榜单第五位2021财年平均每个工作日产生20项发明工业物联网技术专利增势强劲...
我们的其他产品
- SIEMENS天津市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS北京市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省衡水市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省廊坊市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省沧州市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省青岛市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省淄博市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省枣庄市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省东营市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省烟台市 西门子代理商——西门子华北一级总代理西门子总代理:PLC