해결된 질문
작성
·
136
0
HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET);
1.켠다
*(0x40011000) = (8192);
*reg2= 0x2000;
2.끈다
*(0x40011000)= (8192<<16);
*reg2= (0x2000 << 16);
이라고 해석이 되었는데 , 실제 디버깅 시에는 *(0x40011000) 가 아니라 *(0x40011010) 일때 동작하는 이유가 무엇인가요?
답변 1
0
실제 디버깅 시에는 (0x40011000) 가 아니라 (0x40011010) 일때 동작하는 이유가 무엇인가요?
좀 더 자세히 설명을 드릴게요.
GPIO의 레지스터가 있고, Cport에 해당하는 것은 0x40011000이 맞아요.
그런데 이 안에 또 세부적으로 나뉘는게 있어요. (레퍼런스 메뉴얼 171쪽 부터 보시면 나와요)
CRL, CRH, IDR, BSRR 등등.
근데, gpio를 set하고 reset하려면
BSRR을 조작을 해야하고요.
BSRR의 offset이 0x10입니다.
그래서 0x40011010이 되는 거예요. (3:28 초 쯤에 보면 GPIOx->BSRR 이라고 나와요.)