STM32
直播中

lotusp

10年用户 1090经验值
擅长:电源/新能源
私信 关注
[问答]

STM32F103如何搭建开发环境?

STM32F103如何搭建开发环境?

回帖(1)

陈芳

2021-11-26 11:14:16
STM32F103介绍

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

这里用的是笔者购买的两款STM32F103C8T6的最小系统板,如下图:





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

[tr]符号说明[/tr]
STM32ST公司采用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.0LibrariesCMSISCM3CoreSupport下的:
      core_cm3.ccore_cm3.h复制到CMSIS文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x下的:
      startup文件夹、stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h复制到CMSIS文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver下的:
      inc文件夹、src文件夹复制到FWLIB文件夹中;
    • 将STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_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中添加CMSISstartuparm startup_stm32f10x_hd.s(注意选择文件类型),点击Add添加后再点击Close关闭,如图所示:




    • 同理在USER中添加USER main.cstm32f10x_it.c
    • CMSIS中添加CMSIS core_cm3.csystem_stm32f10x.c
    • FWLIB中添加FWLIBsrc中所有.c文件


  • 添加完成后点击OK,左侧工程文件树状图如图:





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





  • 在弹出的对话框中:


    • Target选项卡中设置晶振频率为8MHz(与最小系统板晶振频率一致):




    • Output选项卡中勾选Create HEX File,即生成下载用的.hex程序文件:




    • C/C++ 选项卡中Define添加USE_STDPERIPH_DRIVER,Include Paths中添加路径:.CMSIS;.FWLIBinc;.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亮(红色为电源指示灯):





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

更多回帖

发帖
×
20
完善资料,
赚取积分