我可以用什么来代替sprintf?

时间:2018-02-22 07:39:28

标签: embedded printf interrupt string-concatenation texas-instruments

我正在研究TI-TM4C129X ARM板并尝试编写一个LOG机制。当我从任务中调用它时它工作正常,但是当我用计时器调用它时我遇到了问题。据我了解,printf like函数与Hwi一起使用,这会导致错误。我的目标是将字符串格式化为sprintf(),vsprintf(),memcpy()和memset()等操作。我怎么解决这个问题 ?是否有成功sprintf()操作的等效方法? 谢谢你的回答, 最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

听起来像printf是问题,而不是sprintf。假设您的Log消息使用中断(UART执行),并且您的计时器是从中断调用的,那么您的选项是有限的。

我会在计时器中设置一个标志,您的任务代码可以在计时器的上下文之外进行检查。这个标志可能表示要打印的几条消息之一,甚至包括一个时间戳,如果这有助于随后采取措施,因为您的打印消息将不按顺序排列。

或者,使用SWO输出(如Segger j-link),您应该能够发送数据。但是为了避免乱码,你需要在发送调试消息时暂停中断,这显然会影响实时行为。