| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /******************************************************************************
- 版权所有:
- 文件名称: rt.c
- 文件版本: 01.01
- 创建作者: sunxi
- 创建日期: 2020-06-18
- 功能说明: 实时微系统。
- 其它说明:
- 修改记录:
- */
- /*------------------------------- 头文件 --------------------------------------
- */
- #include "rt.h"
- int g_clock_mode;
- int g_clock_mode_gps;
- /*------------------------------- 宏定义 --------------------------------------
- */
- /*------------------------------ 类型结构 -------------------------------------
- */
- /*------------------------------ 全局变量 -------------------------------------
- */
- struct init_t g_rt_init_func[]=
- {
- // RT_CLIB,不需要初始化
- // RT_FILE,不需要初始化
- // RT_IF,不需要初始化
- // RT_INTS,不需要初始化
- // RT_SOFT_IRQ,不需要初始化
- // RT_FIFO,不需要初始化
- {rt_printf_init,ERR_CODE_INIT_SOFTWARE}, // RT_PRINTF
- {env_init,ERR_CODE_ENV},
- {rt_console_init,ERR_CODE_INIT_SOFTWARE}, // RT_CONSOLE
- // 时钟设备由与设备操作相关的代码实现{clk_init,ERR_CODE_RTC}, // RT_CLOCK
- {rt_socket_init,ERR_CODE_INIT_SOFTWARE},
- {rt_err_init,ERR_CODE_INIT_SOFTWARE},
- };
- #define RT_INIT_NUM ((int)(sizeof(g_rt_init_func)/sizeof(g_rt_init_func[0])))
- INIT_FUNC g_rt_exit_func[]=
- {
- rt_err_exit,
- //clk_exit,
- rt_console_exit,
- rt_printf_exit,
- //rt_mq_exit,
- env_exit
- //rt_ints_exit
- };
- #define RT_EXIT_NUM ((int)(sizeof(g_rt_exit_func)/sizeof(INIT_FUNC)))
- /*------------------------------ 函数声明 -------------------------------------
- */
- /*------------------------------ 外部函数 -------------------------------------
- 外部函数供其它实体文件引用,必须仔细检查传入参数的合法性.
- */
- int rt_init(void)
- {
- int i,ret;
- for(i=0;i<RT_INIT_NUM;i++)
- {
- ret = g_rt_init_func[i].func();
- if(ret != 0)
- {
- rt_err_set(g_rt_init_func[i].err_code,0);
- printf("rt_init err(i=%d,ret=%d)\r\n",i,ret);
- return ret;
- }
- }
-
- return 0;
- }
- int rt_exit(void)
- {
- int i,ret;
- for(i=0;i<RT_EXIT_NUM;i++)
- {
- ret = g_rt_exit_func[i]();
- if(ret != 0)
- {
- printf("rt_exit err(i=%d,ret=%d)\r\n",i,ret);
- }
- }
- return 0;
- }
- /*------------------------------ 内部函数 -------------------------------------
- 内部函数以下划线‘_’开头,不需要检查参数的合法性.
- */
- /*------------------------------ 测试函数 -------------------------------------
- 一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
- 进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
- */
- /*------------------------------ 文件结束 -------------------------------------
- */
|