상세 컨텐츠

본문 제목

STM32-5 (Stop_Watch/Ultra_Sonic)

설계공부/STM32

by 썽심 2024. 1. 13. 17:00

본문

728x90

2024.01.12

 

TOOL

Software - STM32_CUBE_IDE

 

Hardware(board) - STM32(NUCLEO_F411RE)

Hardware - Breadboard / Button(4EA) / LED(4EA) /  FND

 

Ultra Sonic - (HC-SR04)

PC 통신 TOOL : ComPort / Master 

 

Architecture - cortex-m4

 

 

0.1초 간격으로 증가하는 StopWatch를 구현했다.

 

동작 형태의 brock Diagram 및 구조화 시킨 모습이다.

application은 stop watch가 있고 그 형태는 오른쪽과 같다.

 

 

여기서 가장 중요 설계 목표는 아래 2두가지다.

 

1. core data를 정의 하는것

2. data 처리 및 Display를 어떻게 동작 시킬 것인가?

 

또한 객체처럼 항상 생각해야 code 만들기가 쉽다.

 

 

 

service부에서

입력부에 버튼 event 없는지 있는지 확인하라고 하면 입력부에 enable 신호를 확인한 뒤

service부에 다시 알려줌

 

그럼 service부에서 출력부에 FND출력하라고 신호를 줌

 

 

 

 

model부에서는 data를 저장해주는 부분으로 사용하였다.


STM32 설계 구현 시작

Timer 설정

 

5

 

 

2

 

 

PIN설정

 

Framework를 만들어줌

Software를 설계해줬다. 객체처럼 생각하며 설계

 

 

여기서 네모 부분만 만들었다고 생각하면 편함

 

 


Model의 구조 만들기

Data 구조 중심으로 보면

 

1byte 0.1초

1byte 초

1byte 분

1byte 시 로 나누어 모듈화 시켜 FND에 출력 되도록 할 것이다.

 

각 파일은 Sorce / header part로 나누어 설계

Sorce 에는 동작

header part는 Sorce에 사용되어진 구조들을 넣어줌

 


이제 listener 부분

 

 

listener.H


presenter부분

Time date /  model data service부분에서 presenter 부분으로 넘겨준다.

그럼 presenter 부분은 fnd  data를 출력한다.

 

 

presenter.H

 


SERVICE 부분

 

Run이 들어오면 동작 되도록 만듬

Stopwatch에 동작 신호가 오면 stopwatch state 시작

 

여기서 오류남.

EVENT 부분을 두번 불러오게 되면 오류가 나서 한번씩 불러오는것으로 변경함.

 

SERVICE.H


입력부와 출력부를 설계 하였으니,

APPLICATION 부분을 만들어보자.

APPLICATION 부분은 입력부 부분의 버튼 확인 명령 / FND DATA를 MODEL / 출력부에 넣어 그 DATA가 나오도록 해야한다.

 

이전에 했던 PART를 재사용함.

apMain.c

 

apMain.h

 


DRIVER단.

DRIVER는 직접적으로 DATA입력을 받거나 DATA출력을 하는곳.

FND  / BUTTON / LED

 

FND.C

FND 부분은 해당 부분을 추가했다.

DOT POINT 부분을 출력하기 위해서 추가함.

 

 

FND.H


BUTTON

 

BUTTON.C

 

 

 

BUTTON.H


LED

LED.C

LED.h

 


MAIN.C

제일 중요한 부분.

ENABLE을 해주는 PART이다. 이부분이 안나오면 신호가 안들어 오기 때문에

신호를 받을 수 없음. > 동작안함.

결과적으로 FND 출력이 안되거나 이상한 값이 출력

MAIN.H

 


동작 영상


UART IP를 이용한 ULTRA SONIC 거리측정.

 

HCSR04

parameter

 

 

TIMING DIAGRAM

 

초음파센서는 신호가 장애물에 부딪히고 돌아오는 시간을 측정했다.

 

측정 식.

거리 = 속도*시간 = 340m/s

왕복 거리는 340m/s 가 나온다.

 

장애물 간의 거리측정시에는 /2를 해주면 된다.

장애물과의 거리를 t라고 하면, t = 0.017t[cm] 가 된다. 

 

UART
USART2 : 비동기(Async),

Defaul로는 115200으로 설정했다. 

 

 

 

Core – src -syscall.c에서 찾은 내용을
main.c
에 붙여줌

 

RCC설정

 

 

 

Trigger Output

Echo는 외부 INTERRUPT로 잡아줌

 

 

ENABLE을 위해 GPIO 외부 INTERRUPT를 PB9로 설정,

FALLING EDGE TRIGGER 방식으로 선택하였다.

 

 

설정하게 되면, 외부 INTERRUPT HANDLER가 생기게 된다.

 

따라서 CTRL 하여 해당 구조체가 있는곳으로 가보면

Call Back 함수가 있다. 이 부분을 복사하여 main.c 에사용

 


main.c

 


동작영상

728x90

'설계공부 > STM32' 카테고리의 다른 글

STM32-4 (Stop_Watch)  (0) 2024.01.11
STM32-2 (Button Led, State Machine)  (1) 2024.01.09
STM32-1  (1) 2024.01.08

관련글 더보기