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条回答
323232
1楼-- · 2019-07-22 04:51
调试一下看看程序死在哪里
ownbest
2楼-- · 2019-07-22 10:04
323232 发表于 2018-7-18 10:12
调试一下看看程序死在哪里

死在任务调度里
zc123
3楼-- · 2019-07-22 14:18
这种情况基本上是中断向量表不对,你代码空间是怎么分配的
信奉3
4楼-- · 2019-07-22 19:41
 精彩回答 2  元偷偷看……
hycrgqb
5楼-- · 2019-07-23 01:27
问题原因能共享下吗?给大家提个醒。

一周热门 更多>