lwipopts.h 파일 수정 및 추가
/*----- Value in opt.h for LWIP_STATS: 1 -----*/
#define LWIP_STATS 1
//...
/* USER CODE BEGIN 1 */
#define LWIP_DEBUG 1
#define NETIF_DEBUG LWIP_DBG_ON
#define DHCP_DEBUG LWIP_DBG_ON
#define UDP_DEBUG LWIP_DBG_ON
#define MEMP_DEBUG LWIP_DBG_ON
#define MEM_DEBUG LWIP_DBG_ON
#define ICMP_DEBUG LWIP_DBG_ON
/* USER CODE END 1 */
arch.h 파일에 다음과 같이 정의되어 있기 때문에 printf를 redirection 해주면 된다. 혹은 다른 입출력함수를 사용할 수 있다.
/** Platform specific diagnostic output.\n
* Note the default implementation pulls in printf, which may
* in turn pull in a lot of standard libary code. In resource-constrained
* systems, this should be defined to something less resource-consuming.
*/
#ifndef LWIP_PLATFORM_DIAG
#define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0)
#include <stdio.h>
#include <stdlib.h>
#endif
uart를 사용하고 printf를 재정의
/* USER CODE BEGIN PD */
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
//...
int main(void)
{
MX_USART3_UART_Init();
//...
Expressions 에서 lwip_stats확인
다음과 같이 로그를 볼 수 있다. 오류가 발생시 오류메시지가 뜬다.
'임베디드 개발 > STM32 (ARM Cortex-M)' 카테고리의 다른 글
STM32 ] 28BYJ-48 스텝모터 제어하기 (0) | 2022.12.04 |
---|---|
STM32 ] HAL_GetTick() 오버플로우에 대한 의문 (1) | 2022.12.02 |
STM32 ] UDP Client, lwIP Raw API (20) | 2022.10.03 |
STM32 ] TCP Client, lwIP Raw API (5) | 2022.10.03 |
STM32 ] TCP Server, lwIP Raw API (13) | 2022.10.02 |