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 任务切换
#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接头
广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程 ...
相关文章
- 相知:友情为根,理想漫长相知:友情为根,理想漫长2018年,是河钢与西门子发展的另一个关键节点。2018年,数字化浪潮和传统...
- 携手:初心不改,罗马终能抵达携手:初心不改,罗马终能抵达时间来到了2022年。今天的河钢在探索钢铁产业智能化、绿色化和产业布局优...
- 西门子获评《Fast Company》杂志“年度改变世界的公司”日前,西门子获评美国商业杂志《FastCompany》“年度改变世界的公司”(WorldChangi...
- 西门子作为专注的科技公司持续优化业务组合与美驰(Meritor)就出售商用车业务达成协议收购价格(企业价值)约为1.9亿欧元交易预计在本年内...
- 蓄势待发—2022年德国汉诺威工业博览会即将开幕今年,汉诺威工业博览会将于5月30日-6月2日在德国汉诺威举行,再次回归线下展,距离上一次,已经过去...
我们的其他产品
- SIEMENS天津市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS北京市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省衡水市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省廊坊市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS河北省沧州市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省青岛市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省淄博市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省枣庄市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省东营市 西门子代理商——西门子华北一级总代理西门子总代理:PLC
- SIEMENS山东省烟台市 西门子代理商——西门子华北一级总代理西门子总代理:PLC