[C] C언어의 조건부 컴파일 지시자(#if #ifdef #ifndef #endif)
·
소프트웨어/C
C는 값 또는 식을 기준으로 조건부 컴파일을 수행할 수 있다. #define #define은 을 로 치환해준다.#include #define PI 3.141592int mian(void){ print("%d\n", PI); return 0;}#if 이 참이면, #if와 #endif 사이의 코드를 컴파일한다. 이는 보통 중복 컴파일을 방지하기 위해 사용된다.#if 값 or 식코드#endif #if, #endif 는 전처리기 과정을 거치면 조건이 참인 코드만 남는다.#include #define PI 3.14int main(void){#if PI == 3.14 printf("PI는 3.14");#elif PI > 3.14 printf("PI값이 좀 이상한데?");#endif prinf("PI값..
[C] volatile 키워드
·
소프트웨어/C
volatile 키워드는, 컴파일 시간에 해당 변수를 최적화에서 제외시켜 오류를 방지하는 역할을 한다. volatile에 대한 좋은 정리1. https://m.blog.naver.com/eslectures/80143556699 2. https://blog.naver.com/guile21c/50550159
Timer를 이용한 입출력 제어
·
Embedded Systems
서론STM32를 활용한 임베디드 프로젝트를 진행하며, ST사의 HAL 라이브러리에 익숙하지 않아 프로그래밍 과정에 많은 어려움을 겪는 문제가 생겼다. 따라서, 책 "STM32F 시리즈를 이용한 ARM Cortex-M3/M4 구조와 응용"의 Timer 내용을 공부해 HAL 라이브러리를 활용한 Timer 기능 활용에 익숙해지고자 한다. 1. 범용(General-purpose) 타이머의 구조 및 기능STM32F103RB 보드의 Spec을 기준으로 합니다.1.1 STM32F 타이머 종류General-purpose TimerAdvanced TimerBasic TimerChannel Timer1.2 General-purpose Timer의 구조Prescaler (PSC) : 16비트의 프리스케일러는 공급되는 클럭(..
USB 통신
·
Embedded Systems
서론UART 통신을 공부하면서, USB통신 또한 개념을 잡고자 한다. 책 "STM32F 시리즈를 이용한 ARM Cortex-M3/M4 구조와 응용"을 참고하였다.본론1. USB 통신의 개요1.1 USB의 개요1.1.1 USB(Universal Serial Bus)의 탄생1990년대 이후 PC의 성능이 향상되고 용도가 확장되면서 통신을 해야 할 주변 장치의 종류와 숫자가 급속하게 늘어났다. 이러한 배경에서 기존 사용되던 프린터포트와 RS-232C 직렬포트는 통ㅅ니 속도가 느리고 확장 능력이 제한된다는 한계에 부딛혔다.이러한 단점을 극복하기 위해 1994년 7개의 회사가 주축이 되어 PC와 주변 장치와의 새로운 직렬 통신 방식을 개발하기 시작하였고, 그 결과 탄생한 것이 USB이다. USB는 하나의 host..
UART 통신
·
Embedded Systems
서론임베디드 관련 프로젝트를 하면서 UART 통신을 사용하게 되었는데, 까먹은 개념적 부분이 많아 이를 복습하였다. 책 "STM32F 시리즈를 이용한 ARM Cortex-M3/M4 구조와 응용"을 참고하였다. 본론1. 직렬통신 및 UART1.1 직렬 통신(Serial communication)1.1.1 직렬(Serial) 통신과 병렬(Parallel) 통신컴퓨터와 마이크로프로세서, 그리고 IC 칩들 사이에 데이터를 서로 주고 받는 것을 데이터 통신이라고 한다. 이런 데이터 통신 방식은 여러 가지가 있을 수 있으나, 통신에 사용되는 channel 수를 기준으로 구분하면 직렬 통신과 병렬 통신으로 구분할 수 있다.직렬 통신은 클럭당 1비트의 데이터를 전송하고, 병렬 통신은 클럭당 여러 비트를 전송하는 방식이..