CodeBrick/framework/module.h
2020-05-23 23:04:43 +08:00

60 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
* @brief ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>ʼ<EFBFBD><CABC><><CAB1>Ƭ<EFBFBD><C6AC>ѯϵͳ)
*
* Change Logs:
* Date Author Notes
* 2016-06-24 ħ<>޲<EFBFBD>ʿ Initial version.
*******************************************************************************/
#ifndef _MODULE_H_
#define _MODULE_H_
#include "comdef.h"
/*ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
typedef struct {
const char *name; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*init)(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
}module_init_item_t;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct {
const char *name; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*handle)(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
unsigned int interval; //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
unsigned int *timer; //ָ<><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ָ<EFBFBD><D6B8>
}task_item_t;
#define __module_initialize(name,func,section_name) \
RESERVE ANONY_TYPE(const module_init_item_t,func) \
SECTION("section_sys_init") UNUSED = {name,func}
/*
* @brief <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
* @param[in] name - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] handle - <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(void func(void){...})
* @param[in] interval- <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>(ms)
*/
#define task_register(name, handle,interval) \
RESERVE static unsigned int __task_timer_##handle; \
RESERVE ANONY_TYPE(const task_item_t,handle) \
SECTION("section_task_item") UNUSED = \
{name,handle, interval, &__task_timer_##handle}
/*
* @brief ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ע<EFBFBD><D7A2>
* @param[in] name - ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] func - <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD>(void func(void){...})
*/
#define system_init(name,func) __module_initialize(name,func,"section_sys_init")
#define driver_init(name,func) __module_initialize(name,func,"section_drv_init")
#define module_init(name,func) __module_initialize(name,func,"section_app_init")
void systick_increase(void);
unsigned int get_tick(void);
void module_task_init(void);
void module_task_poll(void);
#endif