主题中讨论的其他器件:HALCOGEN
工具/软件:Code Composer Studio
当 你使用 FreeRTOS 创建一个 HalCoGen 项目时、这个代码停止工作(崩溃、在"b DataEntry"停止)(你不必为此使用 FreeRTOS):
uint32_t id = 0x14FF01EF; float internalVoltage = 22750.0; int8_t intTempC = 25; char buffer[150]; int len = sprintf (buffer、"(0x%08x)内部电压:%4.2f 内部温度:%d\r\n"、(int) bufferid、internalVoltage、intc (temp);intc);puts (temp)
我将其跟踪到"HL_SYS_CORE.asm"。 第162-167行的部分从以下位置进行切换(无 FreeRTOS):
userSp .word 0x080000+0x00001000 svcSp .word 0x080000+0x00001000+0x00000100 fiqSp .word 0x080000+0x00001000+0x00000100+0x00000100 irqSp .word 0x080000+0x0000+0x00001000+0x00000100+0x00000100+0x00000100+0x00000100+0x0000+0x000100+0x000100+0x000100+0x000100+0x000100+0x0000000100+0x000100+0x000000000100+0x000100+0x000000100+0x0000+0x000100+0x000800000100+0x000100+0x000080000000100+0x000100+0x000100+0x000100+0x000100+0x000100+0x
为此(使用 FreeRTOS):
userSp .word 0x080000+0x00000300 svcSp .word 0x080000+0x00000300+0x00000100 fiqSp .word 0x080000+0x00000300+0x00000100+0x00000100 irqSp .word 0x080000+0x00000300+0x00000300+0x00000100+0x00000100+0x00000100+0x00000100+0x00000100+0x000100+0x000000000000100+0x000000000300+0x00000300+0x00000000100+0x000000000100+0x000000000000080000000100+0x000100+0x000100+0x000000300+0x000000000300+0x000000000000100+0x000000000000080000000300+0x000300+0x000
我在任何 PDF 或论坛中都找不到这些价值观或提及这些价值观的任何地方。 函数是“初始化堆栈指针”--这就说明了它影响 sprintf 的原因。
如何设置这些值、以便 sprintf 和 FreeRTOS 能够正常工作?