我使用的是 MSP430FR2675和 CCS 10.3.1。 由于 CCS 实现了一个尝试写入调试控制台的复杂断言、因此在 ISR 内部使用是否安全? 如果在 ISR 中使用不安全、TI 建议在给定条件失败时停止调试编译中的程序执行什么?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用的是 MSP430FR2675和 CCS 10.3.1。 由于 CCS 实现了一个尝试写入调试控制台的复杂断言、因此在 ISR 内部使用是否安全? 如果在 ISR 中使用不安全、TI 建议在给定条件失败时停止调试编译中的程序执行什么?
根据建议的帖子,在 ISR 中使用出厂提供的`assert()`的唯一缺点是它会占用大量内存。
TI 编译器 MSP430运行时库中的 assert 函数最终调用 fprintf、以输出错误字符串、其中包含断言失败的文件名和行号。 这对于 PC 程序来说是可以的、但在 MSP430器件中需要过多的代码/数据存储器。
我的理解是、fprintf 等函数根据具体实现情况、可以通过调用`malloc()`来动态分配内存、而 malloc 不一定是线程安全的。 我看到断言的 CCS 工具实现使用 fputs。 您能不能谈一谈 TI 在 ISR 内部实现 fputs 和 malloc 的用法?