RTOS任务初始化时通用寄存器的内存管理问题?
本帖最后由 joystring 于 2013-12-5 12:49 编辑OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt)
{
OS_STK *stk;
INT32U task_addr;
opt= opt;
stk= ptos;
task_addr = (INT32U)task & ~1;
*(stk)= (INT32U)task_addr;//PC
*(--stk)= (INT32U)0x14141414L;//R14
*(--stk)= (INT32U)0x12121212L;//R12
*(--stk)= (INT32U)0x11111111L;//R11
*(--stk)= (INT32U)0x10101010L;//R10
*(--stk)= (INT32U)0x09090909L;//R9
*(--stk)= (INT32U)0x08080808L;//R8
*(--stk)= (INT32U)0x07070707L;//R7
*(--stk)= (INT32U)0x06060606L;//R6
*(--stk)= (INT32U)0x05050505L;//R5
*(--stk)= (INT32U)0x04040404L;//R4
*(--stk)= (INT32U)0x03030303L;//R3
*(--stk)= (INT32U)0x02020202L;//R2
*(--stk)= (INT32U)0x01010101L;//R1
RTOS初始化任务有这么一段,通用寄存器内存地址据说是可以随便指定
这我里有个问题,指定的这个地址是不是要根据不同的CPU的RAM实际地址做出相应的更改,例如有些MCU RAM地址是0x20000000----0x200003FF,上面程序中那个地址为什么能指定在这个地址之外呢,知道的兄弟请解答一下,谢谢!
页:
[1]