분류 전체보기 108

[Algorithm] C - 퀵 정렬(Quick Sort)

요약 시간 복잡도 : O(n log n) ~ O(n ^ 2) 정렬할 데이터에서 피벗을 기준으로 두 개의 비균등한 크기로 분할하는 작업을 반복 피벗 이하의 그룹과 이상의 그룹이 왼쪽, 오른쪽으로 분리되었을 경우 배열을 다시 분할 요소가 1개가 되었을 때 분할을 멈춤 퀵 정렬(Quick Sort) 퀵 정렬이란 정렬할 데이터에서 피벗(pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬하는 알고리증믈 말한다. 퀵 정렬은 가장 빠른 정렬 알고리즘으로, 찰스 앤터니 리처드 호어(C. A. R. Hoare)가 붙인 이름으로, 속도가 빠른 만큼 많이 사용되는 정렬 알고리즘이다. 만약 어떤 학생 그룹이 있고, 수가 8명이며 키 순서대로 정렬해야 되는 구조가 있다. 먼저 임의의 학생 A를 ..

Algorithm/이론 2022.11.14

[Algorithm] C - 이진 탐색(Linear Search)

요약 시간 복잡도 : O(log N) 데이터의 중간 값을 확인해 검색 범위를 반씩 좁혀가는 검색하는 검색 알고리즘 오름차순 또는 내림차순으로 정렬된 데이터 구조에서만 사용할 수 있음 검색이 반복될 때마다 검색 범위가 반으로 좁혀지므로 검색 속도가 빠름 검색 범위를 맨 앞, 맨 끝, 중앙 요소로 두고 중앙 요소의 값으로 학인함 이진 탐색(Binary Search) 이진 탐색이란 데이터가 오름차순 또는 내림차순으로 정렬되어 있을 때 검색하는 정렬 알고리즘이다. 이진 탐색은 정렬되지 않은 데이터에서는 사용할 수 없으나, 선형 검색보다 빠르게 검색할 수 있는 장점이 있다. 데이터의 중간 값을 확인해 검색 범위를 반씩 좁혀가며 검색하는 구조를 가지고 있다. 먼저 정렬된 배열이 있다고 가정한다. [5, 7, 15,..

Algorithm/이론 2022.11.14

[Algorithm] C - 선형 검색(Linear Search)

요약 시간 복잡도 : O(n) 검색 방법 중 가장 단순하여 구현이 쉽움 정렬되지 않은 데이터 구조에서도 사용 가능 길이가 길수록 비효율(모든 데이터 검색 필요) 선형 검색(Linear Search)이란 선형 검색이란 데이터가 모인 집합(배열, 링크드 리스트 등)에서 원하는 키 값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 검색하여 찾는 검색 알고리즘을 말한다. 다른 말로 순차 검색(Sequential Search)라고도 한다. 검색하고자 하는 데이터 집합이 있다고 가정한다. 이 배열에서 2라는 값을 찾기 위해 0번 인덱스 요소부터 차례로 검색한다. 위 배열에서는 2라는 값을 찾기 위해 4번의 검색으로 발견하였다. 첫 번째 인덱스 값 6 확인, 원하는 값이 아님 두 번째 인덱스 값 4 확인, 원하는 값..

Algorithm/이론 2022.11.14

[Algorithm] C - 삽입 정렬(Insertion Sort)

요약 시간 복잡도 : O(n^2) 선택한 요소를 그보다 더 앞쪽의 알맞은 위치에 삽입하는 작업을 반복하는 정렬 알고리즘 정렬되지 않은 데이터가 있을 때 정렬되지 않은 첫 번째 요소를 정렬된 부분의 알맞은 위치에 삽입 정렬이 많이 이루어진 경우 효율적으로 사용 가능 정렬에 안정적이고 단순해서 구현이 쉬우나 시간 복잡도가 비효율적임 삽입 정렬(Insertion Srot)이란 삽입 정렬이란 선택한 요소를 그보다 더 앞쪽의 알맞은 위치에 삽입하는 작업을 반복하는 정렬 알고리즘이다. 정렬되지 않은 데이터가 있을 때 정렬되지 않은 첫 번째 요소를 정렬된 부분의 알맞은 위치에 삽입하는 개념이다. 위와 같은 정렬되지 않은 배열이 있다고 가정한다. 삽입 정렬은 2번째 요소부터 선택하여 진행한다. 이때 4는 6보다 앞쪽에..

Algorithm/이론 2022.11.12

[STM32] RCC 설정용 구조체 및 구동 함수

RCC 설정용 구조체 함수 명 설명 RCC_ClkInitTypeDef 클럭의 초기 설정용 구조체 [DataType] uint32_t ClockType : 설정할 클럭, 이 파라미터는RCC_System_Clock_Type 중의 값 이어야 함 uint32_t SYSCLKSource : 시스템 클럭으로 사용하는 소스, RCC_System_Clock_Source 중의 값 이어야 함 uint32_t AHBCLKVivider : AHB 클럭의 디바이더. RCC_AHB_Clock_Source 중의 값이어야 하고 AHB클럭은 시스템 클럭에 의해 동작됨 uint32_t APB1CLKDivider : APB1 클럭의 디바이더. RCC_APB1_APB2_Clock_Source 중의 값이어야 하고 APB1 클럭은 AHB 클럭..

Embedded/STM32 2022.11.12

[STM32] Timer

타이머(Timer)란 타이머란 임의의 주기를 갖는 신호를 측정하거나 생성할 때 사용되는 디지털 회로를 말한다. 특정 주기마다 이벤트를 발생시키거나, 외부에서 들어온 신호의 길이를 측정할 때 사용한다. 또 PWM과 같은 파형을 생성하여 출력으로 보낼 때도 사용된다. MCU에서 GPIO, 통신 모듈과 더불어 자주 사용되는 모듈 중 하나이다. 대표적인 타이머 타이머는 대표적으로 4가지가 있다. 범용(General-Purpose) 타이머 출력 비교, 원펄스 입력캡쳐, 센서 인터페이스(엔코더, 홀 센서 등) 등의 용도로 사용할 수 있는 범용 기능을 가지는 타이머 ​ 고급(Advanced) 타이머 범용 타이머보다 더 많은 기능을 가지는 타이머, 주로 모터 제어와 디지털 파워 변환(Power Conversion) 용..

Embedded/STM32 2022.11.12

[STM32] ADC(Analog Digital Converter)

ADC(Analog Digital Converter)란 ADC란 뜻 그대로 아날로그를 디지털 컨버터로 변환하는 과정이다. 외부에서의 센서 값, 엔코더 등 아날로그 적인 신호를 받아 MCU 내부에서 디지털로 변환 후 처리하는 작업이다. ADC의 모드 1. 단일(Single) 변환 모드 단일 변환 모드에서 AD 변환기는 변환을 1번만 수행한다. ADC_CR2 레지스터의 CONT 비트를 0으로 두면 단일 변환 모드로 설정된다. ADC_CR2 레지스터의 ADON 비트가 설정되거나 또는 외부 트리거 입력이 인가되면 변환이 시작된다. 2. 연속(Continuous) 모드 연속 변환 모드에서 AD 변환기는 하나의 변환이 완료되면 바로 다음의 변환을 시작한다. 레지스터의 CONT 비트를 1로 두면 연속 변환 모드로 설..

Embedded/STM32 2022.11.12

[STM32] DAC(Digital Analog Convertor)

DAC(Digital Analog Convertor)란 이름 그대로 디지털을 아날로그로 변환하는 과정이다. 쉽게 생각해서 ADC에 반대로 생각할 수 있다. DAC 변환 과정 APB1_CLK에 맞게 DHRx(DAC Holding Register) 와 DORx(DAC Output Register)가 로딩된다. DAC_DORx에 직접 데이터를 로딩 하는 것은 허용되지 않으며, DAC_DHRx 레지스터(DHR8x, DHR12Lx, DHR8D, DHR12LD 또는 DAC_DHR12LD)를 통해 로딩해야 한다. DAC_DHRx 레지스터에 로드된 데이터는 1개의 ABP1 클럭 사이클 후 DAC_DORx 레지스터로 전송되고 데이터가 DAC_DORx 레지스터에 로드되면 DA변환이 시작되고, t(SETTING) 시간 후 ..

Embedded/STM32 2022.11.12

[STM32] UART, USART

UART(Universal Asychronous Receiver/Transmitter)란 데이터를 직렬, 또는 병렬로 변환시켜주는 범용 비동기 수신기로 두 장치 사이에 데이터가 전송될 때 수신부의 클럭에 동기되지 않는 방식 USART(Universal Synchronous and Asychonous Receiver/Transmitter) 비동기 뿐만 아니라 동기 통신도 가능한 범용 동기/비동기 수신기로 두 장치 사이에 데이터가 전송될 때 수신부의 클럭이 송신부의 클럭에 동기되는 방식임. 동기를 위해서 별도의 클럭 단자를 이용해서 송신부의 클럭을 수신부에 공급하는 방법을 많이 사용함 ​ 통신 방식 통신에 사용되는 라인의 수를 기준으로 구분하면 직렬 통신과 병렬 통신으로 나눌 수 있다. 렬 통신은 1개의 라..

Embedded/STM32 2022.11.12

[Algorithm] C - 선택 정렬(Selection Sort)

선택 정렬(Selection Sort) 요약 시간 복잡도 : O(n ^ 2) 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 정렬 알고리즘 배열의 가장 작은 값을 찾아 맨 처음 요소와 위치를 변경하는 작업을 반복하여 정렬을 수행 같은 값이 있을 경우 상대적인 위치가 변경될 수 있어 안전하지 않음 배열의 크기를 알고 있기 때문에 이동 횟수를 미리 알 수 있다는 장점이 있음 단순 선택 정렬이란 단순 선택 정렬이란 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 정렬 알고리즘이다. 어떤 배열이 있을 때, 배열의 가장 작은 값을 찾아 맨 처음 요소와 위치를 변경하는 작업을 반복하여 정렬을 수행한다. 배열에서 가장 작은 값 1을 찾아 0번째 인덱스 6과 위치를 교환한다. 1번째..

Algorithm/이론 2022.11.12