STM32入门——基于野火 F407 霸天虎课程学习
前言
博主开始探索嵌入式以来,其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪,不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科技的 stm32f103c8t6 课程看了一段时间,感觉对一些外设的调用方法有一个基础的认知了,但是没有很明白到底在学什么;正点原子则是有点听不懂,半字也借给同学了就有一段时间没学,感觉自认为 stm32 学的有两把刷子了。后来听前辈说江协科技的 stm32 课程不如 51 单片机的质量好,其实课程讲的一般,我就想:是不是应该重新好好学一下 stm32 课程了。
这次选择的是野火的 F407 霸天虎课程,第一是听大家说,入门选野火或者正点最好。第二是野火的大师进阶篇的一些内容,涉及到一些原理等的学习讲解,我觉得对我会非常有帮助,因此正好就买了这款开发板从入门到中级到大师原理一起学习了。
本系列博文笔记主要基于野火相应课程,b站地址:野火F407开发板-霸天虎视频-【入门篇】_哔哩哔哩_bilibili ,仅供学习参考不做任何商业用途使用,侵删!
调试器介绍
我选择的是高速版,支持 SW 和 JTAG 两种连接方式。SW 模式则只需要连接 VREF(3V3), TMS(数据), TCK, RESET, GND 五个引脚。
程序烧录配置
芯片型号:STM32F407ZGTX。
DAP 仿真烧录自然非常简单。
串口一键下载 ISP 下载速度慢,不能调试,但是成本很低。可以使用 FlyMcu 等软件。
ISP 下载方式:允许我们不拆下芯片来下载。对于上个世纪嵌入式学习来说这是一个很大的突破,因为当时是要把芯片拆下来烧录编程的。
ISP 厂商出产的时候就选定了一种串行外设对芯片内部 FLASH 进行编程,我们不能修改。常用串口下载方式,成本低,但是不能调试仿真。
普通 ISP 需要手动配置 boot loader,一键 ISP 不用,硬件电路和上位机配合达到一键下载的效果(手动配置:00是用户闪存启动,10是系统 SRAM/ISP 启动,普通 ISP 要手动改跳线帽)。
一键下载电路的具体原理流程如下:
- RTS 低电平,Q1 是一个 PNP 三极管,导通,BOOT0 拉高。
- DTS 高电平,Q2 NPN 导通,U18 是一个由 EN 控制开关的模拟开关,2 脚被导通为低电平,连接1脚拉低 NRST 复位。程序下载执行。
- U18 模拟开关的作用是稳定电路。开发板复位的时候 DTR RTS 是不稳定的状态,如果没有这个模拟开关,DTR RTS 可能进入 ISP 状态,复位,进入 ISP 状态,复位,进入……一直运行不起来了。模拟开关右侧电容使得 VCC 需要花一点时间充电给 EN,而不是立刻激活 EN(EN 1.8V 左右)。这时候 DTR RTS 已经稳定了,可以导通 U18 12 引脚来给 NRST 复位了。
不过 FlyMcu 实际配置方式是反过来的,因为他的协议是 232(+3~+15 是 0,-3~-15 是 1),和 TTL(3.3v 是1,0v 是0)正相反。
但是实际操作的时候可能遇到一种状况:部分开发板无法使用 FlyMcu 写入。我就碰到了。解决办法是使用 stm32 cube programmer 烧录程序。
配置如下:开发板上 boot 连接 3v3,RTS DTR=0,选中 read unprotect,建立连接后再烧录程序。
但是不知道是波特率或者校验位的问题,我每次能成功烧录进去,然后过一会就显示断开找不到设备了。可能是因为波特率没有76800的选项。
STM32 介绍
正点原子网课:单片机和电脑的类比:内存是 SRAM,硬盘是 FLASH,主板是外设。
st:意法半导体公司,SoC 厂商。
m:微控制器。微控制器和微处理器相比性能比较拉一点,主频低,微处理器能跑一些大 os(linux)。
32:32位微控制器。
正点原子网课:8051,X86 属于 CISC;ARM, MIPS, RISC-V 属于 RISC.
冯诺依曼和哈佛结构的主要区别:程序存储器和数据存储器是否分开存储。不分开是冯诺依曼,分开是哈佛。哈佛执行效率更高,冯诺伊曼资源占据更少。
CORTEX-M 系列介绍
ARM 公司(做精简指令集计算机的)只设计内核架构和授权知识产权,不参与设计芯片,给其他合作公司授权设计芯片。半导体厂商再根据架构完善周边电路并制作芯片。现在95%手机、平板都是 ARM 架构的, ARM 公司是真的牛。其优点在于低功耗低成本高性能,且支持16/32位双指令集。
ARM 有9个版本,从 v6 开始出现 cortex 的命名。
随着需求不断发展,stm32 在一众 8/16位 MCU 中脱颖而出。
stm32 自带许多通信接口,如 spi i2c uart 等;扫地机,无人机,手环等都可以是 stm32 的作品。
如何选型?以下是几大类 stm32 的特点。
本课程学习使用的开发板命名方式:
选型:满足项目需求的前提下,尽可能选便宜的,比如主频低,功耗低,引脚少,flash 少。
引脚分配:
看手册的重点:
外设资源,芯片功能,引脚,引脚大致分类,内存,封装……
哎想起前两天面试被问,如果选型 MCU 我应该看哪些因素。我只想到了外设和内存hhh。属于是只会写代码的笨比了。这也是我开始重新看野火课程的原因之一。