打印
[应用相关]

MDK 自动初始化技术 代码(参考RT-Thread)

[复制链接]
456|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shen520|  楼主 | 2021-11-3 11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C文件:

/*****************************************************************************************************************************/
#include "ll_autoinit.h"
/*****************************************************************************************************************************/
__attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.0" ) ) ) struct ll_autoinit_t autoinit_head ;
__attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.9" ) ) ) struct ll_autoinit_t autoinit_tail ;
/*****************************************************************************************************************************/
void ll_autoinit_init ( void )
{
    struct ll_autoinit_t * init = ( struct ll_autoinit_t * ) & autoinit_head ;
    for ( init = init + 1; init < ( struct ll_autoinit_t * ) & autoinit_tail ; init++ )
    {
        init->cb_init();
    }
}
/*****************************************************************************************************************************/


H文件:

#ifndef autoinit_h
#define autoinit_h
/*****************************************************************************************************************************/
#include <stdint.h>
/******************************************************************************************************************************
* 功 能 : autoinit操作对象结构体
******************************************************************************************************************************/
struct ll_autoinit_t
{
    const char * name ;
    void ( * cb_init ) ( void ) ;
} ;
/******************************************************************************************************************************
* 功 能 : 加载表格(BOARD)
******************************************************************************************************************************/
#define LL_LOAD_AUTOINIT_BOARD(name,init)                                                   \
    __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.1" ) ) )              \
    struct ll_autoinit_t autoinit_board_##name = { #name ,init} ;
/******************************************************************************************************************************
* 功 能 : 加载表格(MODULE)
******************************************************************************************************************************/
#define LL_LOAD_AUTOINIT_MODULE(name,init)                                                  \
    __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.2" ) ) )              \
    struct ll_autoinit_t autoinit_module_##name = { #name ,init} ;
/******************************************************************************************************************************
* 功 能 : 加载表格(APP)
******************************************************************************************************************************/
#define LL_LOAD_AUTOINIT_APP(name,init)                                                     \
    __attribute__ ( ( used ) ) __attribute__ ( ( section ( ".autoinit.3" ) ) )              \
    struct ll_autoinit_t autoinit_app_##name = { #name ,init} ;
/*****************************************************************************************************************************/
void ll_autoinit_init ( void ) ;
/*****************************************************************************************************************************/
#endif
</font>


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

24

帖子

1

粉丝