如果你能点开这篇文章,那你一定对单片机一无所知。
所谓单片机就是单片机。 它可以做一些简单的控制、显示、计算等,还可以和一些传感器、蓝牙、电机等模块一起做很多事情。 如果电子爱好者想要做一些小创作,或者本科生需要做一些简单的控制,使用单片机是非常方便的。
常用的单片机有Arduino单片机、51单片机、STM32单片机等。
总体来说,就性能而言,STM32>51>Arduino,就价格而言,STM32
本专栏是STM32的入门指南。 如果不出意外的话会持续更新。 评论开放,大家可以随时一起讨论。
作者不是电气专业的,只是一个爱好者,而且是一个非常非常的新手。
如有错误,请指出! 我将非常感谢您的建议!
硬件和知识要求
C语言编程知识
数字电路和模拟电路最基本的知识
一块STM32开发板(本文使用STM32F407 YS-F4Pro开发板)
连接电脑和单片机的配套数据线
一台电脑
LED灯、面包板、杜邦线(可选)
软件要求
本文使用64位Windows 10系统电脑,使用的软件包括STM32CubeMX和IAR。 除了IAR之外,Keil4和Keil5也可以,但更推荐IAR。 如果需要下载链接、破解方法和配置方法,可以私聊。
Keil5图标显示好像有问题= =
这里简单介绍一下STM32CubeMX,它是一个免费的小型图形化编程程序。 它可以图形化方式生成初始化代码,并为不同的IDE软件提供工程,包括但不限于IAR和Keil。 完美运作。
STM32编程有3种语言。 我们这里使用C语言:
C语言也有不同的方法,寄存器编程、标准库编程和HAL库编程。 寄存器编程类似于汇编语言,效率高,但在复杂程序中显得繁琐、麻烦。 标准库是一个老东西,不再维护或更新。 HAL库现已正式推广。 我也在使用 HAL 库。
配置流程
分三步进行:
STM32CubeMX软件生成初始化程序
在IAR或者Keil中打开初始化程序进行编辑,然后模拟下载程序,也就是俗称的将程序烧写到芯片上。
连接超简单的硬件电路,单片机GPIO口—LED—单片机GND口,最后调试! 打开灯! 要有光!
某种程度上极其粗糙的电路
配置STM32CubeMX
图形化编程真是快乐。
首先我们打开软件,点击New Project,也就是创建一个新项目。
出现CPU芯片和开发板型号选择界面。 在此界面中,您可以搜索自己的芯片。
我们直接在图片左侧输入我们自己的芯片。 我这里使用STM32F407IG。
您还可以使用下面的选项卡逐步选择您自己的芯片型号。
搜索结果将显示在右侧。 点击鼠标选择自己的芯片。 如图所示,作者的芯片在第二排,已经被选中。
然后点击启动项目:
点击Datasheet,会出现芯片信息的PDF版本。 此时,我们就正式创建了一个新项目。
我们简单介绍一下此时的界面:
右侧红色部分为各种引脚类型设置。 默认是关闭的,需要的时候可以设置。 例如,如果我设置RCC时钟,我需要点击RCC,然后选择相应的设置。
蓝色部分为芯片的引脚,黄色引脚为电源引脚,如VCC,灰色为未设置的引脚,浅绿色为特殊功能引脚。 如果要设置,只需单击鼠标左键选择引脚,然后选择将其设置为其他类型即可。
黑色部分是不同的配置表。 我们需要配置前三个表。 第四个表是功率计算,一般不需要。
配置引脚分配表
首先选择需要向LED灯输出高电平的输出引脚。 该界面可以通过鼠标滚轮进行放大和缩小。 按住滚轮或同时按下鼠标左右键可移动图形。
我这里选择的是PE6、PE5和PH9,左键单击选择GPIO_Output。 即普通输出口。
选择后变成图2
然后对右侧的栏进行设置。 如下所示。
打开RCC设置并选择外部晶体振荡器Crystal/Ceramic Resonator。 细心观察的同学可能会注意到,此时右侧的PH0和PH1都变成了绿色。 不要惊慌,这是正常现象。 这两个连接到外部晶体振荡器。 这里的外侧是相对于芯片的外侧,而不是板子的外侧。 这个东西还在开发板的板子上。
打开 SYS 设置,单击“调试”,然后选择“串行线”。 使用ST-Link仿真调试时需要选择此项。
题外话,芯片内部是有内置时钟的,但是大量工程师已经证明芯片内部的时钟不够可靠。 因此,一般STM32工控板都会在芯片外部添加精度更高的外部晶振。
需要查看工控板的开发板手册,了解外部晶振的频率。 我的截图来自开发板的主板原理图。 该信息可以通过联系商家或开发工程师获取。
根据资料查询,这里的外部输入频率为8MHz,同样查询可知这款芯片的最高频率为128MHz。
记住这两个数字!
配置时钟配置表
然后我们选择界面左上角的Clock Configuration时钟配置表。
按照图中的数字顺序进行配置。
另外,如果你的外部晶振不是8MHz,配置过程是一样的,只是输入的数字不同,需要单独计算数字。
首先需要得到图中黄色部分的最大出现频率。 你的目标是让输入频率,经过一系列乘除运算后,黄色部分的结果等于这里的最大频率。
第一个黄色部分的频率是芯片的最大频率。 这里是168MHz。
右边两个黄色部分的最大频率已经被软件用绿色字体写出来了。
然后您可以执行简单的乘法和除法运算。 比如我这里的流程是:
8 /8 *336 /2=168
这里除以8的原因是为了让结果等于1
168 /1 /4 = 42
168 /1 /2 = 82
经过这样一组过程,我们就配置好了第二张表。
一般来说,这个地方大部分简单的程序都是这样配置的。 只要记住这组操作就可以了。
配置表
现在打开第三个配置表:Configuration配置
一般来说,您无需担心左侧。
右边会有一些你需要配置的东西。
我们只需要配置GPIO端口即可点亮智能LED灯。
于是点击上图红色按钮,弹出界面,配置各行如下图:
GPIO口输出我选择了三个引脚,所以这里有三行,分别对应PE5、PE6、PH9这三个引脚。
选择一行或多行以查看特定配置选项。
我们一一解释一下:
GPIO输出电平:这个很简单,High表示输出高电平,Low表示输出低电平。
GPIO 模式:选择输出推挽。 我们一般用这个3.3V输出,有电流。
GPIO上拉下拉:一般作为输入口使用时配置。 所以我们选择No pull-up and no pull-down,这意味着我们什么都不想要。
最大输出速度:根据需要选择最高速度、中速、低速或高速。 如果它低,功耗就会低。 我们不需要高速来点亮灯,所以选择Low即可。
UserLabel:随意添加标签Label。 在C语言中,它是一个宏定义。
最后点击应用,配置任务就完成了!
STM32CubeMX生成初始化工程文件
点击软件界面左上角菜单栏Project
看左上角! 左上角!
然后选择设置并按照图中所示的顺序进行设置。
第一个蓝色圆圈是项目名称,第二个红色圆圈是项目保存路径。
第三个黑色更重要! 如果以后使用IAR请这里选择EWARM,使用Keil 4选择MDK-ARMV4,使用Keil 5选择MDK-ARMV5,其他软件自行百度搜索。
上图中的Linker Settings是堆和栈的选择。 一般来说,默认就可以了。
接下来,在同一页面选择Code Generator,然后勾选图中第二个红圈选项。
其他的保持默认即可。
激动人心的一步已经到来。
或者在菜单栏选择Project,点击Generate Code,初始化程序就生成了!
如有必要,单击“生成报告”以生成描述的 PDF 文档。
至此,初始化过程就完成了! ! !
后续的IAR和Keil工程配置和程序仿真下载将在第2部分详细讲解。
“我不会鸽子!”
(淙淙)
注:STM32CubeMX软件的引脚排列配置表中,左栏各引脚与功能的对应关系如下:
中间件:第三方高级应用程序
外设:
RNG随机数
RTC实时时钟
SDI读取SD卡
SPI接口
SYS系统相关
TIM共有14个定时器
UART串口
WWDG 窗口看门狗