rt-thread/bsp/stm32/stm32f103-blue-pill/README.md

278 lines
9.2 KiB
Markdown
Raw Normal View History

2020-10-16 11:31:17 +08:00
# STM32F103C8 Blue Pill Board BSP Introduction
2020-10-21 02:45:59 +08:00
[[中文]](README_zh.md)
2020-10-16 16:39:21 +08:00
2021-01-14 00:04:16 +08:00
[TOC]
2020-10-21 02:45:59 +08:00
This document records the introduction of the BSP (board support package) provided by the RT-Thread development team for the STM32F103C8 Blue Pill development board.
2020-10-16 16:39:21 +08:00
The document is covered in four parts:
- Onboard Resources
- Quickly Get Started
- Advanced Features
- Read more
2020-10-16 16:39:21 +08:00
By reading the ***Quickly Get Started*** section developers can quickly get their hands on this BSP and run RT-Thread on the board. More advanced features will be introduced in the Advanced Features section to help developers take advantage of RT-Thread to drive more on-board resources.
2021-01-14 00:04:16 +08:00
Video tutorial: https://www.youtube.com/watch?v=0PwBBYXQ08g
2020-10-16 16:39:21 +08:00
2021-01-14 00:04:16 +08:00
## 1 MCU Resources
2020-11-02 18:25:43 +08:00
The STM32F103xx medium-density performance line family incorporates the high-performance ARM®Cortex®-M3 32-bit RISC core operating at a 72 MHz frequency, high-speed embedded memories (Flash memory up to 128 Kbytes and SRAM up to 20 Kbytes), and an extensive range of enhanced I/Os and peripherals connected to two APB buses. All devices offer two 12-bit ADCs, three general purpose 16-bit timers plus one PWM timer, as well as standard and advanced communication interfaces: up to two I2Cs and SPIs, three USARTs, an USB and a CAN.
The devices operate from a 2.0 to 3.6 V power supply. They are available in both the 40 to +85 °C temperature range and the 40 to +105 °C extended temperature range. A comprehensive set of power-saving mode allows the design of low-power applications.
The STM32F103xx medium-density performance line family includes devices in six different package types: from 36 pins to 100 pins. Depending on the device chosen, different sets of peripherals are included, the description below gives an overview of the complete range of peripherals proposed in this family.
These features make the STM32F103xx medium-density performance line microcontroller family suitable for a wide range of applications such as motor drives, application control, medical and handheld equipment, PC and gaming peripherals, GPS platforms, industrial applications, PLCs, inverters, printers, scanners, alarm systems, video intercoms, and HVACs.
KEY FEATURES
- ARM® 32-bit Cortex®-M3 CPU Core
- 72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
- Single-cycle multiplication and hardware division
- Memories
- 64 or 128 Kbytes of Flash memory
- 20 Kbytes of SRAM
- Clock, reset and supply management
- 2.0 to 3.6 V application supply and I/Os
- POR, PDR, and programmable voltage detector (PVD)
- 4-to-16 MHz crystal oscillator
- Internal 8 MHz factory-trimmed RC
- Internal 40 kHz RC
- PLL for CPU clock
- 32 kHz oscillator for RTC with calibration
- Low-power
- Sleep, Stop and Standby modes
- VBAT supply for RTC and backup registers
- 2 x 12-bit, 1 μs A/D converters (up to 16 channels)
- Conversion range: 0 to 3.6 V
- Dual-sample and hold capability
- Temperature sensor
- DMA
- 7-channel DMA controller
2020-11-12 18:02:25 +08:00
- Peripherals supported: Timers, ADC, SPIs, I2Cs and USARTs
2020-11-02 18:25:43 +08:00
- Up to 80 fast I/O ports
- 26/37/51/80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
- Debug mode
- Serial wire debug (SWD) & JTAG interfaces
- 7 timers
- Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
- 16-bit, motor control PWM timer with dead-time generation and emergency stop
- 2 watchdog timers (Independent and Window)
- SysTick timer 24-bit downcounter
- Up to 9 communication interfaces
- Up to 2 x I2C interfaces (SMBus/PMBus)
- Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
- Up to 2 SPIs (18 Mbit/s)
- CAN interface (2.0B Active)
- USB 2.0 full-speed interface
- CRC calculation unit, 96-bit unique ID
- Packages are ECOPACK®
2020-10-16 11:31:17 +08:00
2020-11-02 18:25:43 +08:00
2021-01-14 00:04:16 +08:00
## 2 Onboard Resources
2020-10-16 11:31:17 +08:00
2020-10-21 02:45:59 +08:00
- MCUSTM32F103C8T6 @72MHz, 64KB FLASH , 20KB RAM
2020-10-16 11:31:17 +08:00
- Peripherals
- LEDPC13
- Debug IO interface type: ST-LINK V2 (SWD)
2020-10-16 11:31:17 +08:00
2020-10-21 02:45:59 +08:00
![board](figures/Bluepill_pinout.png)
2020-10-16 11:31:17 +08:00
2021-01-14 00:04:16 +08:00
## 3 Quickly Get Started
2020-10-16 11:31:17 +08:00
This BSP provides MDK4, MDK5, and IAR projects for developers and it supports the GCC development environment. Here's an example of the MDK5 development environment, to introduce how to run the system.
2021-01-14 00:04:16 +08:00
### 3.1 Use ST-LINK Debugger to connect the Blue Pill Board
2020-10-29 12:10:21 +08:00
ST-LINK driver:
> https://www.st.com/en/development-tools/stsw-link009.html
| ST-LINK Debugger | Blue Pill 4-Pin SWD |
| :--------------: | :-----------------: |
| SWDIO | IO |
| SWDCLK | CLK |
| VCC3.3 | VCC3.3 |
| GND | GND |
![connection](figures/connecter1.jpeg)
![connection](figures/connecter2.png)
![connection](figures/connecter3.jpeg)
2021-01-14 00:04:16 +08:00
### 3.2 Use FTDI adapter(USB to UART) to connect the Blue Pill Board's PA9(Tx) and PA10(Rx) pins
2020-10-29 12:10:21 +08:00
FTDI adapter driver:
> https://www.ftdichip.com/FTDrivers.htm
You can use other USB to UART adapters to replace FTDI adapter.
| FTDI adapter(USB to UART) | Blue Pill Board |
| :-----------------------: | :-----------------------------------: |
| Tx | PA10 Rx |
| Rx | PA9 Tx |
| GND | GND |
| VCC 3.3 | **Don't need to connect VCC 3.3 pin** |
| VCC 5 | **Don't need to connect VCC 5 pin** |
2020-10-16 11:31:17 +08:00
2020-10-16 16:39:21 +08:00
![connection](figures/connection.jpg)
2020-10-16 11:31:17 +08:00
2021-01-14 00:04:16 +08:00
### 3.3 Make sure Jumper Position (Both 0 Position)
| BOOTx | High / Low |
| :---: | :--------: |
| BOOT0 | 0 |
| BOOT1 | 0 |
![connection](figures/jumper.jpg)
2021-01-14 00:04:16 +08:00
### 3.4 Compile and Download
2020-10-16 11:31:17 +08:00
2020-10-29 12:10:21 +08:00
- Double-click the `project.uvprojx` file to open the MDK-Keil5 project (**NOT** `template.uvprojx` file)
- Click the “option for target” button
- Debug: Choose "ST-LINK Debugger" and Click "Setting" button:
- Port: choose "SW (Serial Wire)"
- Flash Download: check "Reset and Run"
- Compile and download the program to the board
2020-10-29 12:10:21 +08:00
You can also follow this video to configurate *Blue Pill BSP* Keil5 project:
> https://www.youtube.com/watch?v=0PwBBYXQ08g&t
2020-10-16 11:31:17 +08:00
2021-01-14 00:04:16 +08:00
### 3.5 Running Results
2020-10-16 11:31:17 +08:00
2020-10-21 02:45:59 +08:00
After the program is successfully downloaded, the system runs automatically. Observe the running results of the LED on the development board, and you will see the LED is flashing periodically.
2020-10-16 11:31:17 +08:00
2020-10-29 12:10:21 +08:00
The COM port connects to **USART1 (PA9-Tx, PA10-Rx) by default**, and when the corresponding serial port (**115200**-8-1-N) is opened in the terminal tool, the output information of RT-Thread can be seen when the device is reset:
2020-10-16 11:31:17 +08:00
```shell
\ | /
- RT - Thread Operating System
/ | \ 4.0.0 build Dec 21 2018
2006 - 2018 Copyright by rt-thread team
msh >
```
2020-10-29 12:10:21 +08:00
2021-01-14 00:04:16 +08:00
### 3.6 Terminal tool - PuTTy
2020-10-29 12:10:21 +08:00
If you have no terminal tool software available, you can download *PuTTy*:
> https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
![putty](figures/putty.png)
These two videos will show you how to use PuTTy:
> https://www.youtube.com/watch?v=ab4ilbsteWU
>
> https://www.youtube.com/watch?v=dO-BMOzNKcI
2020-10-16 11:31:17 +08:00
2021-01-14 00:04:16 +08:00
## 4 **Advanced Features**
2020-10-16 11:31:17 +08:00
2020-10-29 12:10:21 +08:00
This BSP only enables GPIO and USART1 by default. If you need more advanced features such as SPI, ADC, or to add software packages, you need to configure the BSP with RT-Thread [ENV tool](https://www.rt-thread.io/download.html?download=Env), as follows:
2020-10-16 11:31:17 +08:00
2020-10-21 02:45:59 +08:00
1. Open the ENV tool under the specific BSP folder, eg: *bsp/stm32/stm32f103-blue-pill* ;
2020-10-16 11:31:17 +08:00
2. Enter `menuconfig` command to configure the project, then save and exit;
3. Enter `pkgs --update` command to update the package;
4. Enter `scons --target=mdk4/mdk5/iar` command to regenerate the project.
Learn how to use RT-Thread ENV, click [Here](https://github.com/RT-Thread/rtthread-manual-doc/blob/master/env/env.md).
2021-01-14 00:04:16 +08:00
### 4.1 How to use USB virtual com
#### 4.1.1 Step 1
Enable USB device.
![putty](figures/usb_device1.png)
#### 4.1.2 Step 2
Enable USB Device Driver and enable to use device as CDC device.
![putty](figures/usb_device2.png)
#### 4.1.3 Step 3
Select VC (virtual console) software package.
![putty](figures/vconsole.png)
#### 4.1.4 Step 4
Add these codes in main function which is located in 'Applications' folder, and don't forget to include `vconsole.h`.
```c
rt_device_t dev = rt_device_find("vcom");
vconsole_switch(dev);
```
![putty](figures/usb_code.png)
#### 4.1.5 Step 5
Re-plug the USB cable and you will find a new serial (virtual com) device is found in your computer. If you reset or reboot the blue pill board, you still need to re-plug the USB cable.
## 5 Read more
2020-10-16 11:31:17 +08:00
2020-10-29 12:10:21 +08:00
- [[STM32 Blue Pill Board Schematic]](https://stm32duinoforum.com/forum/images/c/c1/wiki_subdomain/Vcc-gnd.com-STM32F103C8-schematic.pdf)
2020-10-16 11:31:17 +08:00
- [[STM32 Blue Pill vs Black Pill Microcontroller Boards]](https://www.youtube.com/watch?v=QCdnO43RBK4&t=875s)
- [[STM32F103C8 datasheet]]( https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
2020-10-29 12:10:21 +08:00
- [[STM32F103C8 More Information (ST official)]](https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html#overview)
- [[RT-Thread document center]](https://www.rt-thread.io/document/site/introduction/introduction/)
2020-10-16 11:31:17 +08:00
2021-01-14 00:04:16 +08:00
## 6 Maintained By
2020-10-16 11:31:17 +08:00
Meco Man @ RT-Thread Community
2020-10-16 11:31:17 +08:00
jiantingman@foxmail.com
2020-11-12 18:02:25 +08:00
https://github.com/mysterywolf