STM32F103RC带FreeRTOS升级之后无法运行

2019-07-21 08:51发布

本帖最后由 ownbest 于 2018-7-18 10:13 编辑

使用的单片机是STM32F103RCT6,在FALSH里面做了两个程序,一个是Bootloader,负责程序跳转,一个是APP主程序,使用了FreeRTOS系统,跳转之后主程序初始化可以执行,一旦执行到调用  vTaskStartScheduler();这个函数后就死机,屏蔽  vTaskStartScheduler();之后,其他没有修改,在主while(1)里调用函数可以正常执行,主程序从0x8000000单独执行是正常的,,,请大神指点

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_DMA_Init();
    CAN_Normal_Init(1,1,6,16,0);
    MX_ADC1_Init();
    MX_SPI1_Init();
    MX_UART4_Init();//DEBUG
//    MX_IWDG_Init();
    MX_USART1_UART_Init();//AC
    MX_RTC_Init();
    MX_USART2_UART_Init();//3G

    GPRS_RevData.maxlen = UART_DMA_RX_MAX;//初始化接收空间
    GPRS_RevData.curbuf = (uint8_t*)pvPortMalloc(sizeof(uint8_t)*GPRS_RevData.maxlen);
    HAL_UART_Receive_DMA(&huart2,GPRS_RevData.curbuf,UART_DMA_RX_MAX);

    DBG_Print("进入主程序 ");
    osThreadDef(DcuCheckTask, StartDcuCheckTask, osPriorityHigh, 0, 256);
    DcuCheckTaskHandle = osThreadCreate(osThread(DcuCheckTask), NULL);

    /* Start scheduler */
    osKernelStart();

    while (1)
    {
        delay_ms(200);
//HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
            StartDcuCheckTask((void const *)1);
    }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
ownbest
1楼-- · 2019-07-21 13:20
问题终于找到了
323232
2楼-- · 2019-07-21 16:15
看看你的各个任务的格式写对了没
ownbest
3楼-- · 2019-07-21 16:31
323232 发表于 2018-7-18 10:02
看看你的各个任务的格式写对了没

任务没错,单独执行主程序是没有问题的
Sun_Fly
4楼-- · 2019-07-21 21:47
发代码出来,给你看看
323232
5楼-- · 2019-07-22 00:43
 精彩回答 2  元偷偷看……
ownbest
6楼-- · 2019-07-22 01:04
323232 发表于 2018-7-18 10:07
任务里是有死循环的    你确定放到主函数的while(1)里能执行?

试了在主程序while(1)里调用其中一个任务函数是正常的

一周热门 更多>