CS/Embedded System

Header file에 정의된 macro와 데이터형 이용하기

WakaraNai 2021. 10. 13. 16:01
728x90
반응형

ex) memory mapped I/O address in “msp.h”

 

#define  PERIPH_BASE  ((unit32_t) 0x40000000)

#define  DIO_BASE  (PERIPH_BASE + 0x00004C00)

#define  P1  ((DIO_PORT_Odd_Interruptable_Type *) (DIO_BASE + 0x0000))

 

 

ex) GPIO P1의 base address 구하기

  • periph는 MSP 붙어있는 주변의 여러 하드웨어를 의미 ( GPIO, 통신, watchdog 등등)
  • 모듈 DIO register의 base address = ( PERIPH_BASE + 0x00004C00 )
    • periph 0x4000000 중에서 0x00004C00 뒤로부터 GPIO 주소가 나옴
  • P1 = ( PERIPH_BASE + 0x00004C00 ) + 0x0000  = 0x40004C00 
  • P1->OUT = 0x40004C00 + 02h
    • out은 두 번째 offset 이기에 처음에다가 offset으로 02h 추가
  • GPIO P1.0에 0x01을 쓰고 싶다면, P1->OUT = 0x01
    • P1->OUT의 주소는 0x40004C02이고, 그곳에 써진 값이 0x01

 

8 마다 offset 한 칸 증가

uint의 u는 unsigned

  • 주소에서 부호 개념은 필요없기에
  • P1에서 1은 홀수이기에 Odd쪽을 봤음

 

 

포인터 변수로 생성됐다면, 즉 초기화 시 * 를 붙였다면

이후에 *를 떼고 값을 받았을 때 주소 자체가 바뀌는 것

 

그런데 처음부터 *를 붙이지 않고 생성했다는 것은 일반 변수

그러므로 * 없이 적어도 주소를 건드리지 않고 값에 그대로 접근

 

 

728x90
반응형

'CS > Embedded System' 카테고리의 다른 글

[실습] User Button Initialization & State Machine  (0) 2021.10.13
I/O Devices - Polling & Pull-up resistor  (0) 2021.10.13
[실습] Memory Map for P1.0 Red LED  (0) 2021.10.13
Bit Operator  (0) 2021.10.13
전자공학 기초 2  (0) 2021.10.13