작성
·
221
·
수정됨
0
SD카드 인터페이스와 FATFS 오픈소스를 이용해 출력하는 강의대로
GPIO 핀맵 설정하고
코드를 따라 작성했는데 SD카드에 저장된 데이터가
Character LCD로 출력되지 않습니다.
의심되는 문제는 두 가지입니다.
Cube MX 때와 다르게 파일의 구성이 더 세분화 되어있습니다.
강의 때 작성한 소스코드에서는 Src 폴더안에 bsp_driver_sd.c 파일과
sd_diskio.c 파일이 같이 들어있는데
현재 업그레이드 된 STM Cube IDE에서는 해당 소스코드가 다른 폴더의 경로로 세분화 되어있습니다.
이것 때문에 인클루드 참조가 어려워져서
참조가 안되는 일부 함수로 인해 SDIO 통신이 안되는 것은 아닌지요??
헤더파일의 참조 또한 다릅니다.
stm32f4xx_hal_conf.h 파일은 Inc 폴더안에 있는데,
이것을 인클루드 하는 파일은 Drivers ->STM32F4xx_HAL_Driver->Inc->Legacy 경로에
stm32f4xx_hal.h 이 헤더파일이 stm32f4xx_hal_conf.h 파일을 인클루드 하고 있늗네
폴더 경로가 다르면 인클루드시 경로까지 고려하여 다시 작성해야 되는걸로 알고 있습니다.
저렇게 작성하면 참조가 되지 않아 동작이 중단되는 것으로 생각하는데
어떤점이 잘못된 것인지요??
MX_NVIC_Init(); 함수의 내부 코드
--> 3번의 경우 UART 통신 / 이전의 외부인터럽트 구현을 위한 것의 초기화로 알고 있는데
SDIO를 위한 NVIC 인터럽트 설정도 있는지요?? 코드를 열어보면 해당내용은 없는데,
SDIO구현을 위한 global interrupt는 GPIO 핀맵에서 체크해두면 다른 소스코드에 작성되는 건가요?
SDIO구현을 위한 함수를 일일이 다 들여봐야 할 것 같은데
시간상 효율이 떨어지는 길로 보여 질문드립니다.
추가로 해당링크에 제가 작성한 소스코드 파일을 첨부드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
현정호님의 질문은 프로그래밍과 직접적으로 관련된 내용으로 STM32F4 시리즈와 그 개발 환경에 대한 지식이 필요합니다. 제공해주신 정보 내에서 관련 정보를 찾을 수는 없지만, 일반적인 지식과 경험을 바탕으로 도움이 될 수 있는 답변을 드리겠습니다.
프로젝트의 헤더 파일 경로가 변경되었을 때, 해당 헤더 파일들의 참조가 올바르게 되어 있는지 확인해야 합니다. 이를 위해서는 IDE의 프로젝트 설정에서 Include 경로를 확인하고 필요한 경우 새로운 경로를 추가하여 컴파일러가 헤더 파일들을 정확히 찾을 수 있도록 해야 합니다.
stm32f4xx_hal_conf.h
파일의 경로가 변경되었다면 인클루드 문에서 상대경로 또는 절대경로를 업데이트 해야 합니다. 어떤 파일들이 이 헤더 파일을 인클루드하고 있는지 확인한 뒤, 경로를 적절히 수정해 주어야 합니다.
SDIO와 관련된 NVIC 인터럽트 설정이 필요한 경우, 이는 보통 CubeMX에서 설정하거나, 소스 코드 내부에 직접 NVIC 인터럽트 설정 코드를 추가하여 구현합니다. GPIO 핀맵에서 체크했다면 자동으로 생성된 코드 내에 해당 설정이 포함되어 있을 수 있습니다. 이 부분은 CubeMX의 설정이나 생성된 코드를 검토하여 확인해보아야 합니다.
기술적인 문제로 인해 코드가 예상대로 동작하지 않는 경우, 사소한 설정 실수에서부터 복잡한 논리적 오류까지 다양한 가능성이 있을 수 있으므로, 문제를 분리해서 접근하고, 시스템적으로 디버깅을 진행하는 것이 중요합니다. 추가적으로 제공해주신 링크에 있는 소스코드 파일을 면밀히 검토하고, 동일한 환경에서 테스트를 수행하여 문제를 해결해 보시길 권장드립니다.