Показать сообщение отдельно
Старый 17.12.2013, 20:38   #5
dosikus
Супер-модератор
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,220
Сказал спасибо: 851
Сказали Спасибо 1,902 раз(а) в 1,121 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32 - Tips 'N Tricks

swo.h
Код:
 
#ifndef _SWO_H       
#define _SWO_H  

void SWO_PrintChar (char c);
void SWO_PrintString(const char *s);

#endif
swo.c
Код:
/***********************************************************************************
* 
*
* Defines for Cortex-M debug unit
*/
#define ITM_STIM_U32 (*(volatile unsigned int*)0xE0000000) // STIM word acces
#define ITM_STIM_U8 (*(volatile char*)0xE0000000) // STIM byte acces 
#define ITM_ENA (*(volatile unsigned int*)0xE0000E00) // ITM Enable
#define ITM_TCR (*(volatile unsigned int*)0xE0000E80) // ITM Trace Control Reg.
#define DHCSR (*(volatile unsigned int*)0xE000EDF0) // Debug register
#define DEMCR (*(volatile unsigned int*)0xE000EDFC) // Debug register
/************************************************************************************
*
* Function description
* Prints a character to the ITM_STIM register in order to provide data for SWO
*/
void SWO_PrintChar(char c) {
//
// Check if SWO is set up. If it is not, return to avoid that a program
// hangs if no debugger is connected.
//
//
// Check if DEBUGEN in DHCSR is set
//
if ((DHCSR & 1)!= 1) {
return;
}
//
// Check if TRACENA in DEMCR is set
//
if ((DEMCR & (1 << 24)) == 0) {
return;
}
//
// Check if ITM_TRC is enabled
//
if ((ITM_TCR & (1 << 22)) == 1) {
return;
}
//
// Check if stimulus port 0 is enabled
//
if ((ITM_ENA & 1) == 0) {
return;
}
//
// Wait until STIMx is ready to accept at least 1 word
//
while ((ITM_STIM_U8 & 1) == 0);

ITM_STIM_U8 = c;
}
/************************************************************************************
*
* SWO_PrintString
*
* Function description
* Prints a string via SWO
*
*/
void SWO_PrintString(const char *s) {
//
// Print out character per character
//
while (*s) {
SWO_PrintChar(*s++);
}
}
Вывод строк через swo .
Выдрано из мануала JLink .Проверено в IAR, Keil, Eclipse
Подключаем файлы к проекту . Подключаем PB3 (конфигурация по умолчанию) к SWO Jlink .
В IAR отметить General options , вкладка Library Configuration -> Library low-level interface implementation -> Via SWO
В Keil в настройках дебуггера разрешить trace.
Выхлоп наблюдаем в терминалах дебуггеров.
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 17.12.2013 в 20:40.
dosikus вне форума   Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо dosikus за это сообщение:
-shiva- (28.12.2013), dadigor (18.12.2013), Easyrider83 (18.12.2013), kot-69 (20.12.2013), tempora (18.12.2013)