- ST-LINK V2
- STM32CubeMX
- 필요한 재료
- 회로도 및 연결
- Keil uVision 및 ST-Link를 사용하여 STM32로 프로그램 생성 및 굽기
- Keil 프로그래밍 된 STM32 보드의 출력
- 프로그램
ARM Cortex M 아키텍처 를 사용하는 STM32 마이크로 컨트롤러 는 이제 인기를 얻고 있으며 기능, 비용 및 성능으로 인해 많은 애플리케이션에서 사용됩니다. 이전 튜토리얼에서 Arduino IDE를 사용하여 STM32F103C8을 프로그래밍했습니다. Arduino IDE로 STM32를 프로그래밍하는 것은 간단합니다. 다양한 센서가 모든 작업을 수행하는 데 사용할 수있는 많은 라이브러리가 있으므로 프로그램에 해당 라이브러리를 추가하기 만하면됩니다. 이것은 쉬운 절차이며 ARM 프로세서에 대해 심층 학습하지 못할 수도 있습니다. 이제 우리는 ARM 프로그래밍이라고하는 다음 레벨의 프로그래밍으로 들어가고 있습니다. 이를 통해 코드 구조를 개선 할뿐만 아니라 불필요한 라이브러리를 사용하지 않음으로써 메모리 공간을 절약 할 수 있습니다.
STMicroelectronics 는 주변 장치 및 선택한 STM32 보드에 따라 기본 코드를 생성하는 STM32Cube MX라는 도구를 도입했습니다. 따라서 기본 드라이버 및 주변 장치에 대한 코딩에 대해 걱정할 필요가 없습니다. 또한이 생성 된 코드는 요구 사항에 따라 편집을 위해 Keil uVision에서 사용할 수 있습니다. 마지막으로 코드는 STMicroelectronics의 ST-Link 프로그래머를 사용하여 STM32에 레코딩됩니다.
이 튜토리얼에서는 푸시 버튼과 LED를 STM32F103C8 Blue Pill 보드와 인터페이스하는 간단한 프로젝트를 수행 하여 Keil uVision 및 STM32CubeMX 를 사용하여 STM32F103C8을 프로그래밍하는 방법을 배웁니다. STM32Cube MX를 사용하여 코드를 생성 한 다음 Keil uVision을 사용하여 코드를 편집하고 STM32F103C8에 업로드합니다. 자세히 알아보기 전에 먼저 ST-LINK 프로그래머 및 STM32CubeMX 소프트웨어 도구에 대해 배웁니다 .
ST-LINK V2
ST-LINK은 / V2는 서킷 디버거 프로그래머 STM8 및 STM32 마이크로 가족. 이 ST-LINK를 사용하여 STM32F103C8 및 기타 STM8 및 STM32 마이크로 컨트롤러에 코드를 업로드 할 수 있습니다. 단일 와이어 인터페이스 모듈 (SWIM) 및 JTAG / SWD (직렬 와이어 디버깅) 인터페이스는 애플리케이션 보드에있는 STM8 또는 STM32 마이크로 컨트롤러와 통신하는 데 사용됩니다. STM32 애플리케이션은 USB 전속 인터페이스를 사용하여 Atollic, IAR, Keil 또는 TASKING 통합 개발 환경과 통신하므로이 하드웨어를 사용하여 STM 8 및 STM32 마이크로 컨트롤러를 프로그래밍 할 수 있습니다.
위는 빠르고 안정적인 STM32 SWD 디버깅 인터페이스, 간단한 4 선 인터페이스 (전원 포함)를 지원하는 STMicroelectronics의 ST-LINK V2 동글 이미지입니다. 다양한 색상으로 제공됩니다. 본체는 알루미늄 합금으로 만들어졌습니다. ST-LINK의 작동 상태를 관찰하는 데 사용되므로 파란색 LED 표시가 있습니다. 위 이미지에서 볼 수 있듯이 핀 이름은 쉘에 명확하게 표시되어 있습니다. 그것은 할 수있다 Keil (카일) 소프트웨어와 인터페이스 프로그램이 STM32 마이크로 컨트롤러에 번쩍 될 수있다. 이 튜토리얼에서이 ST-LINK 프로그래머를 사용하여 STM32 마이크로 컨트롤러를 프로그래밍 하는 방법을 살펴 보겠습니다. 아래 이미지는 ST-LINK V2 모듈의 핀을 보여줍니다.
참고: ST-Link를 컴퓨터와 처음 연결하는 경우 장치 드라이버를 설치해야합니다. 운영 체제에 따라이 링크에서 장치 드라이버를 찾을 수 있습니다.
STM32CubeMX
STM32CubeMX 도구는 STMicroelectronics STMCube의 일부입니다.이 소프트웨어 도구는 개발 노력, 시간 및 비용을 줄여 개발을 쉽게합니다. STM32Cube에는 그래픽 마법사를 사용하여 C 초기화 코드를 생성 할 수있는 그래픽 소프트웨어 구성 도구 인 STM32CubeMX가 포함되어 있습니다. 이 코드는 keil uVision, GCC, IAR 등과 같은 다양한 개발 환경에서 사용할 수 있습니다.이 도구는 다음 링크에서 다운로드 할 수 있습니다.
STM32CubeMX에는 다음과 같은 기능이 있습니다.
- 핀아웃 충돌 해결사
- 시계 트리 설정 도우미
- 전력 소비 계산기
- GPIO 핀, USART 등과 같은 MCU 주변 장치 구성을 수행하는 유틸리티
- USB, TCP / IP 등과 같은 미들웨어 스택에 대한 MCU 주변 장치 구성을 수행하는 유틸리티
필요한 재료
하드웨어
- STM32F103C8 블루 알약 보드
- ST-LINK V2
- 누름 단추
- LED
- 브레드 보드
- 점퍼 와이어
소프트웨어
- STM32CubeMX 코드 생성 도구 (링크)
- Keil uVision 5 (링크)
- ST-Link V2 용 드라이버 (링크)
회로도 및 연결
아래는 푸시 버튼을 사용하여 STM32 보드와 LED 를 간단히 연결하는 회로도 입니다.
ST-LINK V2와 STM32F103C8 간의 연결
여기서 STM32 Blue Pill 보드는 컴퓨터의 USB 포트에 연결된 ST-LINK에서 전원을 공급받습니다. 따라서 STM32에 별도로 전원을 공급할 필요가 없습니다. 아래 표는 ST-Link와 Blue pill 보드 간의 연결을 보여줍니다.
STM32F103C8 |
ST- 링크 V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED 및 푸시 버튼
LED 는 푸시 버튼을 눌렀을 때 Blue Pill 보드의 출력을 나타내는 데 사용됩니다. LED의 양극은 Blue Pill 보드의 PC13 핀에 연결되고 음극은 접지됩니다.
푸시 버튼 블루 약 보드의 핀 PA1에 입력을 제공하도록 연결된다. 또한 버튼을 놓을 때 핀이 입력없이 플로팅 될 수 있으므로 10k 값의 풀업 저항을 사용해야합니다. 푸시 버튼의 한쪽 끝은 접지에 연결되고 다른 쪽 끝은 핀 PA1에 연결되며 10k의 풀업 저항도 3.3V의 Blue Pill 보드에 연결됩니다.
Keil uVision 및 ST-Link를 사용하여 STM32로 프로그램 생성 및 굽기
1 단계: 먼저 ST-LINK V2 용 모든 장치 드라이버, 소프트웨어 도구 STM32Cube MX 및 Keil uVision을 설치하고 STM32F103C8에 필요한 패키지를 설치합니다.
2 단계: 두 번째 단계는 열기입니다. >> STM32Cube MX
3 단계:- 새 프로젝트를 클릭합니다.
4 단계: 검색 후 마이크로 컨트롤러 STM32F103C8을 선택 합니다.
5 단계: 이제 STM32F103C8 의 핀아웃 스케치가 나타납니다. 여기서 핀 구성을 설정할 수 있습니다. 프로젝트에 따라 주변 장치 섹션에서 핀을 선택할 수도 있습니다.
6 단계: 핀을 직접 클릭하면 목록이 표시됩니다. 이제 필요한 핀 구성을 선택합니다.
7 단계: 프로젝트의 경우 GPIO INPUT으로 PA1을, GPIO OUTPUT으로 PC13을, SERIAL WIRE로 SYS 디버그를 선택했습니다. 여기서는 ST-LINK SWCLK 및 SWDIO 핀만 연결합니다. 선택 및 구성된 핀은 녹색으로 표시됩니다. 아래 이미지에서 확인할 수 있습니다.
8 단계: 다음으로 구성 탭 에서 GPIO를 선택하여 선택한 핀에 대한 GPIO 핀 구성을 설정합니다.
9 단계: 다음으로이 핀 구성 상자에서 사용중인 핀, 즉 사용자 정의 핀 이름에 대한 사용자 레이블 을 구성 할 수 있습니다.
10 단계:- 그 후 프로젝트 >> 코드 생성 을 클릭합니다.
11 단계: 이제 프로젝트 설정 대화 상자가 나타납니다. 이 상자에서 프로젝트 이름과 위치를 선택하고 개발 환경을 선택합니다. Keil을 사용하고 있으므로 MDK-ARMv5를 IDE로 선택 합니다.
12 단계: - 아래에 다음 코드 생성기의 탭, 선택 복사합니다에만 필요한 라이브러리 파일을 입력 한 다음 확인을 클릭합니다.
13 단계: 이제 코드 생성 대화 상자가 나타납니다. Keil uvsion에서 생성 된 코드를 자동으로 열 려면 Open Project 를 선택 합니다.
14 단계:- 이제 Keil uVision 도구가 STM32CubeMx에서 생성 된 코드와 함께 열리고, 우리가 선택한 핀에 대해 구성된 필요한 라이브러리 및 코드가있는 동일한 프로젝트 이름을 사용합니다.
15 단계:- 이제 GPIO 입력 (핀 PA1)에서 버튼을 눌렀다 놓을 때 출력 LED (핀 PC13)에서 일부 동작을 수행하는 로직을 포함하면됩니다. 따라서 main.c 프로그램을 선택하여 일부 코드를 포함 시키십시오.
16 단계: 이제 while (1) 루프에 코드를 추가합니다 . 코드를 계속 실행하기 위해 해당 섹션을 강조 표시 한 아래 이미지를 참조하십시오.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS 버튼을 눌렀을 때 {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // 버튼을 눌렀을 때 출력을 높게하려면} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // 버튼을 눌렀을 때 출력을 Low로 만들기}}
17 단계:- 코드 편집을 마친 후 디버그 탭 아래의 Options for Target 아이콘을 클릭하고 ST-LINK Debugger를 선택합니다.
또한 설정 버튼을 클릭 한 다음 Flash 다운로드 탭에서 재설정 및 실행 확인란을 선택하고 '확인'을 클릭합니다.
18 단계:- 이제 모든 대상 파일을 다시 빌드하려면 다시 빌드 아이콘 을 클릭 합니다.
19 단계:- 이제 회로 연결이 준비된 상태에서 ST-LINK를 컴퓨터에 연결 하고 다운로드 아이콘을 클릭하거나 F8 키를 눌러 생성 및 편집 한 코드로 STM32F103C8을 플래시 할 수 있습니다.
20 단계: -Keil uVision 창 하단에 깜박이는 표시가 나타납니다.
Keil 프로그래밍 된 STM32 보드의 출력
이제 누름 버튼을 누르면 LED가 켜지고 놓으면 LED가 꺼집니다.
프로그램
생성 된 프로그램에 추가 한 주요 부분은 아래와 같습니다. 아래 코드 는 STM32CubeMX에 의해 생성 된 main.c 프로그램 의 while (1 )에 포함 되어야합니다. 15 단계에서 17 단계로 돌아가서 main.c 프로그램에 추가하는 방법을 배울 수 있습니다.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS 버튼을 눌렀을 때 {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // 버튼을 눌렀을 때 출력을 높게하려면} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // 버튼을 눌렀을 때 출력을 Low로 만들기}}
프로젝트 생성 및 STM32 보드에 업로드하는 전체 과정은 마지막에 제공되는 비디오에서도 설명됩니다. 또한 위의 코드를 포함하여 main.c 파일 의 전체 코드가 아래에 제공됩니다.
또한 여기에서 전체 STM32 프로젝트 세트를 찾을 수 있습니다.