STM32单片机入门 篇一:单片机编程:从点亮LED开始

2019-04-19 11:47:32 54点赞 262收藏 22评论

创作立场声明:本文仅作学习交流用途。如有错误,烦请指出,将不胜感激。

能点开这篇文章,想必对单片机不至于一无所知。

所谓单片机,也就是单片微型计算机。可以做一些简单的控制、显示、计算等,配合一些传感器、蓝牙、电机等模块还可以做非常多的东西。电子发烧爱好者如果想做一些小创造,或者本科生需要做一些简单的控制,用单片机是非常方便的。

单片机编程:从点亮LED开始

常用单片机有Arduino单片机、51单片机、STM32单片机。

一般说来,在性能方面STM32>51>Arduino,在价格方面STM32<51

本专栏就是STM32的入门指南。如无意外会一直更新,评论开放,随时可以一起讨论。

笔者非电气相关专业,仅爱好者,也是非常非常新的新手。

如有错误,请指出!我会十分感谢您的指点!

单片机编程:从点亮LED开始

硬件和知识需求

  1. C语言编程知识

  2. 最基础的数字电路模拟电路知识

  3. 一块STM32开发板(本文采用的是STM32F407 YS-F4Pro开发板)

  4. 一根配套数据线,用来连接电脑和单片机

  5. 一台电脑

  6. LED灯,面包板,杜邦线(非必需)

软件需求

本文采用的是64位Windows10系统电脑,使用软件包括STM32CubeMX、IAR。除了IAR,Keil4、Keil5也是可以的,不过更推荐IAR。需要下载链接、破解方法和配置方法的可私聊。

Keil5图标显示似乎出了些问题= =Keil5图标显示似乎出了些问题= =

这里简要介绍下STM32CubeMX,这是个不大的免费图形化编程程序,它可以在图形化的基础上,生成初始化代码,提供项目给不同的IDE软件,包括但不限于IAR和Keil。非常好用。

STM32编程有三种语言,我们这里采用C语言:

  • 汇编语言

  • C语言(最常用)

  • C++语言

C语言也有不同的方法,寄存器编程、标准库编程和HAL库编程。寄存器编程类似汇编语言,效率高,但繁琐,复杂程序里很麻烦,而标准库是老东西了,已经不维护不更新了,现在官方推广的是HAL库。我这用的也是HAL库。

配置流程

分三步走:

  1. STM32CubeMX软件生成初始化程序

  2. 在IAR或者Keil中打开初始化程序进行编辑,然后仿真下载程序,也就是俗称的烧写程序到芯片

  3. 连接超简单的硬件电路,单片机GPIO口---LED---单片机GND口,最后调试!开亮!要有光!

简陋到一定地步的电路简陋到一定地步的电路

配置STM32CubeMX

图形化编程真的很happy啊。

首先我们打开软件,点击New Project,也就是新建一个项目。

单片机编程:从点亮LED开始

出现CPU芯片和开发板型号选择界面,这个界面可以搜索得到自己的芯片。

我们在图左侧直接输入自己的芯片,我这里用的是STM32F407IG。

也可以用下面的选项卡,一步步选择自己的芯片型号。

单片机编程:从点亮LED开始

右边会显示搜索结果,鼠标点击选择自己的芯片,如图,笔者的芯片是第二行的,已选择。

再点击Start Project:

点击Datasheet会有芯片信息的PDF点击Datasheet会有芯片信息的PDF这时我们就正式新建了项目了。

简单介绍下此时的界面:

右边红色部分是各种引脚类型设置,默认都是disable,需要的时候再设置。比如说我设置RCC时钟,就要点击RCC,然后选择相应的设置。

蓝色部分就是芯片的各引脚了,黄色引脚是电源引脚,比如VCC之类的,灰色的是没设置过的引脚,浅绿色是特殊功能引脚。如果要设置,直接鼠标左键选择引脚,然后选择设置成不同类型。

黑色部分是不同配置表,我们需要配置前三个表。第四个表是功率计算,一般不需要。

单片机编程:从点亮LED开始

配置pinout表

首先选择自己的需要的输出引脚,用来输出高电平给LED灯。这个界面可以通过鼠标滚轮来放大缩小,按住滚轮或者同时按鼠标左右键来移动图形。

我这里选择的是PE6、PE5和PH9,左键点击之后选择GPIO_Output。也就是普通输出口。

选择之后会变成图2

单片机编程:从点亮LED开始

单片机编程:从点亮LED开始

然后对右边的栏进行设置。如下图。

打开RCC设置,选择外部晶振Crystal/Ceramic Resonator。观察仔细的同学可能就注意到了,此时右边PH0,PH1变成了绿色,不要慌,这是正常的。这俩是接外部晶振的。这里的外部是相对于芯片的外部,不是板子外部,这个东西依然是在开发板的板子上的。

