硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1033|回复: 2
收起左侧

[客户分享] 记录一次APM32F407调试FREERTOS异常

[复制链接]

6

主题

74

回帖

92

积分

初级会员

积分
92
发表于 2024-10-15 15:46:43 | 显示全部楼层 |阅读模式
起因是想要使用cubeMX生成LWIP测试工程,裸机跑通后切换RTOS测试,用的测试板正好是MCU被替换为APM32F407的,下载进去程序不运行了。

随即仿真查看,发现程序卡在了xPortStartScheduler函数里,仔细查看发现是断言失败了
[C] 纯文本查看 复制代码
configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS );


分析发现是优先级寄存器存在问题,读回的值并不是0xF0

代码分析

代码分析


查看手册发现,原来是APM32的中断优先级位数不同,ST的芯片都是4位,而APM存在3位的情况

手册描述

手册描述


简单解决办法是调整FreeRTOSConfig.h中优先级宽度为3位、最低优先级为7
[C] 纯文本查看 复制代码
#define configPRIO_BITS         3
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   7


代码需要兼容ST的话,估计只能舍弃一些优先级,只使用3位
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-10-16 09:56:45 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

78

主题

278

回帖

512

积分

金牌会员

积分
512
发表于 2024-10-17 14:52:23 来自手机 | 显示全部楼层
居然有这个差异
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 16:27 , Processed in 0.042079 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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