Enable printf via ST-Link in Keil for STM32
Configure ST-Link connection
You should use SWD interface (not JTAG!) for connecting ST-Link to your STM32 chip. For this use Next pins: SWDIO SWCLK SWO (used serial terminal for printf) GND
Configure Keil
Open system_stm32xxxx.c and find what Core clock frequency used (HCLK):
Go to Options
Debug tab. Ensure that you use ST- Link Debugger
Ensure that SWD is used
Go to Trace tab and setup next settings (use Core Clock that you found before, e.g. 16000000 Hz = 16.0 MHz):
Firmware part
Create file Retarget.c and add next:
#include <stdio.h>
#include <stdint.h>
#include "stm32l1xx.h"
#pragma import(use_no_semihosting_swi)
struct FILE {
int handle;
};
FILE stdout;
FILE stdin;
volatile int32_t ITM_RxBuffer;
int fputc(int ch, FILE *f) {
ITM_SendChar(ch);
return(ch);
}
void _sys_exit(int return_code) {
return ;
}
Instead of "stm32l1xx.h" in #include you should use your platform h file. You can found it name by unfolding system_stm32xxxx.c in Project view