728x90
반응형
GPIO memory map 범위 : 0x40004C00 (base address) ~ 0x40004FFF
- 총 크기 : 1024 byte
- GPIO port : 1번부터 10번까지 ( 0번 없음! )
- 핀은 0번부터 7번까지 총 8개
Port Direction Register (PxDIR)
- 특정 [포트:핀] GPIO 핀 입력/출력 모드 설정
- switch button은 입력으로, led on/off는 출력으로
- 크기 : 1 byte (= 8bit) -> 8개의 핀을 의미
- 값 : 0b==0, 1b==1, 0h==00000000
Port Output register (PxOUT)
- 특정 [포트:핀] GPIO 핀의 출력 값 지정 ( 1:HIGH, 0:LOW )
- 크기 : 1 byte = 8 bit ( 1bit가 하나의 핀을 지칭 )
GPIO P1.0 Output
- P1OUT == Base address + offset == 0x40004C00 + 0x02
Set pin#0 as HIGH signal
- ???? ???1
- 0x40004C02 주소에 값에서 가장 오른쪽 bit를 1로 지정
volatile Keyword in C
- 제외해도 되는 코드를 없앰으로써 성능 최적화을 하는데 이로인해 외부 하드웨어 제어 시 문제가 발생.
- buffer가 꽉 차있으면 buffer_full =1 아니면 0
- 그런데 buffer_full 값을 확인만 하고 변경해주는 코드가 없다면ㄷㄷ
- 처음에 buffer_full을 0으로 읽어서 무한 루프를 돌고
- 이후에는 buffer_full을 확인하지 않음
- 하드웨어에서 바뀌는 값을 건너뛰지 않도록,
- 컴파일러 최적화에서 제외시켜 항상 읽어달라고 표시하기 위해 VOLATILE 설정
+) P1.0 LED와 P1.6 외부 LED를 동시에 깜박이기
6번 핀에 1을 표시하려면, 0100 0000 == 64 == 0x40
여기에 1번 핀도 같이 작동시키기 위해 0100 0001 == 0x41
728x90
반응형
'CS > Embedded System' 카테고리의 다른 글
I/O Devices - Polling & Pull-up resistor (0) | 2021.10.13 |
---|---|
Header file에 정의된 macro와 데이터형 이용하기 (0) | 2021.10.13 |
Bit Operator (0) | 2021.10.13 |
전자공학 기초 2 (0) | 2021.10.13 |
Microprocessor 기초 - MSP432P4111 (0) | 2021.10.13 |