I'm new using STM32 microcontrollers, I have been trying to use the printf tracing in my code without success, anything is printed on the console. I can start a debug session, I can place breakpoints on my code, inspect variables and all works as expected but not the printf.
My setup :
I have reimplemented the _write method:
int _write(int32_t file, uint8_t *ptr, int32_t len)
{
/* Implement your write code here, this is used by puts and printf for example */
int i=0;
for(i=0 ; i<len ; i++)
ITM_SendChar((*ptr++));
return len;
}
And placed a breakpoint on:
__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
{
if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */
((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */
{
while (ITM->PORT[0U].u32 == 0UL)
{
__NOP();
}
ITM->PORT[0U].u8 = (uint8_t)ch;
}
return (ch);
}
And ITM->PORT[0U].u8 = (uint8_t)ch; is being executed, but no printf ouput in console.
Best Answer
There are three extra magic steps to get this working: