适配平台:
cpu:STM32F103RCT6
外设:
peripheral | pin | disciption |
---|---|---|
LED1 | PC_0 | |
LED2 | PC_6 | |
UART5_TX | PC_12 | no remap |
UART5_RX | PD_2 | no remap |
引用资源:
mbed在线编译器
Mbed源码仓库
Stm32f1官方hal库
进入正篇前,需要介绍一些预备知识。
St的软件开发库有两套:标准库和hal库,通常早期的开发都是使用的标准库,不过现在标准库已经停止维护了,而且新出的芯片都没有适配标准库,只有hal库。而mbed底层正是使用的hal库。
在此处我们还需要了解一点东西就是在st的标准库中,我们将芯片分为hd,md,xl等系列,而在hal库中并没有沿用这样的命名方式,而是使用xb、xe、xg等命名方式
#if !defined (STM32F100xB) && !defined (STM32F100xE) && !defined (STM32F101x6) && \
!defined (STM32F101xB) && !defined (STM32F101xE) && !defined (STM32F101xG) && !defined (STM32F102x6) && !defined (STM32F102xB) && !defined (STM32F103x6) && \
!defined (STM32F103xB) && !defined (STM32F103xE) && !defined (STM32F103xG) && !defined (STM32F105xC) && !defined (STM32F107xC)
/* #define STM32F100xB */ /*!< STM32F100C4, STM32F100R4, STM32F100C6, STM32F100R6, STM32F100C8, STM32F100R8, STM32F100V8, STM32F100CB, STM32F100RB and STM32F100VB */
/* #define STM32F100xE */ /*!< STM32F100RC, STM32F100VC, STM32F100ZC, STM32F100RD, STM32F100VD, STM32F100ZD, STM32F100RE, STM32F100VE and STM32F100ZE */
/* #define STM32F101x6 */ /*!< STM32F101C4, STM32F101R4, STM32F101T4, STM32F101C6, STM32F101R6 and STM32F101T6 Devices */
/* #define STM32F101xB */ /*!< STM32F101C8, STM32F101R8, STM32F101T8, STM32F101V8, STM32F101CB, STM32F101RB, STM32F101TB and STM32F101VB */
/* #define STM32F101xE */ /*!< STM32F101RC, STM32F101VC, STM32F101ZC, STM32F101RD, STM32F101VD, STM32F101ZD, STM32F101RE, STM32F101VE and STM32F101ZE */
/* #define STM32F101xG */ /*!< STM32F101RF, STM32F101VF, STM32F101ZF, STM32F101RG, STM32F101VG and STM32F101ZG */
/* #define STM32F102x6 */ /*!< STM32F102C4, STM32F102R4, STM32F102C6 and STM32F102R6 */
/* #define STM32F102xB */ /*!< STM32F102C8, STM32F102R8, STM32F102CB and STM32F102RB */
/* #define STM32F103x6 */ /*!< STM32F103C4, STM32F103R4, STM32F103T4, STM32F103C6, STM32F103R6 and STM32F103T6 */
/* #define STM32F103xB */ /*!< STM32F103C8, STM32F103R8, STM32F103T8, STM32F103V8, STM32F103CB, STM32F103RB, STM32F103TB and STM32F103VB */
/* #define STM32F103xE */ /*!< STM32F103RC, STM32F103VC, STM32F103ZC, STM32F103RD, STM32F103VD, STM32F103ZD, STM32F103RE, STM32F103VE and STM32F103ZE */
/* #define STM32F103xG */ /*!< STM32F103RF, STM32F103VF, STM32F103ZF, STM32F103RG, STM32F103VG and STM32F103ZG */
/* #define STM32F105xC */ /*!< STM32F105R8, STM32F105V8, STM32F105RB, STM32F105VB, STM32F105RC and STM32F105VC */
/* #define STM32F107xC */ /*!< STM32F107RB, STM32F107VB, STM32F107RC and STM32F107VC */
#endif
那么相关的头文件就是
#if defined(STM32F100xB)
#include "stm32f100xb.h"
#elif defined(STM32F100xE)
#include "stm32f100xe.h"
#elif defined(STM32F101x6)
#include "stm32f101x6.h"
#elif defined(STM32F101xB)
#include "stm32f101xb.h"
#elif defined(STM32F101xE)
#include "stm32f101xe.h"
#elif defined(STM32F101xG)
#include "stm32f101xg.h"
#elif defined(STM32F102x6)
#include "stm32f102x6.h"
#elif defined(STM32F102xB)
#include "stm32f102xb.h"
#elif defined(STM32F103x6)
#include "stm32f103x6.h"
#elif defined(STM32F103xB)
#include "stm32f103xb.h"
#elif defined(STM32F103xE)
#include "stm32f103xe.h"
#elif defined(STM32F103xG)
#include "stm32f103xg.h"
#elif defined(STM32F105xC)
#include "stm32f105xc.h"
#elif defined(STM32F107xC)
#include "stm32f107xc.h"
#else
#error "Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)"
#endif
相关的启动文件就是
startup_stm32f100xb.S
startup_stm32f100xe.S
startup_stm32f101x6.S
startup_stm32f101xb.S
startup_stm32f101xe.S
startup_stm32f102x6.S
startup_stm32f102xb.S
startup_stm32f103x6.S
startup_stm32f103xb.S
startup_stm32f103xe.S
startup_stm32f103xg.S
startup_stm32f105xc.S
startup_stm32f107xc.S
相关的分散文件就是
stm32f100xb.sct
stm32f100xe.sct
stm32f101x6.sct
stm32f101xb.sct
stm32f101xe.sct
stm32f102x6.sct
stm32f102xb.sct
stm32f103x6.sct
stm32f103xb.sct
stm32f103xe.sct
stm32f103xg.sct
stm32f105xc.sct
stm32f107xc.sct
由于STM32f103RB属于xb系列,而stm32f103RC属于xe系列,所以我们需要使用xe系列的文件。上面提到的有些文件有现成的可以使用,有些则需要基于stm32f103xb系列文件做适配得到。
工程模版