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
동작영상
STM32-4 (Stop_Watch) (0) | 2024.01.11 |
---|---|
STM32-2 (Button Led, State Machine) (1) | 2024.01.09 |
STM32-1 (1) | 2024.01.08 |