打开SYS设置,点击Debug,选择Serial Wire。这个是用ST-Link仿真调试的时候需要选。

插一句题外话,芯片内部有内置时钟的,但大量工程师经验证明芯片内部的并不够可靠,所以一般STM32工控板都会在芯片之外,加一个精度更高的外部晶振。

单片机编程:从点亮LED开始

外部晶振的频率需自己查询工控板的开发板手册得知,我的截图来自开发板主板原理图,资料可以通过联系商家或者开发工程师获取。

单片机编程:从点亮LED开始

查询资料可知我这里的是外部输入频率8MHz,然后同样查询可知这个芯片的最大频率是128MHz。

记住这两个数字!

配置Clock Configuration表

然后我们在界面左上方,选择Clock Configuration时钟配置表。

按照图片里的数字顺序进行配置。

单片机编程:从点亮LED开始

另外,假如你的外部晶振不是8MHz的话,配置流程一样,但是输入数字不一样,数字需要自己另外计算。

首先你要得到图里黄色部分的最大频率,你的目的就是要让输入的频率,经过一系列乘除操作之后,在黄色部分的结果等于此处的最大频率。

第一个黄色部分的频率也就是芯片最大频率,我这里是168MHz。

右边两个黄色部分的最大频率,软件已经用绿色字体写出。

然后你再进行简单的乘除运算就好。例如我这里的流程是:

8 /8 *336 /2 =168

这里除以8是为了让得数为1

168 /1 /4 = 42

168 /1 /2 = 82

这么一套流程下来,我们就配置好了第二个表。

一般来说,这个地方,大部分简单程序都是这样配置的。记住这套操作就行。

单片机编程:从点亮LED开始

配置Configuration表

现在打开第三个配置表:Configuration配置

单片机编程:从点亮LED开始

左边一般来说不用管。

右边会有自己需要配置的东西。

我们点亮智慧的LED灯只需要配置GPIO口就好。

所以点击上图里的红色按钮,弹出界面,按照下图配置每一行:

单片机编程:从点亮LED开始

我选择了三个引脚做GPIO口输出,所以这里就有三行,分别对应PE5、PE6、PH9三个引脚。

选择一行或多行,可以看到配置的具体选项。

逐一说明一下:

GPIO output level:这个很简单,High就是高电平输出,Low就是低电平输出。

GPIOmode:选择Output Push Pull 我们一般用这个3.3V输出且有电流。

GPIO Pull-Up Pull-Down:一般做输入口的时候才配置。所以我们选择No pull-up and no pull-down,就是啥都不要。

Maximum output speed:根据需要选择高中低最高速,低的话功耗低,我们点灯不需要高速,选Low就好

UserLabel:自己随意添加标识Label,到了C语言里就是一个宏定义。

最后点击Apply,配置任务就大功告成!

STM32CubeMX生成初始化工程文件

点击软件界面最左上角的菜单栏Project

看左上角!左上角!看左上角!左上角!

然后选择Settings,按照图里的顺序进行设置。

单片机编程:从点亮LED开始

第一个蓝色圈是项目名,第二个红色的是项目保存路径。

第三个黑色的就比较重要了!如果你后续用IAR,这里请选择EWARM,用Keil 4就MDK-ARM V4、用Keil 5就MDK-ARM V5,其他软件的话自己百度一下。

上图里的Linker Settings是堆和栈的选择,一般默认就好。

接下来在相同页面选择Code Generator,然后勾选一下图里第二个红线圈的选项。

其他保持默认就行。

单片机编程:从点亮LED开始

激动人心的一步来了。

还是选择菜单栏的Project,点击Generate Code,就生产了初始化程序!

如果需要的话,点击Generate Report,会产生一个说明的PDF文档。

单片机编程:从点亮LED开始

至此初始化程序,大功告成!!!

单片机编程:从点亮LED开始

之后的IAR和Keil工程配置和程序仿真下载,会在篇2里详细说明。

“我是不会鸽的!”

(咕咕咕)(咕咕咕)



备注:在STM32CubeMX软件的pinout配置表里,左边栏的各引脚和功能对应关系如下:

MiddleWares:第三方高级应用

