STMcubeMX freertos 开死在启动任务调度器vTaskStartScheduler()

在嵌入式系统中,一个应用在使用FreeRTOS时遇到问题,当尝试启动调度器执行任务时,程序在prvStartFirstTask()的svc0指令处挂住。解决方案是修改system_stm32f10x.c文件,将VECT_TAB_OFFSET宏的值设为0x4000,从而修复了调度器无法启动的故障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分别引导加载程序和应用程序(带有或不带有FreeRTOS)都可以正常工作。
引导加载程序和应用程序(无需FreeRTOS)可以完美运行。
但是,如果我在应用程序中使用freeRTOS并完成两项任务(显示和通讯):
跳转引导程序->应用程序
应用程序正在运行->初始化所有外围设备(GPIO,Display,Eth,GSM,SPI等)
创建Task1->没有任何错误
创建Task2->没有任何错误
在启动调度器,即调用函数vTaskStartScheduler();出现问题了,经过调试,是卡在了prvStartFirstTask()里面的svc 0这个语句上,汇编停在了0x0800014A E7FE B 0x0800014A

在这里插入图片描述

解决办法:

修改system_stm32f10x.c将VECT_TAB_OFFSET 宏的值改为0x4000
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值