Programming Tools/TCPL C Language

어디선가 주워들은 임베디드 C언어 코딩 기술 - 1 (Embedded C language coding technology picked up somewhere)

LiDARian 2021. 4. 29. 23:07
반응형

1. 같은 자료형은 붙여서 선언하는 것이 메모리에 효율적이다.

int a;
int b;
int c;
long d;
long e;
long f;

 

2. UNION 비트필드의 구성 방법

공용체는 멤버 중에서 가장 큰 자료형의 공간을 공유한다. 이런 특성을 이용해서 가장 큰 자료형을 정의하고 이를 분할하는 여러 멤버들로 구성해서 bitfield를 만들 수 있다.

 

참고 : dojang.io/mod/page/view.php?id=453

 

주로 로봇의 작동 모드를 제어할 때 아래와 같이 작성한다고 한다.

typedef union package_t{
	struct{
    	uint32_t actionone:1;
        uint32_t actiontwo:1;
        uint32_t actionthree:1;
        uint32_t reserved:26;
        uint32_t actionmode:3;
    }
   	uint8_t packet[4];
    uint32_t bitfield;
}TYPE_PACKAGE;

여기서 uint32_t나 uint8_t와 같은 자료형은 32비트, 8비트 정수형 자료형이란 뜻이다. 즉 char, short, int, long, long long과 같은 의미이다. 이런 자료형은 stdint.h 헤더에 선언되어있다.

 

참고 : dojang.io/mod/page/view.php?id=35

 

uint32_t actionone:1;의 의미는, 32비트 중 1개의 비트만 actionone으로 선언한다는 의미이다. 즉, 

 

struct{
  uint32_t actionone:1;
  uint32_t actiontwo:1;
  uint32_t actionthree:1;
  uint32_t reserved:26;
  uint32_t actionmode:3;
}

이 구조체는 32비트를 각각 actionone, actiontwo, actionthree, reserved, actionmode로 나눈다는 의미다.

반응형