Files
player/Project_App_Calendar/App_Src/main/global.c

85 lines
998 B
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#include "global.h"
#include "main_inc.h"
//获取和保存r9寄存器
void *get_r9(void);
void set_r9(void *r9);
//用来保存全局变量基地址
static void * const g_r9;
//指向app自身
static app_struct *g_me;
//给const类型变量赋值
__asm static void save_const(void *const_addr,u32 value)
{
str r1,[r0]
bx lr
}
__asm void *get_r9(void)
{
mov r0,r9
bx lr
}
__asm void set_r9(void *r9)
{
mov r9 ,r0
bx lr
}
void *global_in(void)
{
void *t=get_r9();
set_r9(g_r9);
return t;
}
void global_out(void *r9)
{
set_r9(r9);
}
void global_init(app_struct *me)
{
void *t=get_r9();
//使用函数强行赋值
save_const((void *)&g_r9,(u32)t);
g_me=me;
//这个函数提供给系统调用用以退出app
extern int __app_exit(void *);
g_me->exit=__app_exit;
}
//app正在运行
void global_run_start(void)
{
if(g_me) g_me->run_state++;
}
//app结束运行
void global_run_exit(void)
{
if(g_me)
{
if(g_me->run_state) g_me->run_state--;
}
}