void main_task(void const * argument)
{
EventBits_t uxBits;
sys_info_init(); //系统基础信息初始化
bsp_gpio_map_init(); //GPIO映射表初始化
modules_init(); //模块初始化
components_init(); //组件加载
get_resert_status(); //复位原因输出
soft_check_self(); //软件自检
bluetooth_drv_init(); //初始化蓝牙模块
tag_component_init(); //初始化NFC芯片
socket_compon_init(); //初始化SOCKET
creat_console_task(); //控制台初始化
creat_buletooth_task(); //蓝牙初始化
creat_key_task(); //按键初始化
creat_swipe_task(); //刷卡初始化
creat_open_log_task(); //开门日志初始化
creat_net_task(); //网络初始化
creat_ota_task(); //ota任务
for(;;)
{
uxBits = xEventGroupWaitBits(xWatchdogEventGroup,TASK_ALL_BIT, pdTRUE,pdTRUE,2500);
if((uxBits & TASK_ALL_BIT) == TASK_ALL_BIT)
{
HAL_IWDG_Refresh(&hiwdg);
xEventGroupClearBits(xWatchdogEventGroup, uxBits);
}
else
{
log(INFO,"ubits = %x " , uxBits);
show_no_feed_task(uxBits);
}
if( rtcTimerEnable) //设备定时复位
{
soft_system_resert(__func__);
}
if( clearFlashFlag )
{
if( clearFlashFlag & FLASH_PERMI_LIST_BIT)
{
permi.clear();
clearFlashFlag &= ~FLASH_PERMI_LIST_BIT;
}
if( clearFlashFlag & FLASH_ALL_DATA)
{
device_set_default();
clearFlashFlag &= ~FLASH_ALL_DATA;
}
}
}
}
创建全部任务,
然后自己继续死循环也就是main任务继续做一些前台程序,
主要是给标记位提供服务,用于擦除芯片内存的数据。
现在按任务,A会放弃,怎么办?
方法1 直接定义,放弃这个模块
方法2根据硬件判断
modules_init(); //模块初始化
components_init(); //组件加载
在bs83b12a.c中--已经放弃
在CY8CMBR3116.C----MODULES_INIT_EXPORT(touch_key_init , "cy3116");
}
void sysCfg_set_default( void )
{
magnet_input_status_init();
touch_key_config();。。}
选择在 touch_key_config();。中结束任务
在 modules_init(); //模块初始化 貌似没有办法 它就是硬件上面的初始化IIC
components_init(); //组件加载 这个都是应用上面的组件
两个函数以后一个自检函数不错!!
void soft_check_self( void )
{
uint8_t rt = 0;
if( hal_check_vdd() == FALSE)
{
log_err("电压不在正常范围内\n");
rt=1;
}
if( cy3116_verification() == FALSE)
{
log_err("触摸芯片工作不正常\n");
rt=1;
}
if( rt)
{
beep.write_base(&checkErr);
}
else
{
//开机成功
beep.write(BEEP_NORMAL);
}
}
改一下 返回rt 如果是2就是按键失败
void main_task(void const * argument)
{
u8 No_Keyboard=0;
No_Keyboard=soft_check_self(); //软件自检
creat_key_task(No_Keyboard); //按键初始化
}
算了 有干扰 还是直接定义吧
改动1
User下面
/*
* 全局串口调试开关
*/
-DDEBUG_ENABLE=1
-DTOUCHH=0
-DTOUCHV=0
-DTOUCHA=1
改动2放弃自检
void soft_check_self( void )
{
uint8_t rt = 0;
if( hal_check_vdd() == FALSE)
{
log_err("电压不在正常范围内\n");
rt=1;
}
if(!TOUCHA)
if( cy3116_verification() == FALSE)
{
log_err("触摸芯片工作不正常\n");
rt=1;
}
if( rt)
{
beep.write_base(&checkErr);
}
else
{
//开机成功
beep.write(BEEP_NORMAL);
}
}
改动3
if(!TOUCHA)
creat_key_task(); //按键初始化