os_data_to_xdata

所属模块:底层内存管理 | 类型:XDATA写入函数

API Metadata

函数ID:os_data_to_xdata
模块:memory
类型:data transfer / xdata write
嵌套深度:1

函数简介

os_data_to_xdata 用于将内部数据搬运到8051的XDATA外部存储空间。

该接口通过寄存器间接寻址方式实现数据写入,是HRTOS底层上下文保存与任务迁移的重要基础函数。

常用于任务上下文切换、堆栈保存以及高速任务数据迁移过程。

函数原型

void os_data_to_xdata(u8 addr, u16 addr2);

参数说明

参数 说明
addr 源数据地址(内部寄存器/数据区索引)
addr2 XDATA目标地址(外部存储空间地址)

返回值

无返回值。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : os_data.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include"hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 将指定数据区地址的数据写入 XDATA 数据区。 * * @param[in] addr 数据区源地址。 * @param[in] addr2 XDATA 目标地址。 * * @return None。 * * @note 函数执行过程中临时关闭中断,以保证数据访问过程不被中断打断。 * 数据写入完成后恢复进入函数前的中断使能状态。 */ void os_data_to_xdata(u8 addr,u16 addr2) { u8 i; i=IE; EA=0; OS_HRTOS=addr; __asm mov R1,OS_HRTOS OS_HRTOS=addr2&0xff; DPH=addr2>>8; DPL=OS_HRTOS; __asm MOV A,@R1 __asm MOVX @DPTR,A IE=i; } /*------------------------------------------------------------------------ | END OF FILE: os_data.c | ------------------------------------------------------------------------*/

使用示例

void demo_xdata_write() { os_data_to_xdata(5, 0x1200); }

注意事项

该函数涉及中断关闭与寄存器操作,执行期间不可被打断,否则可能导致数据写入错误。 仅用于内核级数据搬运,不建议在应用层频繁调用。

相关推荐