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.
工具/软件:Code Composer Studio
吹扫码不打印0字符,但挂起:
#include #include #include #include #include #include #include Task_handle taskHandle; void taskFxn (UArga、UArgb){ System_printf ("taskFxn started.\n"); System_printf ("-%c-.\n"、0);//<<<<<<<<<<<<<<<<<<<<<<<< 此行不起作用。 System_printf ("taskFxn 退出。\n"); system_flush(); } int main() { /*调用驱动程序初始化函数*/ Board_init(); system_printf ("hello world\n"); Task_Params taskParams; ERROR_Block EB; /*配置包任务。 * Task_Params_init (&taskParams); ERROR_INIT (&EB); taskParams.STACKSIZE = 512; taskParams.priority = 3; taskHandle = Task_create (taskFxn、&taskParams、&EB); BIOS_start(); 返回(0); }
您是否尝试增大堆栈大小? 在任何不会打印"0"零字符的情况下、您都要求它打印 NUL-所有位为零-这是不可打印的。 但它不应挂起。
如果要将0x00打印为字符、则需要使用%d
是的,我知道0 !='0',这不显示任何内容,因为0是不可打印的。 我想将0打印为字符、然后它挂起。 问题源于我打印的缓冲区可以是0或其他内容、因此是背景。 因此、我仍然认为这是一个但是。 它与该堆栈大小无关。
谢谢。
我看到 main()中正在发生损坏。 在.cfg 中将系统堆栈设置为512 (这会覆盖链接器命令文件设置)。 系统堆栈用于 main (然后在 BIOS_start 函数内用于 Hwi 和 Swi)。 Task_create 正在烧断堆栈、因为您在.cfg 中启用了 HeapTrack。 虽然调试工具很有用、但它会在分配内存时导致更多的堆栈使用。 我将系统堆栈大小增加到1024、并看到峰值为520。 因此、某处发生了一些损坏。
您是否可以增大系统堆栈大小或取消使用 HeapTrack、然后重试?
Todd