【STM32F103笔记】1、搭建开发环境

STM32F103介绍

STM32F系列是意法半导体(ST)公司的32位ARM微控制器,内核采用Cortex-M3,其它方面的说明可以查阅相关资料。

STM32F103C8T6最小系统板

这里用的是笔者购买的两款STM32F103C8T6的最小系统板,如下图:
在这里插入图片描述

两款最小系统板很相似,左侧都是JLink插口,晶振频率均为8MHz,右侧布置有供电接口复位按键启动方式选择跳帽(图中绿色和红色的小东西,下载程序用),并且把引脚在周围引出。黑色的板子把OLED接口留了出来并且右侧多设置了一个按键,蓝色的板子则是给出了串口等接口。

STM32F103C8T6命名说明
符号 说明
STM32 ST公司采用ARM Cortex-M3内核的32位微控制器
F 芯片子系列
103 增强型系列
C 引脚数,T:36,C:48,R:64,V:100,Z:144,I:176
8 内部Flash容量(单位:字节),6:32K,8:64K,B:128K,C:256K,D:384K,E:512K,G:1M
T 芯片封装,H:BGA,T:LQFP,U:VFQFPN
6 工作温度,6: -40 ~ 85℃,7: -40 ~ 105℃

因此STM32F103C8T6即代表ST公司采用ARM Cortex-M3内核的增强型32位微处理器,引脚数为48,内部Flash容量为64KBytes,芯片封装为LQFP,正常工作温度为-40 ~ 85℃。
说明:Flash容量16 ~ 32K为小容量,64 ~ 128K为中等容量,256 ~ 512K为大容量。

开发环境搭建

这里使用Keil uVision5,具体安装就略过了(嘿嘿)。
安装完成后打开软件,是这样滴:
在这里插入图片描述
但是Keil uVision5并不带有STM32F103的软件包(Software Packs),因此需要在安装结束后再安装Keil.STM32F1xx_DFP.2.1.0.pack软件包(这个网上搜一搜应该能找得到,或者私信我给你发也行),直接双击安装就行,安装完成后再重新打开Keil uVision5就完成了。

建立第一个工程

STM32可以直接控制寄存器进行程序开发,但要求对芯片的寄存器掌握熟悉,并且开发速度会比较慢,但优点是运行效率更高;对于刚入门或者为了开发方便的同志们来说,采用库开发相对更舒服一些,并且可以在程序定型后再将库开发的版本转换成寄存器版本。在这里将使用官方库进行开发。

获取官方库

使用库开发让人放心的一点就是,这个库是意法半导体(ST)公司官方给出的,并且Free(嘿嘿)。
打开ST官网,找到产品->微控制器->STM32主流MCU
在这里插入图片描述
然后找到工具与软件->嵌入式软件->MCU及MPU嵌入式软件->STM32 Standard Peripheral Libraries
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
因为选用的是STM32F10x系列,所以根据描述和支持器件的说明,往下拉找到STSW-STM32054,点击打开,再点击Open software page
在这里插入图片描述
在这里插入图片描述
下拉找到获取软件,注册或者登录ST官网就可以下载官方库了。
在这里插入图片描述
下载得到的官方库解压:
在这里插入图片描述
编写程序时主要用到其中的Libraries文件夹。stm32f10x_stdperiph_lib_um.chm是帮助文档,对后续开发十分有帮助,可以方便的查阅数据结构函数说明等。
在这里插入图片描述

建立工程

