本文目录
写在前面
如何食用本系列教程?
本系列教程分为10篇,后续可能会有更多的拓展篇幅呈上(一定不鸽.jpg)
所有的教程都在我们的小站上,你可以在上方导航栏的 电子教程->Bonjour STM32
找到这个系列教程的所有文章。
当然,你也可以从第一篇(也就是本篇)读起,读完之后在文末可以直接跳转到上一篇/下一篇文章
如何学习?
技术总是与时俱进的,它不像我们的课本知识一成不变(至少在下一个Einstein诞生之前是这样的:D),可能我们去年才学会的技术,今年就被淘汰掉
所以我们需要学会如何自学
,我做了简单的总结如下:
-
学会搜索资料
- 使用Google(需要科学上网)、Bing(无需科学上网)等搜索引擎查找技术问题,尽量不用百度
一个并不存在的网站-Google(需要科学上网)
美味的Bing
- 使用Google(需要科学上网)、Bing(无需科学上网)等搜索引擎查找技术问题,尽量不用百度
-
学会自主解决问题
- 当问题出现不要慌,提取其中的关键词/点进行针对性的搜索,尽量自己独立地研究问题
比如你写的流水灯程序出现了问题,无法通过编译,有Error,你需要在编译输出窗口寻找并定位到Error来源,再来根据报错类型具体分析是哪里出现了问题
同时你可以搜索问题,如报错"undefined xxx"
,你就可以搜索 "undefined xxx",而不是搜索怎么点流水灯?
(
- 当问题出现不要慌,提取其中的关键词/点进行针对性的搜索,尽量自己独立地研究问题
-
学会提问
- 当问题实在是超出了你的知识范畴,你可以向他人求教,
向他人求助并不丢人
,不过你要学会正确的提问方式
- 当问题实在是超出了你的知识范畴,你可以向他人求教,
-
错误的提问示范:
大佬,在吗?/有大佬吗?/有人吗?/—低效,浪费双方时间
(手机拍屏幕),巨巨我这个程序它怎么跑不了啊—信息提供不全,不知所云
大佬,帮我看看这个代码(然后附上手机拍屏,还不全)—缺少信息,无法debug
大佬帮我做个xxx吧—我:?????看完了这些,你是不是也倒吸一口凉气...
-
正确的提问示范:
你好,我在开发xx的时候遇到了问题(附上完整的工程文件和所有代码),我尝试了xxx、yyy方法,仍然无法解决,我的运行环境是xxx操作系统,软件版本是V5.x,硬件连线我不确定有没有问题,(如果有的话附上电路原理图和PCB文件)
哈哈哈是不是有点严?可是这是最能节省双方时间的提问方式哦~时间就是生命啊!
当然你也不需要 完 全 一 致,只需要提供足够用于debug的完整信息就可以了~如果你能正确地提问,别人也是非常乐意帮助你的~
推荐的学习路线
如果你是新人,还素么都8太会,你只需要掌握:
- 基础的电脑操作
- C语言
- 高中水平电路知识(忘了就快去找你的高中物理老师233)
- 会接线
想要进阶的话,我推荐你学习如下(基础)内容:
- 深入学习C语言
- 简单的电路分析
- 使用开发软件
- 认识常见电路图符号,最好会自己画
- 如果可以,学学PCB设计
- 再学会焊接PCB就更好啦
- 学一点数电?
- 再来一点模电~
- 挖坑永无止境.jpg
推荐的学习资源
那么我们——
哈吉马路油
这篇文章对STM32系列单片机做一个简单但全面的介绍,为我们学习STM32开发打下基础。
至于为什么叫CookNote呢,我看ST官方出的应用手册有一个叫CookBook~ 看起来很美味的样子,我也就拙劣地效仿一下。
首先声明一下~本篇可能涉及很多专业词汇,如果你之前没有听说过也不用在意呀,在之后的系列教程中我们会慢慢接触到这些名词并弄懂他们的含义的~
后言链接
Popo写的 初识CubeMX
(看完了本文一定要看看这个呀~)
STM32是什么?好吃吗?
STM32是意法半导体(STMicroelectronics)公司的一系列32位ARM核心的单片机(MCU)产品。按照核心类型可分为几大种类,比如Cortex-M3,CortexM4,Cortex-M7F……
STM32系列MCU的功能是非常强大的,而且它的用途覆盖了几乎电子产业链的方方面面。比如说你的MP3\MP4、手机、电视、空调、电脑…几乎你手里的一切电子产品都有MCU的身影。
如果你想进一步了解单片机的功能,请参阅俺写的 电子入门教程[00]—Beginning from Zero 中的单片机介绍。
STM32产品线介绍
首先,我们要清楚STM32产品的 命名规则 。
通常情况下是如下格式:
STM32 xx yy zz
- xx -> 代表产品线序列(2位-3位)
- yy -> 代表具体型号(3位-2位)
- zz -> 具体型号的细分后缀(不确定,通常2位)
顺便提一句,如果确定了xx和yyy之后,这个单片机的硬件性能基本就确定了,zz一般只是区分这个型号单片机的不同FLASH和RAM容量~
ValueLine
这是ST官网上的一张产品线介绍图
左边一列从上到下,这些产品线依次是:
- 高性能(F7,H7,F4,F2系列)
- 主流(G0,G4,F0,F1,F3系列)
- 超低功耗(L0,L1,L4,L5,L4+系列)
- 无线(WB,WL系列)
我们将逐一介绍。
高性能
顾名思义,就是性能很牛逼。主要体现在如下方面:
- 主频较高(低的72MHZ,高的能达到480MHZ左右,并且是带有Cache的双核处理器)
- 外设丰富且强大(如2.4MSPS 16bit的片上ADC,多达40+通道(非常恐怖,兄dei.jpg))
- 支持诸多高级功能如完整的网络协议栈,ART-Accelerator图形加速器,FSMC内存控制器…
- 带有浮点运算硬件加速单元,如DSP、FPU协处理器等
- 片上FLASH和RAM很大,适合大型电子系统的控制
- Balabala…
主流
主流单片机就是用的最多的单片机啦,因为高性能单片机贵呀www,而我们通常做产品需要控制成本的,性能只要够用就好,所以这时候主流单片机就成了我们的不二选择,因为这些产品性能足够, 价 格 美 丽 。
在这里我们介绍一下最常用的典型外设:
- 硬件SPI控制器(多通道)
- 硬件I2C控制器(多通道)
- 硬件UART控制器(多通道)
- 硬件CAN控制器(多通道)
- CRC校验
- 硬件SDIO控制器
- DMA控制器(多通道)
- WWDG(看门狗(不是育碧那个23333))
- ADC(多通道,一般为2 16通道,高性能单片机有3 16通道)
- DAC(12bit / 16bit)
- 数量众多的定时器(特殊型号有高级定时器和各种专用定时器,非常强大)
- FSMC(8/16 bit总线)
- USB_OTG(主/从模式)
- 硬件I2S(多通道(高达192MHZ时钟))
- RNG(硬件真随机数发生器)
超低功耗
超低功耗MCU主要应用在可穿戴设备和对能源要求苛刻的场合,比如用镍氢电池供电的小型电子设备(要求连续稳定运行多年)。这一产品线的产品主打低功耗,但他们的性能却不输甚至超越了部分主流单片机~!
(当然价格可能不是那么美丽了哈哈哈哈哈)
无线
这一类MCU通常是支持各种无线通信协议的单片机,比如BlueTooth和Zigbee
同时,这类MCU采用和超低功耗系列单片机相同的开发技术,提供相同的数字和模拟外设,适用于需要延长电池寿命和复杂功能的应用。
(俺也没怎么用过orz 因为他价格不美丽!)
选型方法
看完上面这些花里胡哨的介绍,是不是有点晕?
我们在使用的时候应该怎么选择STM32的型号呢…
上 官网 查阅型号是一个不错的方法!
其实…CubeMX不仅是一个代码框架生成器,它更是一个STM32产品 选 型 器 ~
打开Cubemx,新建一个工程,来到器件选择界面:
在左边侧栏上面的搜索框输入"stm32xxyy",即可找到你想要的型号。
比如我们输入"stm32f103c8",右侧就会筛选出对应的型号,我们查到的是"STM32F103C8Tx"单片机。
鼠标左键单击,右上框的器件描述就会展现出这个器件的简介。
我们可以看到那一排有一些性能参数,简单解释一下:
Package | Flash | RAM | IO | Freq. |
---|---|---|---|---|
器件封装 | 片上Flash大小 | 片上RAM大小 | 除去电源引脚外可用的IO数量 | 最高主频 |
器件介绍中有如下字段:
- ARM®32-bit Cortex®-M3 CPU Core
72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
Single-cycle multiplication and hardware division- Memories
64 or 128 Kbytes of Flash memory
20 Kbytes of SRAM- Clock, reset and supply management
2.0 to 3.6 V application supply and I/Os
POR, PDR, and programmable voltage detector (PVD)
4-to-16 MHz crystal oscillator
Internal 8 MHz factory-trimmed RC
Internal 40 kHz RC
PLL for CPU clock
32 kHz oscillator for RTC with calibration- Low-power
Sleep, Stop and Standby modes
VBAT supply for RTC and backup registers- 2 x 12-bit, 1 μs A/D converters (up to 16 channels)
Conversion range: 0 to 3.6 V
Dual-sample and hold capability
Temperature sensor- DMA
7-channel DMA controller
Peripherals supported: timers, ADC, SPIs, I2Cs and USARTs- Up to 80 fast I/O ports
- Debug mode
- 7 timers
Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
16-bit, motor control PWM timer with dead-time generation and emergency stop
2 watchdog timers (Independent and Window)
SysTick timer 24-bit downcounter- Up to 9 communication interfaces
Up to 2 x I2C interfaces (SMBus/PMBus)
Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
Up to 2 SPIs (18 Mbit/s)
CAN interface (2.0B Active)
USB 2.0 full-speed interface- CRC calculation unit, 96-bit unique ID
- Packages are ECOPACK®
(其实你不看也不影响你使用的 d=====( ̄▽ ̄*)b)
这样你就可以选择你想要的单片机型号啦。
推荐
STM32F103C8T6最小系统,只需要10块钱左右即可买到。淘宝搜索关键字"stm32f103c8t6最小系统"即可找到。
因为这个片子性能足够强,72MHZ主频,ADC,SPI,I2C,USART,TIM应有尽有,完全满足基础的学习上手需求~
Debug/Trace
当然,除了STM32最小系统之外你还需要一个ST-LINK,用来下载程序/调试代码。
不过…这个是ST官方正版的,价格不是很美丽….我们可以选择这样的:
这个是开(盗)源(版)版,非常便宜,大概10-15RMB就可以买到,淘宝搜索关键词"ST-LINK"就可以搜到。功能和官方的没什么大区别,就是复位功能有点小bug,不太影响。
那么怎么连接STM32最小系统和ST-LINK呢?
我们只需要4根线:
ST-LINK | STM32 |
---|---|
SWCLK | CLK |
SWDIO | DIO |
GND | GND |
用4根母对母杜邦线将ST-LINK上的4个针脚和BluePill上的ST-LINK接口的4个针脚对应连接起来就ok~
然后我们还需要安装ST-LINK的电脑驱动,这样电脑才能建立和ST-LINK的通讯。
接下来就是愉快的开发环节啦。
具体的安装教程可以看俺在 b站发的视频 哦~
我们下期见!
别忘了看Popo写的教程哦~
Popo写的 初识CubeMX