OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4100|回复: 11

STM32F103RC带FreeRTOS升级之后无法运行

[复制链接]

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2013-3-27
在线时间
200 小时
发表于 2018-7-18 09:59:55 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 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("进入主程序\r\n");
    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);
    }
}


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2013-3-27
在线时间
200 小时
 楼主| 发表于 2018-7-18 09:59:56 | 显示全部楼层
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-18 10:02:07 | 显示全部楼层
看看你的各个任务的格式写对了没
猪猪熊呢?
回复

使用道具 举报

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2013-3-27
在线时间
200 小时
 楼主| 发表于 2018-7-18 10:03:56 | 显示全部楼层
323232 发表于 2018-7-18 10:02
看看你的各个任务的格式写对了没

任务没错,单独执行主程序是没有问题的
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-7-18 10:07:29 | 显示全部楼层
发代码出来,给你看看
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-18 10:07:48 | 显示全部楼层
任务里是有死循环的    你确定放到主函数的while(1)里能执行?
猪猪熊呢?
回复

使用道具 举报

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2013-3-27
在线时间
200 小时
 楼主| 发表于 2018-7-18 10:09:56 | 显示全部楼层
323232 发表于 2018-7-18 10:07
任务里是有死循环的    你确定放到主函数的while(1)里能执行?

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

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-18 10:12:42 | 显示全部楼层
调试一下看看程序死在哪里
猪猪熊呢?
回复

使用道具 举报

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2013-3-27
在线时间
200 小时
 楼主| 发表于 2018-7-18 10:14:11 | 显示全部楼层
323232 发表于 2018-7-18 10:12
调试一下看看程序死在哪里

死在任务调度里
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2018-7-18 19:06:20 | 显示全部楼层
这种情况基本上是中断向量表不对,你代码空间是怎么分配的
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2018-10-22 14:45:39 | 显示全部楼层
ownbest 发表于 2018-7-18 09:59
问题终于找到了

什么问题呢   我也遇到了
天道酬勤
回复

使用道具 举报

4

主题

91

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1091
金钱
1091
注册时间
2017-11-7
在线时间
311 小时
发表于 2018-10-22 15:10:51 | 显示全部楼层
问题原因能共享下吗?给大家提个醒。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 17:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表