相关的Issue

#16SXPI

原因(目的、解决的问题等)

大量文件涉及如下的问题,printf中(int)osThreadGetId()的类型和u%不匹配。
osThreadld_t是一个指向线程控制块(TCB)的指针,因此它的实际类型和大小取决于特定的RTOS实现。在查阅了Thread Management CMSIS-RTOS API v2等资料后,确定使用无符号整数打印可能会产生错误,因为无符号整数类型的大小与指针类型的大小可能不同。
问题代码如下:

 printf("[Boot Test][TaskID:%u][Step:%u][Reg Finish S:%s, F:%s]Time: %llu!\n",
           (int)osThreadGetId(), g_initIndex++, parent->GetName(parent), feature->GetName(feature),
           SAMGR_GetProcessTime());

描述(做了什么,变更了什么)

修改了printf函数中打印类型与变量类型不匹配的地方,将u%改为%p,将(int)类型转换改为(void*)
在一般情况下,为了正确地打印osThreadld_t类型的值,应该使用"%p"格式说明符,并将其强制转换为void*指针。这将打印出一个十六进制值,表示指向线程控制块的指针。
将上述问题代码修正如下:

 printf("[Boot Test][TaskID:%p][Step:%u][Reg Finish S:%s, F:%s]Time: %llu!\n",
           (void*)osThreadGetId(), g_initIndex++, parent->GetName(parent), feature->GetName(feature),
           SAMGR_GetProcessTime());

测试用例(新增、改动、可能影响的功能)