main函数主要的工作是初始化各个层级的功能,并进入到系统调度中,并非所有的功能都需要使用,在实际项目开发中,我们可以按需进行选择性的应用,main函数内容如下:
```
#include "main.h"
/* Tasks */
#include "task_example.h"
#include "task_system.h"
/* Libs */
#include "atcmd.h"
/* Services */
#include "svc_log.h"
#include "svc_humiture.h"
#include "svc_msg.h"
#include "svc_hid.h"
#include "svc_database.h"
#include "svc_system.h"
/* HAL */
#include "hal_lcd.h"
#include "hal_vht2x.h"
#include "hal_button.h"
#include "hal_led.h"
#include "hal_i2c.h"
#include "hal_uart.h"
#include "hal_iwdg.h"
#ifdef __LPM__
#include "hal_rtc.h"
#include "hal_lpm.h"
#endif /* __LPM__ */
#include "hal_flash.h"
#include "hal_ioctl.h"
#include "hal_idt.h"
#include "hal_systick.h"
#include "hal_system.h"
static void hal_init(void);
static void svc_init(void);
static void libs_init(void);
static void task_init(void);
/*
* Main function.
*/
int main(void)
{
hal_init();
svc_init();
libs_init();
task_init();
svc_system_run();
}
/*
* Initial HAL
*/
void hal_init()
{
hal_system_init();
hal_systick_init();
hal_idt_init();
hal_ioctl_init();
hal_flash_init();
#ifdef __LPM__
hal_lpm_init();
hal_rtc_init();
#endif
hal_iwdg_init();
hal_uart_init();
hal_i2c_init();
hal_led_init();
hal_button_init();
hal_vht2x_init(0);
hal_lcd_init();
}
void svc_init()
{
#ifdef __LPM__
svc_system_init(5000);
#else
svc_system_init(2000);
#endif
svc_database_init();
svc_hid_init();
svc_msg_init();
svc_humiture_init();
svc_log_init();
}
void libs_init()
{
atcmd_init();
}
void task_init()
{
task_system_init();
task_example_init();
}
```
- 框架介绍
- Main 函数
- HAL 函数接口说明
- hal_system.h
- hal_systick.h
- hal_idt.h
- hal_ioctl.h
- hal_flash.h
- hal_lpm.h
- hal_rtc.h
- hal_iwdg.h
- hal_uart.h
- hal_i2c.h
- hal_led.h
- hal_button.h
- hal_vht2x.h
- hal_lcd.h
- Services 函数接口说明
- svc_system.h
- svc_database.h
- svc_hid.h
- svc_msg.h
- svc_humiture.h
- svc_log.h
- Tasks 说明
- task_system.c
- task_example.c
- Libs 函数接口说明
- mathlib.h
- json.h
- atcmd.h
- atcmd_proxy.h
- libwifi.h
- libs1.h