私人做网站收费,上海网站哪家好,爱站网源码,wordpress商城制作1.STM32开发方式
STM32开发一般包括三种方式#xff1a;基于寄存器开发、基于标准外设库开发、基于HAL库开发。 标准外设库是最基础的STM32开发方式#xff0c;提供了一系列函数用于配置和控制STM32的外设#xff0c;如GPIO、USART、SPI等。使用标准外设库需要手动编写代码…1.STM32开发方式
STM32开发一般包括三种方式基于寄存器开发、基于标准外设库开发、基于HAL库开发。 标准外设库是最基础的STM32开发方式提供了一系列函数用于配置和控制STM32的外设如GPIO、USART、SPI等。使用标准外设库需要手动编写代码对于有一定嵌入式开发经验的开发者来说比较熟悉。其优点是灵活性高可以根据具体需求进行定制开发但缺点是编写代码量大开发周期较长。 HAL库是STM32提供的一套高级抽象层封装了底层的硬件操作提供了一系列易于使用的函数接口。使用HAL库可以大大简化开发流程减少代码量。开发者只需要调用相应的函数即可完成对外设的配置和控制。其优点是开发效率高适合快速开发和原型验证但缺点是灵活性相对较低对于一些特殊需求可能需要自行编写底层代码。寄存器开发是通过直接操作寄存器进行开发但是由于STM32的寄存器数量众多逐个查询比较繁琐。其优点是对底层了解深入可以实现一些HAL库无法实现的功能但缺点是需要手动编写大量代码且容易出错。 后续应该大力推广的是基于HAL库的形式但是由于我自己用的是基于标准外设库开发方式就只在此记录基于标准外设库的工程新建过程。
2. 新建工程文件夹
2.1 下载标准外设库
标准外设库可以到STM32社区下载STM32官方标准库网址 https://www.stmcu.org.cn/下载。这里我所用的芯片为STM32F103C8T6下载的库为STM32F10x_StdPeriph_Lib_V3.5.0解压后目录如下;
其中Libraries为库函数文件Project为官网的例程Utilities文件夹是ST官方评估板源文件(不能了解); Release_Notes.html是固件库的发布日志stm32f10x_stdperiph_lib_um.chm文件是固件库的帮助文档可以直接双击打开。
2.2 创建文件夹放置项目工程
创建一个新的文件夹我这里是命令为controller_project然后在该文件夹里面创建四个子文件夹来存放不同的文件包括user、project、FWLIB和CMSIS。其中user文件夹用来存放主函数和一些用户自定义函数project文件夹用来存放项目工程文件以及起始代码文件FWLIB文件夹用来存放库函数CMSIS文件夹用来存放内核函数及启动引导文件。
2.3 拷贝工程所需的库文件
首先从固件库路径 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 中找到stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h 文件
复制到controller_project/user文件夹中。
其次将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的文件复制到controller_project/CMSIS中。
找到 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹下的相应文件将它复制粘贴到复制到controller_project/CMSIS文件夹中。
最终效果如图所示。
最后在标准库路径 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver中找到如下文件夹内容。
复制到工程路径controller_project\FWLIB下
至此文件拷贝工作完成需要说明的是文件目录存放在只是为了规范工程并非一定一板一眼按照流程照做可以灵活处理。
3 创建项目工程
3.1 新建工程
打开Keil5点击Project选择New Version Project创建工程项目.
然后将其放置到创建的文件夹中controller_project/project并重新命令点击保存。则弹出如下界面。
在弹出的界面中选择相应的芯片这里我选择的是STM32F103C8。选择后点击OK。
弹出了如下菜单因为我们已经做了库代码的拷贝不需要在利用KEIL自带的库函数了。因此直接点击OK即可。
至此工程就创建完毕。
3.2 项目工程的配置
如图所示点击“品字”图标在新建工程选项中添加文件路径。
在此页面可以修改Project Targets名并添加多个Groups修改结果如下。
接下来我们添加文件进入工程项目中先单击选中FWLIB选择add files…进入新建的工程文件夹controller_project/FWLIB\src中选中所有文件点击Add完成文件添加。
再单击选中CMSIS选择add files…进入新建的工程文件夹controller_project/CMSIS中选中所有的.c文件点击Add完成文件添加。
再单击选中startup选择add files…进入新建的工程文件夹controller_project/CMSIS/startup/arm文件夹中找到如图所示的startup_stm32f10x_md.s文件点击Add完成文件添加。
最后再单击选中user选择add files…进入新建的工程文件夹controller_project/user文件夹中找到如图所示的stm32f10x_it.c文件点击Add完成文件添加。
3.3 新建main.c并创建main函数
在页面左侧project栏中选中user按右键弹出菜单中选择Add New Item to Group ‘user’。
弹出如下菜单。在菜单中作如下修改点击Add完成main.c文件的添加。 打开main.c在main.c里编写如下代码创建一个空main函数。
3.4 配置编译环境
点击魔术棒图标弹出编译配置菜单。选中output选项卡一般选择把Create Hex File选项勾选上这样编译才能生成hex文件方便用烧录软件下载到STM32上。如图所示。
再次选中选中c/c选项卡。如图所示添加两个宏STM32F10X_MD, USE_STDPERIPH_DRIVER
添加USE_STDPERIPH_DRIVER是为了使用ST官方库 添加STM32F10X_MD宏定义是因为我们用的芯片是中容量的 小容量的芯片使用STM32F10X_LD 中容量的芯片使用STM32F10X_MD 大容量的芯片使用STM32F10X_HD 这个宏和startup中的启动文件需要匹配上和芯片型号最好也匹配上否则可能出现编译不过的情况。
对应关系总结如下。芯片型号对应的具体内存大小可以根据芯片手册对应查找。 |宏 |启动文件 |内存大小|
宏启动文件内存大小STM32F10X_LDstartup_stm32f10x_ld.s16-32kSTM32F10X_MDstartup_stm32f10x_md.s64-128kSTM32F10X_HDstartup_stm32f10x_hd.s256-512k 最后一步配置如图所示添加文件索引路径
点击OK完成配置。
3.5 编译
依次点击图示三个图标。无报错则说明工程配置成功。