STM32

STM32F407VE - 기초 1)

찬영_00 2024. 11. 16. 13:50

이번 포스팅은 103말고 407보드가 와서 사용해보려한다.

해보는 김에 도서관에서 빌린 책을 이용하여 보드를 가지고 놀아보겠다.

(책에서 가지고 노는 보드는 NUCLEO-F411RE 이다)

사용하는 보드

https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0.html

 

STM32F407VET6 - STM32 F4VE V2.0

The STM32-base project is meant for students and hobbyists. The goal of the STM32-base project is to provide a simple and easy to use base project for working with STM32 microcontrollers.

stm32-base.org

 

아래에는 핀 번호가 없어서 아래 그림을 이용하여 진행하겠다

먼저 알리에서 산 보드에 BT에 점퍼가 없었다.

따라서 그냥 점퍼 케이블로 연결하고 진행하겠다.

 

여기서 BT란?

BOOT MODE에서 사용되는 핀으로 

BOOT MODE는 다음과 같다.

* x 은 0이든 1이든 상관 없다는 뜻이고, 우리는 여기서 Main Flash memory를 사용할거다.

* 0 : LOW, 1 : HIGH

 

간단하게 위 모드들에 대해 설명하면

Boot mode 설명
Main Flash memory 보통 여기서 많이 작업. Flash memory에 저장함 ( 코드를 짜서 업로드하면 덮혀씌어짐 )
System memory 펌웨어를 업로드하거나 기존 펌웨어를 업데이트할 때 사용함
Embedded SRAM SRAM은 전원이 꺼지면 데이터가 사라짐.
그래서 디버깅이나 특정 코드 부분을 일시적으로 테스트할 때만 유용하게 사용함
코드를 테스트 후 꺼진 뒤에도 저장되게 하고 싶으면 Flash memory를 사용하는 boot mode사용

 

따라서 점퍼케이블로 우리는 BOOT0번을 GND랑 연결할거임

 

이제 ST LINK V2를 이용하여 펌웨어를 올려보겠다.

https://young-sunny.tistory.com/92

 

ST LINK V2 디버거 연결(작성 중)

SWD debugging, Jtag debugging 연결을 해보고 생성되는 code간의 차이를 확인 해보자. (이런 과정이 얼마나 필요가 있는지는 모르겠다.)Board  지원 Debugging Interface1. SWD : ARM Cortex M 계열 MCU debugging에 사용 

young-sunny.tistory.com

디버거가 궁금하면 다음을 참고하자

 

업데이트는 알아서 IDE에서 추천해주니 그걸로 진행하면 된다. ( 디버거가 인식이 안되면 디버거 전원을 뻇다 꽃아봐라)

아니면 다음을 이용하자

 

이제 이 보드를 책이랑 겸해서 알아가 보겠다.

 

내부에 있는 LED D0, D1, D2가 있는데 D0는 Power에 연결되어있으니, D1, D2를 가지고 놀자!

D1 LED PA6
D2 LED PA7

 

간단하게 코드를 짜고 실행시켜보자

	 HAL_GPIO_WritePin(GPIO_PA6_D2_GPIO_Port, GPIO_PA6_D2_Pin, 1);
	 HAL_GPIO_WritePin(GPIO_PA7_D3_GPIO_Port, GPIO_PA7_D3_Pin, 0);
	 HAL_Delay(1000);

	 HAL_GPIO_WritePin(GPIO_PA6_D2_GPIO_Port, GPIO_PA6_D2_Pin, 0);
	 HAL_GPIO_WritePin(GPIO_PA7_D3_GPIO_Port, GPIO_PA7_D3_Pin, 1);
	 HAL_Delay(1000);

 

https://youtube.com/shorts/Ajp-oNNgD90?feature=share

 

 

버튼으로 LED 제어 - 버튼 (Input 으로 설정)

	 if(!HAL_GPIO_ReadPin(GPIO_PE3_K1_GPIO_Port, GPIO_PE3_K1_Pin)){
		 HAL_GPIO_TogglePin(GPIO_PA6_D2_GPIO_Port, GPIO_PA6_D2_Pin);
		 HAL_Delay(100);
	 }

	 if(!HAL_GPIO_ReadPin(GPIO_PE4_K2_GPIO_Port, GPIO_PE4_K2_Pin)){
		 HAL_GPIO_TogglePin(GPIO_PA7_D3_GPIO_Port, GPIO_PA7_D3_Pin);
		 HAL_Delay(100);
	 }

 

https://youtube.com/shorts/9kW1aXTiFiQ?feature=share

 

 

현재 0 ~ 76페이지를 한번에 나가봤다.

다음 포스팅에서는 외부 인터럽트에 대해 알아보고, UART도 사용하여 PMS7003을 제어해보겠다.

그리고 DMA에 대해도 알아보겠다.

 

'STM32' 카테고리의 다른 글

STM32F407VE - 기초 2) EXTI  (0) 2024.11.20
STM32F103C6T6A - 다루기  (0) 2024.11.17
STM32으로 Fan을 제어해보자 2)  (0) 2024.11.12
STM32으로 Fan을 제어해보자 1)  (0) 2024.11.12
7세그먼트 코드 수정  (0) 2024.11.10