目录
前言
在物联网时代,嵌入式系统的应用越来越广泛,而stm32作为业内领先的嵌入式芯片之一,受到了越来越多开发者的关注和喜爱。然而,对于初学者来说,学习stm32还是有一定难度的,需要具备一定的电子、嵌入式系统的基础知识。
stm32是一款非常强大的嵌入式芯片,它的应用领域非常广泛。在学习stm32的过程中,首先需要掌握的是基本的硬件知识和编程语言,然后才能深入学习stm32的应用和开发。本教程将手把手教你如何入门stm32(标准库),让你快速掌握stm32的基础知识和开发技巧。
本教程包含丰富的实例代码和实验,每一节都附有详细的图文解释和操作步骤,让初学者能够轻松理解和掌握。
最后,希望本教程能够成为初学者stm32学习的得力助手,也希望读者在学习过程中能够不断探索、实践和创新,不断提高自己的技能水平。
步骤一:准备工作
- 硬件
- stm32开发板(本文章使用stm32f103vet6芯片)
- 仿真烧录下载器(本文章使用 st-link v2 下载器)
(你也可以使用其他开发板芯片和仿真下载器,不妨碍继续阅读本文章)
- 软件
- keil mdk-arm开发工具
- stm32标准库
步骤二:安装keil mdk-arm开发工具
本文章使用keil5(mdk)开发平台,但你可以用stm32cubeide、或vscode,根据个人使用喜好开发。
如果你没安装keil5(mdk)软件(如果你已经安装跳过),提供以下链接参考下载:
首先需要下载keil mdk-arm开发工具,并且安装好。安装过程中需要选择安装的组件,选择cmsis和device support即可。
安装教程 :keil5安装教程(包含c51与mdk共存)win10 亲测可用
步骤三:创建工程
- 创建文件夹
先下载标准库: 标准库下载 提取码:1234
下载到桌面上,右击该压缩包进行解压
解压完了后,新建文件夹,命名随意,但最好不用中文,防止出现不明错误。然后在建好的文件夹再以下文件夹并命名(方便移植标准库) 如图:
文件夹释义:core(架构cortex®-m3内核)、fwlib(标准库中的.c和.h头文件)、project(用来放工程)、startup(芯片启动文件)、user(用户文件,用来放主函数)
- 新建完成后进行库移植
1.core移植
打开文件夹 路径:“stm32f10x_stdperiph_lib_v3.5.0”-“libraries”-“cmsis”-“cm3”-“coresupport”,然后右击长按选中两个-“core_cm3.c”和“core_cm3.h”,选中后右击复制粘贴到“test”-“core”的文件夹中
然后退回到“cm3”文件夹中
打开文件夹 路径:“cm3”-“devicesupport”-“st”-“stm32f10x”,然后右击长按选中三个“stm32f10x.h”和“system_stm32f10x.c”和“system_stm32f10x.h”,选中后复制粘贴到“test”-“core”的文件夹中
2.fwlib移植 (这个就比较简单了)
返回到“stm32f10x_stdperiph_lib_v3.5.0”中-“libraries”-“stm32f10x_stdperiph_driver”-然后右击长按选中两个-“inc”和“src”,选中后右击复制粘贴到“test”-“fwlib”的文件夹中。
inc:是标准库里的.h文件
src:是标准库里的.c文件
3.startup(启动文件移植)
返回到 文件路径如下:“stm32f10x_stdperiph_lib_v3.5.0”- “libraries”-“cmsis”-“cm3”-"devicesupport"-“st”-“stm32f10x”-“startup”,然后选中全部一起复制到“test”-“startup”文件夹中
4.user移植
打开文件夹“user” -右击选择新建文本文档,然后重命名为“main.c”。
打开文件夹 “stm32f10x_stdperiph_lib_v3.5.0”->“project” -“stm32f10x_stdperiph_template”
然后选中“stm32f10x_conf.h”和“stm32f10x_it.c”和“stm32f10x_it.h”和“system_stm32f10x.c”复制到文件夹“test”-“user”中
步骤四:配置工程
双击打开keil5(mdk)
在keil mdk-arm开发工具中,选择file->new project,然后选择工程路径,输入工程名称即可创建工程。
建工程中,它会弹一个让你选择芯片的弹窗,本文章使用stm32f103vet6芯片,所以选图中“stm32f103ve”
假如你的开发板芯片是“stm32f103c8t6”,那么你应该选择图中“stm32f103c8”
点ok后会跳出一个“manage run-time environment”的窗口,不用理会,直接叉掉。
然后按图步骤继续--
将stm32标准库中的源文件和头文件添加到工程中,例如:stm32f0x.h、stm32f0x_gpio.h、stm32f0x_rcc.h等。
双击工程中“main.c”,然后对该文件右击选择“lnsert '#include file”-“stm32f10x.h”,快速添加头文件。然后在8296行代码复制use_stdperiph_driver
复制后打开小魔术棒-点击“c/c++”在“define”框粘贴,然后在"include pahs"添加头文件路径,然后新建-选择文件路径添加进去:“test”文件夹中的“core”、“fwilb/inc”、“startup”、“user”,这几个文件夹。
把以下代码复制到main.c中,再点bulid编译,以下是编译成功图片
#include "stm32f10x.h" // device header
int main(void)
{
}
步骤六:编写代码
通过编译后,继续入门第一课 点个灯
首先看看自己的开发板原理图有没有led灯,如图
这个原理图中led一头接1k上拉电阻通往pb5引脚,另一头接去gnd。得知该led高电平点亮,低电平熄灭。
如果你的开发板的led是其他引脚,例 pa5,也是一样原理能点灯。
开始配置,在main.c中添加代码 :
然后就是gpio配置
配置好了,最后就是直接置1点亮(高电平)
步骤七:下载程序
后面就是通过仿真烧录器下载,将st-link v2仿真器连接到stm32芯片上,然后在keil mdk-arm开发工具中选择flash->download,将程序下载到芯片中。
打开小魔术棒-debug
成功点亮截图
代码奉上
#include "stm32f10x.h" // device header
void led_config(void)
{
gpio_inittypedef gpio_initstructure;
rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);
gpio_initstructure.gpio_mode = gpio_mode_out_pp;
gpio_initstructure.gpio_pin = gpio_pin_5;
gpio_initstructure.gpio_speed =gpio_speed_50mhz;
gpio_init(gpiob, &gpio_initstructure);
}
int main(void)
{
led_config();
while(1)
{
gpio_setbits(gpiob, gpio_pin_5);
}
}
总结
本教程介绍了如何入门stm32(标准库),包括安装开发工具、安装仿真器驱动、创建工程、配置工程、添加文件、编写代码、编译程序和下载程序等步骤。希望可以帮助初学者快速掌握stm32的基础知识和开发技巧。
没有人一开始是大佬,都是从小白入门的.谢谢阅读!
发表评论