목록분류 전체보기 (387)
printf("ho_tari\n");
2025.04.09 ~ 2025.04.11 - RTOS 기반 실행- I2CLCD : HAL func쓰지 말고 I2C protocol 구현- DS1302 활성화 : 시계를 LCD에 표시- BUZZER 동작- LED BAR 동작- Dotmatrix 동작- BUTTON 제어 : 층수 선택 / 복수층 선택 / 층수 선택 취소 기능 1. 시스템 구성 및 각 모듈의 역할1.1. 스텝 모터 및 층 선택 모듈주요 기능:엘리베이터의 이동을 위해 스텝 모터를 제어합니다.사용자의 버튼 입력을 통해 여러 층을 선택하거나 취소할 수 있도록 합니다.현재 위치와 목표 층을 비교하여 모터가 전진(FORWARD) 또는 후진(BACKWARD)하도록 방향을 결정합니다.선택된 층 목록은 고정 크기 배열로 관리되며, 도착 시 부저 알림을 발..

2025.04.09 오늘의 학습목표1.thread 작성2. mutex / semaphore 작성3. project 수행 Mutex : 공유자원 1개에 하나의 사용자만 사용 가능- 뮤텍스는 화장실이 하나 뿐이 없는 식당과 비슷하다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야 한다. 당신이 화장실을 가려고 하는데 카운터에 키가 있으면 화장실에 사람이 없다는 뜻이고 당신은 그 열쇠를 이용해 화장실에 들어갈 수 있다.- 공유된 자원의 데이터 혹은 임계영역 등에 하나의 process 혹은 thread가 접근하는 것을 막아줌(동기화 대상이 하나)- 임계구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행(상호배제)되도록 하는 기술 Semaphore 세마포어- 손님이 화징실을 좀 더 쉽게 ..

2025.04.08 오늘의 학습 목표1. step motor 제어2. ext INT & phto TR3. thread & mutex (free RTOS) STEP MOTOR /* * stepmotor.c * * Created on: Apr 8, 2025 * Author: microsoft */#include "stepmotor.h"#include "button.h"// btn0 : idle(stop)// btn1 : FW BW#define IDLE 0#define FORWARD 1#define BACKWARD 2uint8_t stepmotor_state = IDLE;void set_rpm(int rpm);void stepmotor_main(void);int stepmotor_drive(..
2025.04.04 ~ 2025.04.07 BMP180 (I2C)I2C3 PA8 - SCL PC9 - SDA 1. 기본 구조 및 레지스터 정의I2C 주소 및 레지스터 주소코드에서는 BMP180_ADDRESS가 0x77 BMP180 데이터시트(예, Table 5, 페이지 14)에 따르면 센서의 7비트 기본 주소는 0x77이며, HAL에서는 8비트 주소 형식을 사용하므로 왼쪽 시프트를 적용BMP180_REG_CALIB_START (0xAA), BMP180_REG_CONTROL (0xF4) 및 BMP180_REG_OUT_MSB (0xF6)는 데이터시트의 메모리 맵(페이지 19~20)에서 보정 데이터와 측정 결과 레지스터 주소로 지정온도 및 기압 측정 명령어(BMP180_CMD_READ_TEMP 0x2E, BM..

2025.04.04 오늘의 학습 목표1. code review2. keypad matrix application3. project 수행 KEYPAD 키 매트릭스- 버튼을 매트릭스 형태로 배치- 적은 수의 입력 핀으로 많은 버튼 입력 검사- LED 매트릭스의 잔상효과와 기본적으로 동일한 방식 사용- LED 매트릭스는 출력, 키 매트릭스는 입력을 위한 방법임에 차이가 있음 키 매트릭스의 회로도 키 매트릭스 열 단위 스캔 풀다운 저항 추가 루프 형성1 루프 형성2 다이오드 추가 - 루프 형성 방지 4x4 키 매트릭스 회로도 키 매트릭스 모듈 키 매트릭스 모듈 연결 회로도 타이머 인터럽트 코드void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ /*..

2025.04.03 DOTMATRIX 제어- LED를 매트릭스 형태로 배치하여 문자와 기호를 표시할 수 있도록 만들어진 출력 장치- 8x8 크기가 흔히 사용됨- 행과 열 제어를 위해 각각 8개, 총 16개 제어선 필요- 제어 회로 / 칩이 포함된 모듈도 흔히 사용 #include "main.h"extern SPI_HandleTypeDef hspi2;void dotmatrix_main_test();void init_dotmatrix(void);int dotmatrix_main(void);int dotmatrix_main_func(void);uint8_t allon[] = { // allon 문자 정의 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b1111111..

2025.04.02 Piezo Buzzer #include "buzzer.h"#include "button.h"/************************************************************************************************************* 옥타브 및 음계별 주파수표(단위:Hz) 음계 0Oct 1Oct 2Oct 3Oct 4Oct 5Oct 6Oct 7Oct 8Oct 9Oct C 16.3516 32.7032 65.4064 130.8128 261.6256 523.2511 1046.502 2093.005 4186.009 8372.019 C# 17.3239 34.647..

2025.04.01 오늘의 학습 목표1. flash memory handling2. I2C3. D FlipFlop → Shift Register STM32F411RE Flash Programming - 총 8개의 sector로 구성- 플래시 메모리는 쓰기전에 먼저 메모리를 지워야 하는데 지울때 사용하는 단위가 sector단위이다.- 플래시를 지우는 방법은 한번에 칩 전체를 지우거나 sector 하나를 지정해서 지울 수 있다. Flash 메모리 읽기- flash 메모리를 읽는 것은 일반 메모리 RAM을 읽는것과 동일 하게 c언어 포인터를 이용 *(읽고자 하는 주소)- 예) 0x08000000 번지에 저장된 4 byte를 읽고자 할 때uint32_t val = (((uint32_t *) 0x0800000..