Peripherals:

  • ADC模数转换

  • DAC数模转换

  • CAN通信

  • CRC校验

  • DCMI摄像头

  • ETH网络功能

  • FSMC外部存储器扩展

  • I2C通信

  • I2S通信

  • IWDG独立看门狗

  • RCC时钟

    • Crystal/CeramicResonator 晶体/陶瓷谐振器 8MHz的晶振 外部的 很准(内部没那么可靠)

      (选择之后PH0 PH1会亮深绿并RCC_OSC_IN RCC_OSC_OUT)(看开发板原理图

    • LSE低速时钟(需要RTC时要选中)

    • HSE高速时钟

  • RNG随机数

  • RTC实时时钟

  • SDI读Sd卡

  • SPI接口

  • SYS系统相关

    • ST-Link仿真器的话需要选择Debug:Serial Wire

  • TIM一共14个定时器

  • UART串口

  • WWDG窗口看门狗

  • 单片机编程:从点亮LED开始


展开 收起

MIJIA 米家 智能追光氛围灯带 2m

MIJIA 米家 智能追光氛围灯带 2m

99元起

iFLYTEK 科大讯飞 翻译机4.0 黑色

iFLYTEK 科大讯飞 翻译机4.0 黑色

1999元起

Apple 苹果 AirTag 智能跟踪器

Apple 苹果 AirTag 智能跟踪器

175元起

华为智选 荣泰G36筋膜枪智能按摩运动肌肉放松压力男女专业电动按摩健身高端多功能迷你减震便携

华为智选 荣泰G36筋膜枪智能按摩运动肌肉放松压力男女专业电动按摩健身高端多功能迷你减震便携

415元起

watchbond 适用华为GT4表带GT3米兰尼斯watch4手表3pro磁吸watchgt4新pronew智能B6环7荣耀magic钛金属夏天钢2e男款陶瓷

watchbond 适用华为GT4表带GT3米兰尼斯watch4手表3pro磁吸watchgt4新pronew智能B6环7荣耀magic钛金属夏天钢2e男款陶瓷

20.9元起

Ninebot 九号 车载电动充气泵打气筒轮胎压数显 自行车打气筒篮足气球泳圈充气筒 充气宝

Ninebot 九号 车载电动充气泵打气筒轮胎压数显 自行车打气筒篮足气球泳圈充气筒 充气宝

暂无报价

星菲扬 适用iwatch表带磁吸applewatchultra2表带se米兰尼斯s9苹果手表表带8代7/6/5金属不锈钢s8男女款45mm运动透气

星菲扬 适用iwatch表带磁吸applewatchultra2表带se米兰尼斯s9苹果手表表带8代7/6/5金属不锈钢s8男女款45mm运动透气

10.16元起

官款适用小米手环8/7/6/5/4腕带手表3表带nfc三四五六七八代智能替换带2运动硅胶软个性潮男高级女生薰衣草 经典黑

官款适用小米手环8/7/6/5/4腕带手表3表带nfc三四五六七八代智能替换带2运动硅胶软个性潮男高级女生薰衣草 经典黑

14.6元起

PITAKA 新款纯碳纤维手表带适用于苹果手表全系列Apple Watch Ultra 2/ Ultra/S9/8/7/6/5代iWatch磁吸高级感

PITAKA 新款纯碳纤维手表带适用于苹果手表全系列Apple Watch Ultra 2/ Ultra/S9/8/7/6/5代iWatch磁吸高级感

479元起

适用华为手环6表带荣耀6腕带金属NFC版智能运动手表配件米兰磁吸真皮织硅胶潮流替换带透明钢带非

适用华为手环6表带荣耀6腕带金属NFC版智能运动手表配件米兰磁吸真皮织硅胶潮流替换带透明钢带非

7.11元起

PICO 4 便携包 便携收纳包 毛毡外壳 防震防摔 黑色

PICO 4 便携包 便携收纳包 毛毡外壳 防震防摔 黑色

299元起

适用小米手环8/7/6/5/4腕带3NFC金属米兰磁吸卡扣不锈钢智能手表带四五六代通用真皮男女款运动替换带配件潮

适用小米手环8/7/6/5/4腕带3NFC金属米兰磁吸卡扣不锈钢智能手表带四五六代通用真皮男女款运动替换带配件潮

17.8元起

iFLYTEK 科大讯飞 P20 电子词典笔 32GB 蓝色

iFLYTEK 科大讯飞 P20 电子词典笔 32GB 蓝色

暂无报价

PITAKA适用华为GT4手表GT3pro表带磁吸watchgt4碳纤维高级感智能运动gt2男款商务时尚运动

PITAKA适用华为GT4手表GT3pro表带磁吸watchgt4碳纤维高级感智能运动gt2男款商务时尚运动

479元起

PITAKA适用华为GT4手表GT3pro彩碳表带磁吸watchgt4浮织芳纶碳纤维高级感智能运动gt2男款商务时尚运动

PITAKA适用华为GT4手表GT3pro彩碳表带磁吸watchgt4浮织芳纶碳纤维高级感智能运动gt2男款商务时尚运动

479元起

PICO NEO3 企业版 第二代 便携收纳包 黑色毛毡外壳 防震防摔 轻巧便捷 收纳方便 黑色

PICO NEO3 企业版 第二代 便携收纳包 黑色毛毡外壳 防震防摔 轻巧便捷 收纳方便 黑色

58.02元起
22评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
262
扫一下,分享更方便,购买更轻松