一个应用软件程序员的单片机STM32零基础入门

为何开始考虑搞嵌入式开发? 近5年来,从云计算、大数据到机器学习、AI,各类新潮的技术概念一波~~接一波。程序员

做为一名好奇心旺盛的软件程序员,每个技术概念流行起来都会去凑凑热闹。编程

但,在个人技术栈里,一切开发出来的软件都须要经过PC、手机才能进行人机交互。windows

怎么破?搞嵌入式开发!机器学习

好几年前,一个在搞嵌入式开发的朋友,给我安利了嵌入式开发的知识,因为一直在忙于工做,没有真正的认真接触,直到今年,本身创业,才认真考虑嵌入式是否可以为本身带来新的机遇?函数

选择STM32 刚开始,个人朋友推荐了树莓派做为我入门的开发板。工具

树莓派,能够安装操做系统,价格适中,功能完善,几乎就是一台低性能的小电脑,用于熟悉各类引脚功能、把玩经常使用传感器设备很是方便,还能够很是廉价的搭建Linux操做系统,很适合编程初学者搭建Linux开发环境。性能

可是它并不能学习到真正的嵌入式开发的知识。相对PC来讲,它很是便宜,可是作嵌入式产品,它的功耗、体积和价格都过高。学习

向朋友请教后,决定选择一款真正的单片机开发板来学习嵌入式开发。开发工具

在网上查找资料,了解到目前流行的单片机有大数据

51系列:经典,有不少书籍和课程都是围绕51系列写的 AVR:Atmel公司的新型单片机,听说是用来替代51的 STM32/STM8:ST公司的ARM内核的单片机 STC51:国产,深圳宏晶公司的产品,听说是AVR和51的结合体 其中我选择了STM32。缘由以下:

在技术论坛上看到,51虽然经典,可是确实是有点过期了,技术指标和功能都比不上STM32 STM32性价比高,功能多,可是价格却依然很便宜,最小系统板相比其余单片机板子比都是很便宜的。 资料足够多。不过也看到有人诟病资料太复杂,由于STM32提供的功能确实多,学习的内容天然就多了不少,好比时钟就有5个,比51复杂点。 完善的IDE和库。到目前为止,这是我认为STM32最方便的地方,也是真正可以零基础入门的缘由。官方提供基于Eclipse的IDE、HAL硬件抽象库(C语言),在彻底没学过单片机原理的前提下,稍微看看HAL库,就能作一些简单的小实验。(要知道,大多数51单片机教程里,是要先学习一点寄存器知识以及汇编语言知识才能真正动手的)。 大部分单片机的开发环境在windows下很方便,可是在OSX下不多有好用的IDE和调试软件,可是ST官方就提供了跨平台的 all-in-one 开发工具。 动手 访问ST公司的官方网站。www.st.com

顺便说一下,单片机的更新速度没有软件领域那么快,所以网上的技术资料没有软件方面的多,而且更新速度也不及时,可是碰巧ST公司这两年更新了不少内容,好比STM32CubeMX、STM32CubeProgrammer、STM32CubeIDE的介绍就比较少,ST公司还封装了HAL库(硬件抽象库),把寄存器的操做都封装成了容易使用的函数,因此建议你们尽可能经过官方网站查阅资料。 能够看到,ST公司有不少产品,32位微处理器只是其中一项。STM32即ST公司的32-bit的微处理器(Microprocessor)。

第一步 下载IDE 在ST官网上方搜索框直接搜索stm32cubeIDE

image.png

STM32CubeIDE is an all-in-one multi-OS development tool, which is part of the STM32Cube software ecosystem. STM32CubeIDE 基于ECLIPSE™/CDT的多功能的跨平台开发工具,它属于STM32Cube软件体系的一部分。

image

在学习阶段,只须要使用STM32CubeIDE 就足够了,它包含了配置工具和调试工具。

第二步 选择一款开发板 和软件开发不一样,除了一台电脑,咱们还须要购买单片机。可是一块单片机是不能直接用来学习的,咱们须要购买一块具备一些简单功能而且引出引脚的单片机开发板。

万能的某宝上直接搜索STM32开发板就能够看到不少不一样型号和价格的开发板,接下来如何选择呢?

单片机自己的价格很便宜,几块到十几块而已,可是开发板的价格差距就很大了,几块到几十块甚至几百块的都有。价格差别主要是开发板的外设功能不一样,有不少板子作了不少接口,所以价格也高,可是咱们在入门学习并不必定用获得,做为入门,我选择的是最小系统板。

最小系统板,就是只包含一些基本的接口,引出引脚,体积小,价格便宜。 可是最小系统板也有好几款,它们的区别主要在于STM32微处理器的型号。

看看官网的图 image.png

image.png

