手把手教你STM32入门教程(标准库)

这篇具有很好参考价值的文章主要介绍了手把手教你STM32入门教程(标准库)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

步骤一:准备工作

步骤二:安装Keil MDK-ARM开发工具

步骤三:创建工程

步骤四:配置工程

步骤六:编写代码

步骤七:下载程序 

 总结


前言  

在物联网时代,嵌入式系统的应用越来越广泛,而STM32作为业内领先的嵌入式芯片之一,受到了越来越多开发者的关注和喜爱。然而,对于初学者来说,学习STM32还是有一定难度的,需要具备一定的电子、嵌入式系统的基础知识。

STM32是一款非常强大的嵌入式芯片,它的应用领域非常广泛。在学习STM32的过程中,首先需要掌握的是基本的硬件知识和编程语言,然后才能深入学习STM32的应用和开发。本教程将手把手教你如何入门STM32(标准库),让你快速掌握STM32的基础知识和开发技巧。

本教程包含丰富的实例代码和实验,每一节都附有详细的图文解释和操作步骤,让初学者能够轻松理解和掌握。

最后,希望本教程能够成为初学者STM32学习的得力助手,也希望读者在学习过程中能够不断探索、实践和创新,不断提高自己的技能水平。


步骤一:准备工作

  • 硬件 
  1. STM32开发板(本文章使用STM32F103VET6芯片)
  2. 仿真烧录下载器(本文章使用 ST-LINK V2 下载器)

stm32编程教程,stm32,单片机,嵌入式硬件stm32编程教程,stm32,单片机,嵌入式硬件

(你也可以使用其他开发板芯片和仿真下载器,不妨碍继续阅读本文章) 

  • 软件 
  1. Keil MDK-ARM开发工具
  2. STM32标准库

步骤二:安装Keil MDK-ARM开发工具

本文章使用Keil5(MDK)开发平台,但你可以用STM32CubeIDE、或VScode,根据个人使用喜好开发

如果你没安装Keil5(MDK)软件(如果你已经安装跳过),提供以下链接参考下载:

首先需要下载Keil MDK-ARM开发工具,并且安装好。安装过程中需要选择安装的组件,选择CMSIS和Device Support即可。

安装教程 :Keil5安装教程(包含C51与MDK共存)WIN10 亲测可用

网盘下载:Keil5 MDK 下载 提取码:1234

stm32编程教程,stm32,单片机,嵌入式硬件


步骤三:创建工程

  • 创建文件夹

先下载标准库: 标准库下载 提取码:1234

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

 下载到桌面上,右击该压缩包进行解压 

stm32编程教程,stm32,单片机,嵌入式硬件stm32编程教程,stm32,单片机,嵌入式硬件

解压完了后,新建文件夹,命名随意,但最好不用中文,防止出现不明错误。然后在建好的文件夹再以下文件夹并命名(方便移植标准库)  如图: 

stm32编程教程,stm32,单片机,嵌入式硬件

  文件夹释义:Core(架构Cortex®-M3内核)、Fwlib(标准库中的.c和.h头文件)、Project(用来放工程)、Startup(芯片启动文件)、User(用户文件,用来放主函数)

stm32编程教程,stm32,单片机,嵌入式硬件

  •  新建完成后进行库移植 

1.Core移植

打开文件夹 路径:“STM32F10x_StdPeriph_Lib_V3.5.0”-“Libraries”-“CMSIS”-“CM3”-“CoreSupport”,然后右击长按选中两个-“core_cm3.c”和“core_cm3.h”,选中后右击复制粘贴到“Test”-“Core”的文件夹中

stm32编程教程,stm32,单片机,嵌入式硬件

 然后退回到“CM3”文件夹中

 打开文件夹 路径:“CM3”-“DeviceSupport”-“ST”-“STM32F10x”,然后右击长按选中三个“stm32f10x.h”和“system_stm32f10x.c”和“system_stm32f10x.h”,选中后复制粘贴到“Test”-“Core”的文件夹中

stm32编程教程,stm32,单片机,嵌入式硬件

 2.Fwlib移植 (这个就比较简单了)

返回到“STM32F10x_StdPeriph_Lib_V3.5.0”中-“Libraries”-“STM32F10x_StdPeriph_Driver”-然后右击长按选中两个-“inc”和“src”,选中后右击复制粘贴到“Test”-“Fwlib”的文件夹中。

inc:是标准库里的.h文件

src:是标准库里的.c文件

stm32编程教程,stm32,单片机,嵌入式硬件

 3.Startup(启动文件移植)

 返回到 文件路径如下:“STM32F10x_StdPeriph_Lib_V3.5.0”- “Libraries”-“CMSIS”-“CM3”-"DeviceSupport"-“ST”-“STM32F10x”-“startup”,然后选中全部一起复制到“Test”-“Startup”文件夹中

