Микроконтроллеры STM32 имеют возможность вывода отладочной информации через специализированный вывод Serial Wire Output (SWO) программного интерфейса SWD, что не требует применения дополнительных разъемов на плате и позволяет осуществить однонаправленную передачу данных от микроконтроллера к программе отладчика.
Опция позволяет начать вывод сообщений, используя всего одну встроенную команду - «printf», обеспечивая при этом малые нагрузки на ядро процессора.
Для применения SWO в среде Keil µVision, потребуется выполнение следующих действий: 1.Перед функцией main необходимо разместить код:
#include
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n))) #define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n))) #define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n))) #define DEMCR (*((volatile unsigned long *)(0xE000EDFC))) #define TRCENA 0x01000000
struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; FILE __stdin;
int fputc(int ch, FILE *f) { if (DEMCR & TRCENA) { while (ITM_Port32(0) == 0); ITM_Port8(0) = ch; } return(ch); }
2. В программе main разместить команду - printf("Text\n\r") 3. Настроить программатор-отладчик в соответствии с настройками
4. Запустить процесс отладки – Start/stop Debag Session 5. Выбрать в меню - View/Serial Windows/Debug printf() Viewer 6. Нажать - Run
После чего можно закрыть среду отладки, запустить STM32 ST-LINK Utility и наблюдать за автономным выполнением кода программы в устройстве.
Вывод информации SWO имеет аппаратную поддержку ядра Cortex-M3/M4, что требует минимальных затрат ресурсов и может быть наиболее востребовано при получении данных от микроконтроллера, работающего в условиях крайне низкого энергопотребления.
Дополнительную информацию о микроконтроллерах STM32 можно получить на сайте компании STMicroelectronics. |