반응형
반응형이거는 굳이 필요는 없을듯 하지만 실시간으로 어떠한 데이터를 모니터링 하기 위한 목적입니다.
소스 코드상에 원하는 부분에 printf 같은 명령어를 사용해서 출력을 모니터링 하는것입니다.
디버깅을 하는 방법에서 단순히 JTAG 대신에 UART를 선택해주시면 됩니다.
monitor device를 실행하면 아래처럼 터미널에서 정보를 볼수 있습니다.
오른쪽 화면에 Monitor가 떴죠?
그리고 터미널에 제가 뿌려놓은 데이터들이 출력되고 있습니다.
주로 사용하는 로그는 ESP에서 기본적으로 주어진 매크로를 사용하시면됩니다.
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/log.html
위의 링크에서 로그 매크로를 이용하시면 됩니다.
예)
static const char *TAG = "example";
ESP_LOGI(TAG, "Enable timer");
ESP_ERROR_CHECK(gptimer_enable(gptimer));
ESP_LOGI(TAG, "Start timer, stop it at alarm event");
단, 주의 할점.
ESP_LOGx 는 기본적으로 출력시 lock을 겁니다. 따라서 타이머 인터럽트에서 사용할경우 무한루프에 빠집니다.
절대 사용하면 됩니다.
그렇다면 어떻게 사용하고 싶은데 방법이 없냐. 있습니다.
"ets_printf" 를 이용하시면 인터럽트 콜백 함수내에서도 출력을 할수 있습니다.
extern int ets_printf(const char *fmt, ...);
// 타이머 콜백 함수
static bool IRAM_ATTR example_timer_on_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_ctx)
{
static bool led_state = false;
led_state = !led_state; // LED 상태 토글
gpio_set_level(LED_GPIO, led_state); // LED 상태 출력
// 안전한 printf 대체 함수 사용
ets_printf("Timer triggered: LED state = %d\n", led_state);
return true; // 타이머 인터럽트 계속 실행
}
-끝-
반응형
'개발 > BLE' 카테고리의 다른 글
ESP32 While 문에서 리셋 걸리는 현상 해결 (Task watchdog got triggered. ) (0) | 2025.02.06 |
---|---|
ESP32 VScode에서 디버깅 하기 (0) | 2025.02.06 |
ESP32 컴파일러 설치 (VScode) (0) | 2025.02.06 |
Measuring Bluetooth® Low Energy Power Consumption (0) | 2016.07.11 |
Reprogramming the CC2540 USB Dongle in the CC2540DK (0) | 2016.07.11 |
BLE 란? (0) | 2016.07.07 |
약어정리 - octets (0) | 2016.07.07 |
약어 정리 - MTU (0) | 2016.07.07 |