일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 원형연결리스트
- 단순연결리스트
- 역순문자열
- 연결큐
- 학습일지
- Queue
- 개발자
- IAR
- 연결자료구조
- 이중연결리스트
- 원형큐
- Embedded
- 자료구조
- 알고리즘
- Firmware
- 큐
- C
- stm32cubemx
- 순차큐
- 임베디드
- 시스템스택
- 펌웨어
- 연결리스트
- FW
- 펌웨어개발자
- 스택
- 개발환경
- 다항식
- 개발
- c언어
- Today
- Total
목록임베디드 (9)
카누누카

나는 지금까지 stm32CubeIDE를 통해 펌웨어를 학습했다. 하지만, 회사에서 IAR을 사용하기 때문에, IAR 환경 세팅과 센서 제어를 정리해보려고 한다. 1) 칩셋 설정 Stm32CubeMX 2) 컴파일러 IAR Embedded Workbench 다행히 Stm32cubeIDE의 칩 셋 설정이 CubeMX의 칩셋 설정이랑 같다. IAR 초기 개발환경 세팅은 유튜버 Baram님의 IAR 개발환경 설정 영상을 보고 정리 할 예정이다. 1. new workspace 2. project -> Create New Project 3. project setting(project->option) 4. prcessor variant -> Device -> 보유한 보드의 칩 5. Use CMSIS -> 자세한 설명은..

- 순차 자료구조를 이용한 큐의 단점 1. 사용 크기가 배열 크기로 제한되므로 큐의 길이를 마음대로 사용할 수 없다. 2. 원소가 없어도 항상 고정된 크기를 유지해야 하므로 메모리가 낭비된다. --> 연결 자료구조를 이용해 크기 제한이 없는 연결 큐를 통해 한계점 보완. - 연결 큐 연결 큐에서 원소는 데이터 필드와 링크 필드를 가진 노드로 구성하며, 첫 번째 노드를 가리키는 front 포인터와 마지막 노드를 가리키는 rear 포인터를 사용한다. 연결 큐의 초기 상태(공백 큐)는 front와 rear를 NULL 포인터로 설정하여 표현한다. - 연결 큐의 대한 연산 알고리즘 - 연결 큐의 노드 구조체 1 2 3 4 5 6 7 8 9 10 11 12 #pragma once typedef char elemen..

1. 스택을 이용한 역순 문자열 스택의 LIFO 특성을 이용하여 역순 문자열을 간단히 만들 수 있다. 1) 문자열을 순서대로 스택에 삽입한다. 2) 스택에서 삭제하여 문자열을 만든다. 2. 시스템 스택 프로그램에서 수행되는 함수 호출과 복귀 순서는 가장 나중에 호출된 함수가 먼저 실행을 완료하고 복귀하는 순서를 따른다. 이처럼 함수의 호출과 복귀 순서는 역순의 관계를 가지므로 스택의 LIFO 구조를 응용해 관리할 수 있다. -> 이때 사용하는 스택을 시스템 스택이라 한다. 함수나 서브 프로그램 호출이 발생하면 호출된 함수의 작업으로 전환하기 위해 현재 작업 중인 지역 변수, 매개 변수 및 완료 후 복귀할 주소 등의 정보를 스택 프레임에 저장하여 시스템 스택에 삽입한다. 시스템 스택의 top은 현재 실행 ..

1. 스택의 개념과 구조 스택(Stack) 자료구조는 접시에 음식을 쌓아올리듯 데이터를 차곡차곡 쌓아올린 형태로 자료를 구성한다. 스택은 같은 구조와 같은 크기의 데이터를 정해진 방향으로만 쌓을 수 있고, top으로 정한 한 곳으로만 접근하도록 제한되어 있다. 따라서 top을 통해 들어온 데이터가 일정한 방향, 즉 아래(Bottom)에서 위로 차곡차곡 쌓이게 된다. - top 스택에서 유일하게 액세스가 허용된 지점으로 삽입과 삭제가 일어나는 위치이며 현재 스택의 가장 위에 있는 데이터 위치가 된다. 새로 삽입되는 데이터가 스택에서 가장 위에 있는 데이터가 된다. 스택에서 자료를 삭제할 때 top을 통해서만 가능하기 때문에 top에 있는 데이터, 즉 가장 위에 있는 데이터가 삭제되고 삽입된다. 이러한 스택..

