Not Getting Any Output to Port Nucleo-64

39 Views Asked by At

I am trying to get started with stm32 and I am trying to get it to move from the fifo in my ITM to the SWD so that I can test that it is properly working. So in my main.c I have

#include <stdint.h>


#if !defined(__SOFT_FP__) && defined(__ARM_FP)
  #warning "FPU is not initialized, but the project is compiling for an FPU. Please initialize the FPU before use."
#endif

#include <stdio.h>

int main(void)
{
    printf("hello world\n");
    /* Loop forever */
    for(;;);
}

and in my syscalls.c I have all of the defaults but I implemented a function and edited the __write shown below

#define DEMCR                   *((volatile uint32_t*) 0xE000EDFCU )

/* ITM register addresses */
#define ITM_STIMULUS_PORT0      *((volatile uint32_t*) 0xE0000000 )
#define ITM_TRACE_EN            *((volatile uint32_t*) 0xE0000E00 )

void ITM_SendChar(uint8_t ch)
{

    //Enable TRCENA
    DEMCR |= ( 1 << 24);

    //enable stimulus port 0
    ITM_TRACE_EN |= ( 1 << 0);

    // read FIFO status in bit [0]:
    while(!(ITM_STIMULUS_PORT0 & 1));

    //Write to ITM stimulus port0
    ITM_STIMULUS_PORT0 = ch;
}

__attribute__((weak)) int _write(int file, char *ptr, int len)
{
  (void)file;
  int DataIdx;

  for (DataIdx = 0; DataIdx < len; DataIdx++)
  {
    //__io_putchar(*ptr++);
      ITM_SendChar(*ptr++);
  }
  return len;
}

I am able to build the project and debug it but when I look at port 0 I am getting no output even though I enabled trace.

I tried to redo the process, check my debug config, make sure my code was properly written and I am looking at the correct port.

0

There are 0 best solutions below