stm32编程教程,stm32,单片机,嵌入式硬件

 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”中

stm32编程教程,stm32,单片机,嵌入式硬件


步骤四:配置工程

双击打开Keil5(MDK)

stm32编程教程,stm32,单片机,嵌入式硬件

在Keil MDK-ARM开发工具中,选择File->New Project,然后选择工程路径,输入工程名称即可创建工程。

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

建工程中,它会弹一个让你选择芯片的弹窗,本文章使用STM32F103VET6芯片,所以选图中“STM32F103VE

假如你的开发板芯片是“STM32F103C8T6”,那么你应该选择图中“STM32F103C8

stm32编程教程,stm32,单片机,嵌入式硬件stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

点OK后会跳出一个“Manage Run-Time Environment”的窗口,不用理会,直接叉掉。

然后按图步骤继续--

将STM32标准库中的源文件和头文件添加到工程中,例如:stm32f0x.h、stm32f0x_gpio.h、stm32f0x_rcc.h等。

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

注意:  图下在给“Startup”添加文件中选择了“startup_stm32f10x_hd”启动文件,芯片容量不同,“STM32F103VET6”容量512KB,属于高容量

假如你使用 “STM32F103C8T6”芯片,容量为64KB,属于中容量,应选择“startup_stm32f10x_md

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

 双击工程中“main.c”,然后对该文件右击选择“lnsert '#include file”-“stm32f10x.h”,快速添加头文件。然后在8296行代码复制USE_STDPERIPH_DRIVER

stm32编程教程,stm32,单片机,嵌入式硬件

 复制后打开小魔术棒-点击“C/C++”在“Define”框粘贴,然后在"Include Pahs"添加头文件路径,然后新建-选择文件路径添加进去:“Test”文件夹中的“Core”、“Fwilb/inc”、“Startup”、“User”,这几个文件夹。

stm32编程教程,stm32,单片机,嵌入式硬件

  把以下代码复制到main.c中,再点Bulid编译,以下是编译成功图片

#include "stm32f10x.h"                  // Device header

int main(void)
{

}

stm32编程教程,stm32,单片机,嵌入式硬件


步骤六:编写代码

通过编译后,继续入门第一课   点个灯stm32编程教程,stm32,单片机,嵌入式硬件

 首先看看自己的开发板原理图有没有LED灯,如图

stm32编程教程,stm32,单片机,嵌入式硬件

这个原理图中LED一头接1K上拉电阻通往PB5引脚,另一头接去GND。得知该LED高电平点亮,低电平熄灭。

如果你的开发板的LED是其他引脚,例 PA5,也是一样原理能点灯。

开始配置,在main.c中添加代码 :

stm32编程教程,stm32,单片机,嵌入式硬件

打开“stm32f10x_rcc.h”,把这个函数:

“void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);”

Q:复制到主函数函数里,为什么要用这个函数呢?

A:这个RCC是内部时钟,必须开时钟才能运行,GPIOB在APB2总线上,所以选这个函数。

函数里面的第一个形参是选择GPIO位置,我的开发板PB5口,所以选择RCC_APB2Periph_GPIOB。

然后,函数里面的第二个形参是使能端,ENABLE就是打开,DISABLE就是关闭。

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

然后就是GPIO配置

打开“stm32f10x_gpio.h”,把这个函数:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

这个函数需要引出结构体进行配置,再赋给这个函数.

第一个形参是GPIO位,如果你是PA5即GPIOA,本文章是PB5即GPIOB

第二个形参是结构体变量名,这个结构体跟枚举差不多,直接&上结构体变量地址就行了

GPIO_Init(GPIOB, &GPIO_InitStructure); //PB5

例 :GPIO_Init(GPIOA, &GPIO_InitStructure); //PA5

stm32编程教程,stm32,单片机,嵌入式硬件

 GPIO_InitTypeDef中要引出3个结构体进行配置

第一个是GPIO工作模式,LED一般都是推挽输出 ,具体内容参考STM32入门-GPIO端口的八种工作模式

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置为推挽输出

第二个是GPIO引脚,因为原理图是PB5,所以直接改后面的数字就可以了   

 GPIO_InitStructure.GPIO_Pin      = GPIO_Pin_5;

第三个是速度,一般直接50Mhz

  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

stm32编程教程,stm32,单片机,嵌入式硬件

配置好了,最后就是直接置1点亮(高电平)

直接调函数就可以置高电平了 

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//GPIO设置为高电平
第一个参数为 GPIO位置,假如是PA5,那就GPIOA。如果是PB5,那就GPIOB.

第二个参数是引脚位置,GPIO_Pin_x(x:引脚位置,例:PB5 = GPIO_Pin_ 5).

GPIO_SetBits(GPIOB, GPIO_Pin_5);//PB5

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件


