电源模块解析
在app_init()的初始化函数中, 会打开电源管理模块初始化函数
app_battery_open();
app_battery_open()中主要对
1.struct APP_BATTERY_MEASURE_T结构体的数据进行初始化.
2.同时创建了两个定时器一个是电压采集定时器, 一个是出入盒消抖定时器
3.在APP线程中添加BATTERY_MODUAL模块的处理函数. 然后电压采集结束后,会给APP线程发一个app_battery的处理邮件,并进行电压处理.
static void app_thread(void const *argument)
{
while(1){
APP_MESSAGE_BLOCK *msg_p = NULL;
if (!app_mailbox_get(&msg_p)) {
if (msg_p->mod_id < APP_MODUAL_NUM) {
if (mod_handler[msg_p->mod_id]) {
int ret = mod_handler[msg_p->mod_id](&(msg_p->msg_body));
if (ret)
TRACE(2,"%s, mod_handler[%d] ret=%d", __func__, msg_p->mod_id, ret);
}
}
app_mailbox_free(msg_p);
}
}
}
在app_init()的初始化函数中, 电源管理模块初始化后会启动 开启定时器
app_battery_start();
static void app_battery_timer_handler(void const *param){
hal_gpadc_open(HAL_GPADC_CHAN_5, HAL_GPADC_ATP_ONESHOT, app_battery_irqhandler);
}
采集完成后会有adc中断, 给线程发送邮箱
app_battery_event_process(enum APP_BATTERY_STATUS_T status, APP_BATTERY_MV_T volt)