
디버거를 통한 레지스터 확인
MCU의 현재 상태를 정확하게 확읺할 수 있는 가장 확실한 방법
-> MCU의 현재 레지스터 값 확인
디버거를 통해 실제 MCU 레지스터 값을 확인해보기
ex) STM32 Cube IDE MCU: stm32l45vit6
확인할 내용
-> GPIOA_ODR 레지스터의 OD1 비트 값이 1,0 반복 되는지
unsigned in test_while_cnt;
int main(void)
{
__HAL__RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
while(1)
{
test_while_cnt++;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
for(int i=0;i<100;i++)
;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
for(int i=0;i<100;i++)
;
}
}
Quiz 1. MCU에서 GPIO나 ADC 같은 특정 기능들은 주로 어떤 하드웨어 장치에 의해 제공될까?
A. 페리펄럴(Peripheral)
MCU의 다양한 기능은 내부에 탑재된 페리펄럴이라는 독립적인 하드웨어 장치들이 제공하며, 페리펄럴 종류에 따라 지원하는 기능이 다름
Quiz 2. MCU 소프트웨어 개발자가 페리펠럴의 동작을 제어하기 위해 가장 핵심적으로 다루는 것은?
A. 페리펄럴 레지스터
각 페리펄럴 내부에는 레지스터라는 작은 메모리 공간이 있으며, 소프트웨어는 이 레지스터의 값을 읽거나 써서 페리펄럴의 동작을 제어함
Quiz 3. 페리펄럴 레지스터 하나는 여러 개의 비트들로 구성되는데, 이 비트들 중 특정 설정이나 상태를 나타내는 최소 단위는?
A. 비트필드(Bit Field)
레지스터는 여러 개의 비트필드로 구성되며, 각 비트필드는 1개 또는 여러 개의 비트로 이루어져 특정 기능이나 값을 의미함. 메뉴얼을 보고 해석
Quiz 4. MCU 제조사가 제공하는 데이터시트나 사용자 메뉴얼이 MCU 소프트웨어 개발자에게 가장 중요한 이유 중 하나는?
A. 페리펄럴 레지스터 정보와 사용법 파악
메뉴얼에는 MCU 내 각 페리펄럴의 종류, 레지스터 정보, 비트필드의 의미 및 사용 방법이 상세히 설명되어 있으며 SW 개발의 필수 참고 자료임
Quiz 5. 드라이버 소프트웨어(API)를 사용하면 MCU 제어가 편리해지지만, 전문 개발자에게 MCU 내부 레지스터 구조와 동작 방식을 이해하는 것이 여전히 중요한 이유는?
A. 하드웨어 디버깅 및 문제 해결 능력 향상
드라이버 SW는 레지스터 제어를 추상화하지만, 예상대로 도작하지 않을 때 레지스터 값을 확인하는 등 하드웨어 레벨의 디버깅이 문제 해결에 필수적이기 때문