使用IAP方式运行的带ucosII用户程序没有进创建的任务函数

2019-07-20 06:29发布

问题如题所说,我BootLoader程序加载用户程序,用户程序运行的是带ucosII系统的,但是用户程序就只运行了main函数的代码,并没有执行创建的任务。[mw_shl_code=c,true]//main函数                                                 
int main(void)
{          
        int res, i;
        u32 total, free;
        char *p[100];
        FIL fp_test;
        u8 testbuff[4]={0};
        //system_init();                //系统初始化
        SCB->VTOR = FLASH_BASE | 0x10000;//ʨ׃ƫӆ
        HAL_Init();
        OSInit();
        Stm32_Clock_Init(432,25,2,9);//设置时钟,216Mhz
        delay_init(216);                        //初始化延时函数  
        uart_init(108,115200);                //初始化串口波特率为115200
        SDRAM_Init();                                //初始化SDRAM
        MPU_Memory_Protection();
        my_mem_init(SRAMIN);                //初始化内部内存池
        my_mem_init(SRAMEX);                //初始化外部内存池
        my_mem_init(SRAMTCM);                //初始化TCM内存池
        exfuns_init();                                //FATFS 申请内存
        PCM1794_Init();       
        Init_SRAM();
        //EXTIX_Init();
        EXTI_Init();
        delay_ms(3000);
          print_logo();
        printf("built: %s %s",__TIME__,__DATE__);
          //finsh_system_init();
        FTL_Init();

        audio_init();

        f_mount(fs[2],"2:",1);                 //挂载NAND FLASH.
        res = exf_getfree((u8*)"2:", &total, &free);                 //得到FLASH剩余容量和总容量
        if(res == 0X0D)                 //文件系统不存在
        {
                printf("nand format fs: ");
                res = f_mkfs("2:", FM_ANY,0, fatbuf, _MAX_SS);                //格式化SPI FLASH,1:,盘符;FM_ANY,自动选择文件系统类型,0,自动选择簇大小
                if(res == 0)
                {
                        f_setlabel((const TCHAR *) "2:NAND");        //设置Flash磁盘的名字为:ALIENTEK
                        res = exf_getfree((u8*)"2:", &total, &free);                //重新获取容量
                }
        }
       
        printf("NAND Size:%dMB",(nand_dev.block_totalnum/1024)*(nand_dev.page_mainsize/1024)*nand_dev.block_pagenum);
        printf(" Mount Flash to fs:2 ");
        printf("Flash Total Size: %d MB. ", total >> 10);
        printf("Flash Free Size:  %d MB. ", free >> 10);
       
        audiodev.status = 0x83;
//        shell_ls(0,NULL);
#if 0
        res = f_open(&fp_test,"2:/MUSIC/20180824_112646.wav",FA_OPEN_EXISTING|FA_READ);
        if(res)
        {
                printf("open 2:/MUSIC/20180824_112646.wav error res=%d ",res);
        }
        res = f_read(&fp_test,testbuff,4,&br);
        if(res)
        {
                printf("read error res=%d ");
        }
        else
        {
                printf("0x%02x 0x%02x 0x%02x 0x%02x ",testbuff[0],testbuff[1],testbuff[2],testbuff[3]);
        }
        f_close(&fp_test);
        while(1)
        {
                //20180818_192113.mp3
                //mp3_play_song((u8*)"2:/MUSIC/tts_mp3.mp3");
                //mp3_play_song((u8*)"2:/MUSIC/First_Dream.mp3");
                wav_play_song((u8*)"2:/MUSIC/20180824_112646.wav");
                delay_ms(2000);
        }
#endif

#if 1
           //OSInit();
    OSTaskCreateExt((void(*)(void*) )start_task,                //任务函数
                    (void*          )0,                         //传递给任务函数的参数
                    (OS_STK*        )&START_TASK_STK[START_STK_SIZE-1],//任务堆栈栈顶
                    (INT8U          )START_TASK_PRIO,           //任务优先级
                    (INT16U         )START_TASK_PRIO,           //任务ID,这里设置为和优先级一样
                    (OS_STK*        )&START_TASK_STK[0],        //任务堆栈栈底
                    (INT32U         )START_STK_SIZE,            //任务堆栈大小
                    (void*          )0,                         //用户补充的存储区
                    (INT16U         )OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR|OS_TASK_OPT_SAVE_FP);//任务选项,为了保险起见,所有任务都保存浮点寄存器的值
        OSStart();
#endif
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。