레지스터3 13. [STM32] Interrupt-Register 이번장에서는 인터럽트에 관련된 레지스터에 관해 살펴보자.순서는 인터럽트가 초기화 되는 순서대로 볼 것이다.이 순서는 MX_GPIO_Init()함수에서 각 핀별로 호출되는 HAL_GPIO_Init()함수와 HAL_NVIC_SetPriority(), HAL_NVIC_EnableIRQ()에 구현된 순서이다. HAL_GPIO_Init()에서 사용되는 레지스터의 경우 '1. 레지스터 초기화(GPIO설정)'에서 나머지는 '2. Control 레지스터 초기화'에서 설명한다. 1. 레지스터 초기화(GPIO 설정)인터럽트 초기화 설정은 CubeMX의 설정 따라 MX_GPIO_Init()에서 설정되고 각 핀별로 HAL_GPIO_Init()을 통해 초기화 된다.HAL_GPIO_Init()함수의 GPIO설정 부분은 GPIO .. 2024. 9. 26. 9. [STM32] Bit-banding 이전 장에서 살펴본 바와 같이 GPIO를 제어할때 HAL Library를 사용하거나 레지스터를 직접 엑세스 해서 제어 할 수 있었다. 하지만 HAL Library내부로 들어가면 어차피 레지스터를 엑세스하는게 전부이므로 사실 둘다 동일한 방법이라고 볼 수 있다.HAL Library 내부를 살펴볼때 확인했겠지만 각 레지스터는 대부분 비트단위로 제어를 해야 하는데 우리가 엑세스할 때는 uint32_t를 사용해 4바이트 단위로 엑세스를 해야하기 때문에 각종 Mask와 비트 연산자들을 사용해야 한다. 이 장에서 소개할 Bit-banding은 이런 접근을 좀더 편하게 할 수 있도록 해주는 방법이다. 즉 각 레지스터 하나의 비트를 남는 메모리에 4바이트 단위로 할당해서 각 비트를 엑세스 할 수 있도록 해주는 방식이다.. 2024. 9. 10. 8. [STM32] GPIO - Peripheral Register 2 앞장에서 HAL Library의 소스를 통해 GPIO의 레지스터를 살펴보았다.이번장에서는 앞에서 살펴보지 않은 GPIO초기화 관련 내용들을 살펴보자. 본 블로그는 STM32를 소프트웨어 엔지니어 관점에서 바라본 블로그입니다. 따라서 회로등의 전자공학 관련 내용은 사실과 다를 수 있습니다. 본 블로그에서 사용된 MCU 및 개발보드는 다음과 같습니다. NUCLEO-F429ZI (STM32F429ZIT LQFP144) NUCLEO-F439ZI (STM32F439ZIT LQFP144) " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 1. GPIO 초기화 함수GPIO의 초기화 함수는 main함수에서 .. 2024. 8. 13. 이전 1 다음