从图上能够看出,ST公司根据性能、用途把处理器分红了不少型号,其中F0和F1系列是比较适合入门学习的,这也是为何某宝上搜索STM32开发板 F0和F1比较多的缘由,其中F103C8T6这个型号是最多的,由于它的性能和功能足够丰富,彻底知足用于学习,其中一款代号“BluePill”的开发板很好用,价格也便宜。 BluePill开发板长这样,对比着买吧,价格大概在12-22不等(新手建议买焊接好针脚的): image.png

买买买,建议买2-3块,根据个人经验,有很小的概率买到有问题的板子,有2-3块板子,若是发现有什么疑问,能够换着试试,检查一下是本身的问题仍是板子的问题,并且做为新手,手上有两三块备用板子,能够放心大胆的玩,不怕玩坏,学习起来更有效率。

第三步 购买配件 除了开发板,咱们还须要采购一些设备才能进行调试和开发。我学习的时候彻底不懂,身边也没人指导,买来一块板子就懵逼了,怎么用,而后一点一点的配齐配件才能动手作实验。

必要配件:

烧写程序的ST-Link V2 :写好的程序安装进单片机的工具 面包板:方便接电路作实验 杜邦线:接电路必备,公公、公母、母母,都买点 mini USB电源和线(通常安卓手机充电器和线就能够) 可选配件(初学者不必定会用到,可是想深刻,早晚须要用到):

各类传感器:除了控制开发板的小灯外,若是能利用传感器作实验是颇有意思的事情。 发光二极管:和传感器功能差很少,都是为了方便作实验。 电阻:不少发光二极管的额定电压电流很低,须要组合电阻 USB TTL 转接:另外一种烧写程序的方式,另外,在电脑上作串口调试的时候会用到 锡焊设备 第四步 编写程序 设备都配置齐全后,就能够开始第一个小实验了。

以BluePill开发板为例,首先接好ST-Link V2,接法很简单,开发板上的TX接ST-Link上的RX、开发板上的RX接ST-Link上的TX,开发板的Gnd与ST-Link的Gnd想接,Vcc与Vcc相接,而后插在电脑的USB口上。

image.png

打开STM32CubeIDE,新建一个工程,导航上会出现一些配置选项。

Eclipse的部分就不赘述了,主要说说STM32库的选择。

不一样型号的处理器,库和配置是不一样的,所以,新建项目以前,STM32CubeIDE会要求选择单片机型号,在搜索框中输入对应的单片机型号,而后在列表里选择肯定。

image.png

image.png

以后,IDE就会用对应的库初始化项目。

项目建立完成后,在左侧文件窗口点开 .ioc文件 image.png

这个文件很是重要,在ST公司推出CubeMX以前,作初始化是很麻烦的事情,用任何引脚、配置时钟、中断使能、串口配置等都须要编写初始化代码。如今,CubeMX把这些工做都作成了可视化配置,而且CubeIDE里集成了CubeMX的这个功能。

image.png

image.png

经过可视化的配置,STM32CubeIDE生成了标准的初始化代码,相似下图 image.png

image.png

在生成的main.c文件中,能够看到不少注释。要注意,这些注释可不是多余的,都颇有用。为何呢?由于,修改.ioc文件会提示是否从新生成main.c文件,通常状况下确定是须要从新生成的,否则修改的配置不会生效,那么以前若是已经在main.c写的代码怎么办?会被覆盖掉吗?会,除非,你的代码是写在

/* USER CODE BEGIN xxxxx */

/* USER CODE END xxxxxx */ 之间,全部不在相似 USER CODE BEGIN 和END 之间的代码,都会被覆盖掉。

STM32CubeIDE生成的main.c留出了不少写用户代码的位置,而且经过注释引导你写在正确的位置。 image.png

接下来写一个简单的试验性代码,让BluePill上的PinC13的灯闪起来

首先在打开ioc文件,配置pc13为输出引脚 image.png

保存配置从新生成main.c文件

而后在主循环while中添加代码,

while (1) { /* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
    //设置C组13引脚为低电平
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
    //延时200ms
    HAL_Delay(200);
    //设置C组13引脚为高电平
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    //延时200ms
    HAL_Delay(200);
复制代码

} /* USER CODE END 3 */ OK,一个简单的闪灯程序就完成了。

第五步 烧写程序调试 还记得以前让用ST-link接入,并插在电脑上吗?立刻要用到它了。

打开Debug配置 image.png

刚才介绍的是SWD的接线方式,因此这里选择SWD接口 image.png

接线正常的状况下,点击Debug按钮,程序就能自动烧写到开发板的单片机里并运行了。

这时候,你应该可以看到BluePill上的小绿等快速的闪烁。

到这里,就差很少介绍完了,可是单片机的知识面很是庞杂,相比起来,本篇文章十分粗浅,冰山一角,我只是从一个软件程序员的角度去介绍它,想经过本文让想学习STM32单片机开发的新同窗看到一个相对完整的从0到第一个闪灯实验的过程,依此概览单片机学习和开发的轮廓。

单片机的开发须要耐心的学习不少基础知识,有兴趣的同窗能够留言一块儿学习!

相关文章
相关标签/搜索