C언어 Chapter 29.파일 입출력 파일 입출력 📌 C 언어는 자체에서 입출력의 기능을 제공하지 않고, 라이브러리 함수를 이용하여 데이터의 입출력을 처리한다. 🔔 예) 입출력을 지원하는 C++언어의 예 실행 결과 C 언어에서의 파일의 개념과 형식 프로그램에서 사용되는 여러 가지 파일 입출력 함수를 소개한다. 입출력 스트림과 저장 형식 C언어에서는 여러가지 입출력 장치를 논리적인 파일로 본다. 📌 스트림 파일과 프로그램 사이에 교환되는 연속적인 1byte의 흐름을 말한다. size 가 정해지지 않은 바이트의 흐름. 구조체는 size가 정해져 있음으로 블록단위로 정의한다. 텍스트 스트림 : 파일을 텍스트모드(text mode) 로 열 때 사용된다. 이진 스트림 : 파일을 이진 모드(binary mode)..
C언어 Chapter 28. 연결리스트에 많이 사용되는 함수 연결리스트를 인수로 넘겨받아 내용을 출력하는 함수 void print_list (NODE *head) { if (head == NULL) { printf("NULL\n"); } else { printf("%c ==> ", head -> data); print_list (head -> next); } } 연결리스트의 노드의 개수를 헤아리는 함수 int count (NODE *head) { if (head == NULL) { return 0; } else { return (1 + count (head -> next)); } } 연결리스트의 메모리를 해체하는 함수 void loop_free (NODE *head) { NODE *temp, *curre..
C언어 Chapter 27 💡 static 변수의 메모리 주소는 컴파일시에 주소값이 고정된다. 실행될 때 만들어지는 주소는 다이나믹 변수이고, (heap, stack), 실행되기 전에 만들어 지는 주소는 전역변수다.(code, data, BSS) 구조체를 가리키는 포인터 변수 STUDENT *sp; 구조체 를 가리키는 포인터변수는 일반 포인터 변수와 동일하다. ap->age = 20; 포인터 변수로 구조체에 접근할 때는 도트표기대신 화살표를 사용. (*sp).age; 위 와 동일하지만 일반적으로 화살표를 많이 사용한다. 🔔 Ex) 데이터 파일에서 키와 몸무게를 읽어 비만을 체크하는 프로그램 💡 프로그램 설명 sp->name 위와 같은 구조체 포인터 사용법에 중점을두고 소스를 분석 할 것 [ d9-5.da..
C언어 Chapter 26. 💡 구조체 내부에서 빈 메모리공간을 사용하지 못하도록 사용하지 않는 char형 배열로 막아버리는 형태 typedef struct EMB { int A; char B; char pad[3]; // 사용하지 않는 메모리 공간을 막는 변수 int C; } emb; [위 소스의 메모리 형태] int A char B char pad[3] int C 구조체 초기화(복습) typedef struct EMB { int A; char B; char pad[3]; int C; }emb; 위 소스는 main 문에서 다음과 같이 초기화 할수 있다. int mian( ) { emb A; emb B = {0, 0,{1, 2, 3}, 100} return 0; } typedef struct EMB 구조..
C언어 Chapter 25. 문자 함수 문자를 다루는 라이브러리 함수의 헤더파일이 에 정의되어 있다. 문자가 특정부류에 속하면 참을(1), 아니면 거짓(0)을 봔환. 🔔 예) 문자 함수를 사용한 프로그램의 예 #include #include int main() { if(isalnum ('a')) { printf("\'a\' is alphnum\n"); // 'a' is alphnum } else { printf("\'a' is not alphnum\n"); } if(iscntrl ('\5')) { printf("\'5\' is aplhnum\n"); // '\t' is cntl } else { printf("\'5\' is not aplhnum\n"); } if(iscntrl ('\t')) { print..
Keil uVision5 컴파일러를 이용한 STM32F407VET6 UART 동작 테스트 STM32F407VET6 의 UART 를 이용하여 PC와 RS-232 통신 테스트를 진행한다. 제작 보드의 UART PIN 도면은 아래와 같이 UART1-EXT : PA10, PA9, UART6-EXT : PC7, PC6 이다. main 함수와 UART 초기화 함수를 아래와 같이 구현한다. 시리얼 통신프로그램을 이용하여 아래와같이 옵션을 정의한 후 통신결과를 확인한다.
Keil uVision5 컴파일러를 이용하여 STM32F407VET6 칩 동작 system clock 을 사용한 Real Time Delay 함수를 사용는 방법에 대하여 설명한다. Keil uVision5 에서 제공하는 Stm32f4xx_hal.h 라이브러리에 아래와 같이 HAL_Delay 함수를 제공한다. 문제점) Delay 함수 내부의 HAL_GetTick 함수의 반환 값이 계속 0으로 읽혀 Delay 함수가 제대로 동작되지 않았다. 해결방법은 Startup Component 를 선택하면 생성되는 Startup_stm32f407xx.s파일 내용중 Systick_Handler함수를 main함수 내부에 생성하여 인터럽트를 처리해주면 된다. Systick_Handler핸들 내부에는 Stm32f4xx_hal..