1. 단순 연결 리스트를 이용한 다항식 표현 - 다항식에 있는 항 하나는 노드 하나로 표현한다. - 각 항마다 계수와 지수를 저장해야하므로 노드의 데이터 필드는 계수를 저장하는 coef와 지수를 저장하는 expo 필드로 구성하고, 링크 필드는 다음 항을 연결하는 포인터로 구성한다. 1 2 3 4 5 typedef struct Node { float coef; int expo; struct Node *link; }; cs A(x) = 4x^3 + 3x^2 + 5x B(x) = 3x^4 + x^3 + 2x + 1 2. 다항식 연결 자료구조의 항 삽입 알고리즘 - 다항식에 항을 추가하려면 연결 리스트의 마지막 노드 다음에 새로운 노드를 추가하는 알고리즘으로 정의할 수 있다. 1 2 3 4 5 6 7 8 9 1..

1. 이중 연결 리스트의 개념 - 한계점 단순 연결 리스트 : 선행 노드로 접근하기 어렵다. -> 원형 연결 리스트를 통해 한계점 극복. 원형 연결 리스트 : 현재 노드 바로 이전 노드로 접근하려면 전체 리스트를 한 바퀴 순회해야 한다. -> 이중 연결 리스트를 통해 한계점 극복. - 이중 연결 리스트 양쪽 방향으로 순회할 수 있도록 노드를 연결한 리스트 - 원형 이중 연결 리스트 1 2 3 4 5 typedef struct Dnode{ struct Dnode *llink; char data[5]; struct Dnode *rlink; } cs 2. 이중 연결 리스트의 알고리즘 - 공백 이중 연결 리스트를 생성하는 연산 1 2 3 4 5 6 7 // 공백 이중 연결 리스트를 생성하는 연산 linkedLi..

1. 원형 연결 리스트의 개념 단순 연결 리스트에서 마지막 노드가 리스트의 첫 번째 노드를 가리키게 하여 리스트 구조를 원형으로 만든 연결 리스트를 원형 연결 리스트라고 한다. -> 즉, "단순 연결 리스트의 마지막 노드의 링크 필드에 첫 번째 노드의 주소를 연결하여 구성" 단순 연결 리스트는 시작 노드에서 링크를 따라 마지막 노드에서 순환이 끝나지만, 원형 연결 리스트는 링크를 따라 계속 순환이 가능하다. 1 2 3 4 5 6 7 8 9 10 // 원형 연결 리스트의 노드 구조를 구조체로 정의 typedef struct ListNode { char data[4]; struct ListNode* link; } listNode; // 리스트 시작을 나타내는 head 노드를 구조체로 정의 typedef st..

※ 학습 일지를 쓰기 전, 순차 자료구조와 선형 리스트까지는 학습을 했었기 때문에 연결 자료구조부터 학습 일지를 써보려고 한다. 1. 연결 자료구조의 개념 - 순차 자료구조 구현 방식 및 한계 논리적인 순서와 물리적인 순서가 같기 때문에 원소 위치를 찾아 액세스하기 쉽지만, 삽입이나 삭제 연산을 한 다음 연속적인 물리적 위치를 유지하기 위해 원소를 옮기는 추가 작업을 해야 하며 그만큼 시간이 든다. 또한, 배열을 이용하여 구현하기 때문에 배열이 갖고 있는 메모리 사용의 비효율성 문제를 그대로 안고 있다. - 순차 자료구조의 연산 시간과 저장 공간에 대한 문제를 개선한 자료 표현 방법 1. 연결 자료구조(Linked Data Structure) -> 원소의 논리적인 순서와 물리적인 순서가 일치하지 않아도 ..