步骤七:下载程序 

 后面就是通过仿真烧录器下载,将ST-LINK V2仿真器连接到STM32芯片上,然后在Keil MDK-ARM开发工具中选择Flash->Download,将程序下载到芯片中。

打开小魔术棒-Debug

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

stm32编程教程,stm32,单片机,嵌入式硬件

如果你是芯片是64KB的,下载时候这个位置要选择合适的Flah 参考网站:STM32下载程序

stm32编程教程,stm32,单片机,嵌入式硬件

成功点亮截图

stm32编程教程,stm32,单片机,嵌入式硬件

代码奉上 

#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的基础知识和开发技巧。

没有人一开始是大佬,都是从小白入门的.谢谢阅读!文章来源地址https://www.toymoban.com/news/detail-650571.html

到了这里,关于手把手教你STM32入门教程(标准库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你写stm32f103智能风扇

    本系统可以分为两个模式来进行运行,分别为手动模式和自动模式,同时,在上电进入系统后,还会有一个模式选择的界面产生。 模式选择:在此界面中,可以通过按键K1来控制模式选择,两个模式分别为手动模式和自动模式;通过按键K2可以进入模式。 手动模式:在手动模

    2023年04月17日
    浏览(66)
  • 手把手教你开发stm32——系统时钟(基于hal库)

    概念: 时钟系统是由振荡器(信号源)、定时唤醒器、倍频器、分频器等组成的电路。常用的信号源有晶体振荡器和RC振荡器。 意义: 时钟是嵌入式系统的脉搏,处理器啮合在时钟的驱动下完成指令执行,状态转换等等动作,外设部件在时钟的驱动下完成各种工作,比如串

    2024年02月06日
    浏览(45)
  • 动手实践丨手把手教你用STM32做一个智能鱼缸

    摘要: 本文基于STM32单片机设计了一款基于物联网的智能鱼缸。 本文分享自华为云社区《基于STM32+华为云IOT设计的物联网鱼缸【玩转华为云】》,作者: DS小龙哥 。 为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友

    2024年01月16日
    浏览(49)
  • 手把手教你开发stm32——ADC(基于hal库)

    ADC的概念: Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变化的模拟信号转换为离散的数字信号的期间。 ADC的作用: 采集传感器数据,测量输入电压,检查电池电量剩余,监测温湿度等。 典型的模拟数字转换器将模拟信号转换为表示一定比

    2024年02月08日
    浏览(122)
  • 手把手教你开发stm32——看门狗(基于hal库)

    看门狗定时器(WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。如果看门狗减到0就认为程序没

    2024年02月17日
    浏览(75)
  • 手把手教你开发stm32——定时器(上)(基于hal库)

    定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。 16位计数器、预分频器、自动重装载寄存器的时基单元。 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。 根据复杂度和引用

    2024年02月03日
    浏览(49)
  • FPGA之手把手教你写串口协议解析(STM32与FPGA数据互传)

    最近趁热打铁做了一个关于STM32与FPGA通信并且控制高速DA模块产生不同频率信号的正弦波、方波、三角波和锯齿波的项目,从中收获到了很多东西,也踩了一些雷和坑,将分为几篇文章将整个过程分享出来。 这一次准备分享的是对串口数据的解析和赋值。解析的数据由STM32发

    2024年02月06日
    浏览(40)
  • 手把手教你,通过HAL库实现STM32的超声波测距--以SR-04为例

    目录 0、SR-04基本原理 1、准备工作 2、连线  3、STM32CUBEMX设置 3.1新建工程 3.2芯片通用设置 3.3定时器捕获设置 ​3.4其他设置 3.5生成工程  4、程序完善 4.1完善打印输出函数  4.2完善tim.c 4.3完善gpio.c  4.4完善main函数   5、总结 声波遇到障碍物会反射,而声波的速度已知,所以

    2024年02月14日
    浏览(49)
  • MySQL8.0.32详细安装教程(奶妈级手把手教你安装)

    前言 下载地址: MySQL安装版(还有个MySQL免安装板) 1. 如图所示下载页面 2. 在这里我们选择第二个下载项 3. 在下载页面,不用使用Oracle账号去登录或者注册,直接点击 No thanks, just start my download. 进行下载。 1. 下载完成后,我们下载的是这么个玩意儿 2. 双击运行.msi文件 3.

    2024年02月06日
    浏览(56)
  • 手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)

      最近对usb有点兴趣,感觉挺好玩的,于是买了本圈圈大神的经典著作-圈圈教你玩USB,里面使用51单片机+usb芯片对usb的基本知识潺潺道来,做了十个左右的常用案例实验,很有趣,建议大家看看。   趁热打铁,拿身边的开发板来练练手,探索一下复合设备的好玩方便的

    2024年02月13日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包