代码如下 :
void entry_init()
{
__disable_irq();
//SCB_EnableICache();
//SCB_EnableDCache();
HAL_Init(); //stm32f4xx_hal.c
Config_Clock();
HAL_UART_Init(&uart1_runtime_handle);
char stackchars[128];
for(int64_t t=0;t<100;t++)
{
snprintf(stackchars, sizeof(stackchars), "Welcome %llu\r\n",++t);
for (const char* msg=stackchars;; msg++)
{
char c = *msg;
if (!c)
break;
uart1_runtime_handle.Instance->DR = c;
while (__HAL_UART_GET_FLAG(&uart1_runtime_handle, UART_FLAG_TC) == RESET);
}
}
}
使用星火一号 0.20 的模板代码, 修改 entry()
直接改为原始的启动方式.
然后所有的 %llu
都不能识别了.

模板是 rtthread 的代码模板, 是有什么冲突在里面导致的吗?
是不是rt-thread对 c库改了些什么, rtos没启动, 就运作不正常了呢?
赞1个👍
补充一下. 系统stack的对齐问题, 在 link.lds 里面设置.
原本是4字节对齐的.
要改为8字节对齐
因为这个stack是受到前面 *(.data) 的影响. 会影响后面8字节对齐. 偶尔对齐偶尔不对齐. 看具体的全局变量…