CS/Embedded System

[실습] Memory Map for P1.0 Red LED

WakaraNai 2021. 10. 13. 15:56
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