Freertos.c

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();           //按键初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值