수행기록퀘스트4
안녕하세요
드디어 주말이 와서 퀘스트를 진행해 봅니다.
오늘은 시골집에 와서 여유있게 퀘스트를 해보려고 했는데 이제 100일지난 둘째가 가만두질 않네요 ㅠㅠ
퀘스트를 위해 셋팅을 했습니다.
이렇게 셋팅하고.. 실제로 밤이되서야 퀘스트를 시작했네요 ㅋㅋ;;;;;
프로젝트를 생성한뒤에 PA14를 인터럽트로 설정한뒤 NVIC에서 EXTI line14 interrupt를 활성화 시켜줍니다.
그래야 stm32mp1xx_it.c에 void EXTI14_IRQHandler(void)함수가 생성이됩니다.
PA14의 모드는 External Interrupt Falling Edge입니다.
mcu의 설정을 끝내고 코드를 생성합니다.
stm32mp1xx_it.c파일의 void EXTI14_IRQHandler(void)함수내의 HAL_GPIO_EXTI_IRQHandler()함수가 정의된곳을 확인해보면
HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);함수가 있습니다.
이함수는 stm32mp1xx_hal_gpio.c에 __weak 으로 선언되어 있습니다.
다들 잘 아시겠지만 __weak이 있으면 다른곳에 동일한 함수가 선언이 되어있으면 __weak으로 선언된함수는 무시됩니다.
우리는 이 함수를 사용하기 위해 main.c에 void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)함수를 선언한뒤
함수 내용을 작성하면됩니다.
이제 코드 생성, 수정 부분을 모두 끝냈으니 컴파일한뒤 퀘스트통과를위한 결과를 가져오기만 하면됩니다.
1. STM32CubeMX와 STM32CubeIDE를 사용하여 작성하고 빌드된 M4 프로젝트의 디렉토리 구조를 출력하여 제출.
2. STM32CubeIDE상에서 USER1 버튼을 누를 때 Interrupt handler 또는 HAL callback에서 브레이크 포인트를 설정하여 캐치된 상태의 화면을 캡쳐하여 제출 (code symbol 창과 stack 창은 필수로 포함되어야 함)
LED Toggle부분에 Break point를 걸은 화면입니다.
gdb로도 확인이 가능합니다.
3. M4 펌웨어를 linux 부팅시에 로딩되도록 포함한 뒤에 부팅 로그를 캡쳐하여 제출.
4. DK2 target 보드를 부팅(리셋)하여 바로 USER1 버튼을 누를 때마다 LD6가 토글되는 것(M4 펌웨어가 동작하는 것)을 영상으로 캡쳐하여 제출.
m4를 이용하여 GPIO제어와 인터럽트 실습을 해보는 유익한 퀘스트였습니다.
로그인 후
참가 상태를 확인할 수 있습니다.