Other Parts Discussed in Thread: MSP430FR2675
我使用的是 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.
Other Parts Discussed in Thread: MSP430FR2675
我使用的是 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 的用法?