推荐单独建立一个工程文件夹用于存放所有程序,并在此文件夹下新建0-Template文件夹用于保存工程模板,以后只需要复制工程模板就可以进行下一个程序的编写,而无需再次配置工程。
下面的关键步骤会进行标记,其它文字为说明性文字。

  • 0-Template文件夹下新建如下三个文件夹:CMSISFWLIBUSER
    在这里插入图片描述
    其中CMSIS与官方库文件夹名称一致,为Cortex Microcontroller Software Interface Standard的缩写;FWLIB为Firmware Library即固件库缩写,存放STM32各类外设函数;USER存放用户编写的程序文件。文件夹命名并无要求,看个人习惯。

  • 复制库文件

    • 将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的:
      core_cm3.ccore_cm3.h复制到CMSIS文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的:
      startup文件夹、stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h复制到CMSIS文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下的:
      inc文件夹、src文件夹复制到FWLIB文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的:
      main.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h复制到USER文件夹中。

    复制完成后,各个文件夹中如图:
    在这里插入图片描述

  • 打开Keil uVision5,点击Project->new uVision Project,浏览到0-Template文件夹,输入工程名称,这里取Template,保存:
    在这里插入图片描述

  • 将会弹出设备选择框,如果没有安装Keil.STM32F1xx_DFP.2.1.0.pack软件包则不会显示STM32F1 Series,需要安装软件包后再重新打开Keil uVision5建立工程,这里选择STM32F103C8,点击OK:
    在这里插入图片描述
    将会弹出环境设置选框,直接点击右上角关闭即可:
    在这里插入图片描述
    至此,新工程已经建立好,下面进行配置

  • 首先设置各个文件夹及文件,在Target 1上右击选择Manager Project items或者直接点击图标
    在这里插入图片描述

  • 在弹出的对话框里进行设置,将Project Targets修改为Template,在Groups中新建STARTUPUSERCMSISFWLIB四个文件夹,完成后先不关闭,还要添加库文件,如图所示:
    在这里插入图片描述

  • 添加库文件,选中一个文件夹,点击Add Files:

    • STARTUP中添加\CMSIS\startup\arm\ startup_stm32f10x_hd.s(注意选择文件类型),点击Add添加后再点击Close关闭,如图所示:
      在这里插入图片描述
    • 同理在USER中添加\USER\ main.cstm32f10x_it.c
    • CMSIS中添加\CMSIS\ core_cm3.csystem_stm32f10x.c
    • FWLIB中添加\FWLIB\src中所有.c文件
  • 添加完成后点击OK,左侧工程文件树状图如图:
    在这里插入图片描述

  • 然后对工程进行设置,在Template上右击选择Options for Target ‘Template’ 或者直接点击图标:
    在这里插入图片描述

  • 在弹出的对话框中:

    • Target选项卡中设置晶振频率为8MHz(与最小系统板晶振频率一致):
      在这里插入图片描述
    • Output选项卡中勾选Create HEX File,即生成下载用的.hex程序文件:
      在这里插入图片描述
    • C/C++ 选项卡中Define添加USE_STDPERIPH_DRIVER,Include Paths中添加路径:.\CMSIS;.\FWLIB\inc;.\USER
      在这里插入图片描述
  • 然后打开main.c文件,删除原有内容,添加代码:

#include "stm32f10x.h"
int main(void)
{
	while(1);
}

在这里插入图片描述
即完成了模板工程的建立,可以进行编译,结果如下:
在这里插入图片描述
没有报错的话(0 Error(s), 0 Warning(s) )就说明工程建立好啦(~ ̄▽ ̄)~

下面用程序测试一下

通过电路原理图可知,蓝色最小系统板上LED对应控制管脚为PB8,也就是GPIOB的8引脚,且当引脚输出低电平时,LED亮:
在这里插入图片描述
在main.c中输入下列代码:

#include "stm32f10x.h"
int main(void)
{
	GPIO_InitTypeDef GPIOInitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIOInitStruct.GPIO_Pin = GPIO_Pin_8;
	GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIOInitStruct);
	
	GPIO_ResetBits(GPIOB, GPIO_Pin_8);
	
	while(1);
}

在这里插入图片描述
编译通过,0 Error(s), 0 Warning(s)
连接好最小系统板的UART1,并拔去跳帽,打开mcuisp.exe,点击搜索串口选择正确的串口,选择生成的Template.hex程序文件,点击开始编程进行下载:
在这里插入图片描述
下载完成后,插上跳帽重新上电或者按下复位键,程序运行,绿色LED亮(红色为电源指示灯):
在这里插入图片描述

完结撒花✿✿ヽ(°▽°)ノ✿

发布了1 篇原创文章 · 获赞 2 · 访问量 94

猜你喜欢

转载自blog.csdn.net/Keep_moving_tzw/article/details/104388030