完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在DFU模式下,将一个带freeRTOS的程序通过USB下载到0x800C000起始位置的flash,但发现程序跑到启动调度器函数时就跑飞了,请教下这是怎么回事?个人怀疑可能是中断映射问题,但不知道用DFU怎么设置中断映射,请知道的麻烦提示下,谢谢了!
启动调度器函数如下: vTaskStartScheduler(); |
|
相关推荐
2个回答
|
|
需要中断重映射,在初始化时增加如下函数即可
void NVIC_Configuration(void) { /* Set the Vector Table base location at 0xC000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0xC000); } |
|
|
|
在这种情况下,程序跑飞可能是由以下几个原因导致的:
1. 中断映射问题:你已经提到了这个可能性。确保你的中断映射设置正确,以便FreeRTOS能够正确处理中断。 2. 堆栈溢出:FreeRTOS在运行时需要足够的堆栈空间。如果堆栈空间不足,程序可能会跑飞。检查你的任务堆栈大小设置,确保它们足够大。 3. 内存分配问题:FreeRTOS需要动态分配内存来管理任务和队列。如果内存分配失败,程序可能会跑飞。确保你的系统有足够的内存空间,并且内存分配函数(如`pvPortMalloc`)正确实现。 4. 配置错误:检查你的FreeRTOS配置,确保所有必要的配置项都已正确设置,例如任务优先级、时钟频率等。 5. 硬件问题:如果硬件存在问题,例如时钟不稳定或电源不稳定,程序可能会跑飞。检查硬件连接和电源供应,确保它们正常工作。 关于DFU设置中断映射的问题,这取决于你使用的微控制器和DFU实现。通常,中断映射是在微控制器的启动代码或中断向量表中设置的。你需要查阅你的微控制器的参考手册和DFU实现的文档,了解如何设置中断映射。 建议你按照以下步骤进行故障排除: 1. 检查中断映射设置,确保它们正确。 2. 检查任务堆栈大小设置,确保它们足够大。 3. 检查内存分配函数的实现,确保它们正确工作。 4. 检查FreeRTOS配置,确保所有必要的配置项都已正确设置。 5. 检查硬件连接和电源供应,确保它们正常工作。 希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我能更好地帮助你。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1369 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1363 浏览 1 评论
782 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
565 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1399 浏览 2 评论
1758浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
484浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
420浏览 3评论
414浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
389浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 06:08 , Processed in 0.601893 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号