当前位置: 首页 > news >正文

野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍

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 要手动改跳线帽)。

一键下载电路的具体原理流程如下:

  1. RTS 低电平,Q1 是一个 PNP 三极管,导通,BOOT0 拉高。
  2. DTS 高电平,Q2 NPN 导通,U18 是一个由 EN 控制开关的模拟开关,2 脚被导通为低电平,连接1脚拉低 NRST 复位。程序下载执行。
  3. U18 模拟开关的作用是稳定电路。开发板复位的时候 DTR RTS 是不稳定的状态,如果没有这个模拟开关,DTR RTS 可能进入 ISP 状态,复位,进入 ISP 状态,复位,进入……一直运行不起来了。模拟开关右侧电容使得 VCC 需要花一点时间充电给 EN,而不是立刻激活 EN(EN 1.8V 左右)。这时候 DTR RTS 已经稳定了,可以导通 U18 12 引脚来给 NRST 复位了。

1698858387784

不过 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.

image-20230401221223643

冯诺依曼和哈佛结构的主要区别:程序存储器和数据存储器是否分开存储。不分开是冯诺依曼,分开是哈佛。哈佛执行效率更高,冯诺伊曼资源占据更少。

CORTEX-M 系列介绍
ARM 公司(做精简指令集计算机的)只设计内核架构和授权知识产权,不参与设计芯片,给其他合作公司授权设计芯片。半导体厂商再根据架构完善周边电路并制作芯片。现在95%手机、平板都是 ARM 架构的, ARM 公司是真的牛。

image-20230401221658811

其优点在于低功耗低成本高性能,且支持16/32位双指令集。

ARM 有9个版本,从 v6 开始出现 cortex 的命名。

image-20230401221918218

随着需求不断发展,stm32 在一众 8/16位 MCU 中脱颖而出。

stm32 自带许多通信接口,如 spi i2c uart 等;扫地机,无人机,手环等都可以是 stm32 的作品。

如何选型?以下是几大类 stm32 的特点。

image-20231102013709264

本课程学习使用的开发板命名方式:

image-20231102013830412

选型:满足项目需求的前提下,尽可能选便宜的,比如主频低,功耗低,引脚少,flash 少。

引脚分配:

1698860405030

看手册的重点:

1698860693691

外设资源,芯片功能,引脚,引脚大致分类,内存,封装……

哎想起前两天面试被问,如果选型 MCU 我应该看哪些因素。我只想到了外设和内存hhh。属于是只会写代码的笨比了。这也是我开始重新看野火课程的原因之一。

相关文章:

野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍

STM32入门——基于野火 F407 霸天虎课程学习 前言 博主开始探索嵌入式以来,其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪,不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科…...

@reduxjs/toolkit配置react-redux解决createStore或将在未来被淘汰警告

通常 我们用redux都需要通过 createStore 但目前 你去用它 基本都会被划线 甚至有点厉害的的编辑器 他会直接告诉你这个东西基本快被弃用了 这个应该大家都知道 最好不要用已经被明确未来或弃用的语法 因为一旦弃用这个系统就需要维护 而且说 一般会被淘汰的语法 本身也就是有…...

致敬1024天前的自己

今早打开手机就收到了来自CSDN的消息,哦,距离我发表第一篇技术博客已经过去1024个日夜了。 我第一次发技术博客是我大二做完我第一个网站时写的。因为网站需要上线服务器,涉及到不少linux相关的知识,我在自学的过程中走了不少弯路…...

〖Python网络爬虫实战㊱〗- JavaScript 网站加密和混淆

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度…...

基于单片机设计的电子柜锁

一、前言 随着现代社会的不断发展,电子柜锁的应用越来越广泛。传统的机械柜锁存在一些不便之处,例如钥匙容易丢失、密码容易泄露等问题。设计一款基于单片机的电子柜锁系统成为了一个有趣而有意义的项目。 该电子柜锁系统通过电磁锁作为柜锁的开关&…...

Windows安装tensorflow-gpu=1.14.0CUDA=10.0cuDNN=7.4 (多版本CUDA共存)

文章目录 0. 前置说明1. 查看版本对应关系2. 安装 cuda3. 安装 cudnn4. 添加环境变量5. 安装 tensorflow 0. 前置说明 本机(Windows 11)已安装CUDA 11.7 使用命令查看显卡驱动: nvidia-smi这里显示的CUDA Version: 11.7说明支持安装11.7版本…...

CodeWhisperer 初体验

文章作者:1颗 orange 最近用了一个叫 CodeWhisperer 的插件,这个软件对于来说开发人员,插件有好多实用的功能,编码更高效,代码质量也提升了很多。 CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于机器学习…...

HNU-算法设计与分析-讨论课1

第一次小班讨论 (以组为单位,每组一题,每组人人参与、合理分工,ppt中标记分工,尽量都有代码演示) 1.算法分析题 2-10、2-15(要求:有ppt(可代码演示)) 2.算法实现题 2-4、…...

java连接zookeeper

API ZooKeeper官方提供了Java API,可以通过Java代码来连接zookeeper服务进行操作。可以连接、创建节点、获取节点数据、监听节点变化等操作,具体有以下几个重要的类: ZooKeeper:ZooKeeper类是Java API的核心类,用于与…...

2023-11-01 node.js-electron-环境配置-记录

摘要: 2023-11-01 node.js-electron-环境配置-记录 相关文档: Node.js Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron node.js的国内源 - Python技术站 node.js 下载地址: https://nodejs.org/dist/v20.9.0/ 说明: 最好使用最新版本当前我使…...

使用 ElementUI 组件构建 Window 桌面应用探索与实践(WinForm)

零、实现原理与应用案例设计 1、原理 基础实例 Demo 可以参照以下这篇博文, 基于.Net CEF 实现 Vue 等前端技术栈构建 Windows 窗体应用-CSDN博客文章浏览阅读291次。基于 .Net CEF 库,能够使用 Vue 等前端技术栈构建 Windows 窗体应用https://blog.c…...

使用C++构建安全队列

1 背景 STL的容器不是线程安全的,我们经常会有需求要求数据结构线程安全,比如写生产者消费者模型的时候,就要求队列线程安全。利用std::queue和C线程标准库的一些组件(mutex,condition_variable)&#xff…...

EasyFlash移植使用- 关于单片机 BootLoader和APP均使用的情况

目前,我的STM32单片机,需要在BootLoader和APP均移植使用EasyFlash,用于参数管理和IAP升级使用。 但是由于Flash和RAM限制,减少Flash占用,我规划如下: BootLoader中移植EasyFlash使用旧版本,因为…...

python捕获异常和scapy模块的利用

Python捕获异常 ​ 当程序运行时,因为遇到未知的错误而导致中止运行,便会出现Traceback 消息,打印异常。异常即是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python 无法正…...

CSS+Javascript+Html日历控件

最近&#xff0c;因需要用HTMLJAVASCRIPTCSS实现了一个日历控件&#xff0c;效果如下&#xff1a; 单击上月、下月进行日历切换。当前日期在日历中变颜色标注显示。还是老老套路、老方法&#xff0c;分HMLCSSJAVASCRIPT三部分代码。 一、html代码 <h1>学习计划</h1…...

让企业的数据用起来,数据中台=数据治理?

加gzh“大数据食铁兽”&#xff0c;了解更多数据治理信息。 先说结论&#xff1a;数据中台是数据管理/治理的工具之一&#xff0c;数据治理是3分技术7分管理及运营。 数据中台的定义&#xff1a; 狭义的数据中台指在企业内部通过对数据半成品、算法、模型、工具等能力的积累&a…...

【人工智能Ⅰ】5-粒子群算法

【人工智能Ⅰ】5-粒子群算法 文章目录 【人工智能Ⅰ】5-粒子群算法5.1 粒子群算法PSO基本思想5.2 PSO介绍5.3 PSO求最优解5.4 算法流程5.5 PSO构成要素群体大小m权重因子最大速度Vm停止准则粒子空间的初始化领域的拓扑结构 5.6 PSO应用5.7 PSO改进动态调整惯性权重收缩因子法 5…...

软考高项-49个项目管理过程输入、输出和工具技术表

知识领域数量五大过程组启动规划执行监控收尾整体7制订项目章程制订项目管理计划指导与管理项目工作 管理项目知识 监控项目工作 实施整体变更控制 结束项目或阶段范围6规划范围管理 收集需求 定义范围 创建WBS 确认范围 控制范围 进度6规划进度管理 定义活动...

《C和指针》(7)函数

问题 具有空函数体的函数可以作为存根使用。你如何对这类函数进行修改&#xff0c;使其更加有用&#xff1f; 答&#xff1a;当存根函数被调用时&#xff0c;打印一条消息&#xff0c;显示它已被调用&#xff0c;或者也可以打印作为参数传递给它的值。 .如果在一个函数的声明中…...

vue3中的Props

Props声明 一个组件需要显示声明它所接受的props&#xff0c;这样vue才能知道外部传入的哪些是props&#xff0c;哪些是透传attribute 在使script setup的单文件中&#xff0c;props可以使用 defineProps()宏来声明&#xff1a; <script setup> const props definePro…...

2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]安全研究员 1. 自我介绍 2. SQL二次注入原理 3. 二次注入修复方案 4. SQL注入绕WAF&#xff…...

【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示

文章目录 前言1. Docker 是什么&#xff1f;2. 为什么要使用 Docker&#xff1f; 安装 Docker1. 安装 Docker Desktop2. 安装 OrbStack3. Docker Desktop VS OrbStack5. 验证安装 使用 Docker 运行项目1. 克隆项目到本地2. 进入项目目录3. 启动容器: 查看运行效果1. OrbStack 中…...

数据库管理与高可用-MySQL高可用

目录 #1.1什么是MySQL高可用 1.1.1MySQL主主复制keepalivedhaproxy的高可用 1.1.2优势 #2.1MySQL主主复制keepalivedhaproxy的实验案例 1.1什么是MySQL高可用 MySQL 高可用是指通过技术手段确保 MySQL 数据库在面临硬件故障、软件错误、网络中断、人为误操作等异常情况时&…...

stress-ng 服务器压力测试的工具学习

一、stress-ng (下一代压力测试) 介绍 项目地址&#xff1a;https://github.com/ColinIanKing/stress-ng stress-ng 将以多种可选方式对计算机系统进行压力测试。它旨在锻炼计算机的各种物理子系统以及各种操作系统内核接口。stress-ng 的特点&#xff1a; 360 压力测试100 …...

当前市场环境下,软件行业的突围之道:技术演进与商业模式重构

一、行业背景&#xff1a;软件行业进入结构性调整期 2024年至今&#xff0c;软件行业面临三重挑战&#xff1a; 宏观经济承压&#xff1a;全球经济放缓&#xff0c;企业IT预算趋于谨慎&#xff1b; 资本市场收缩&#xff1a;融资环境收紧&#xff0c;盈利能力成为生死线&…...

算法-构造题

#include<iostream> #include<bits/stdc.h> using namespace std; typedef long long ll; const ll N 5e5 10; int main() {ll n, k;cin >> n >> k; ll a[N] {0}; // 初始化一个大小为N的数组a&#xff0c;用于存储排列// 构造满足条件的排列for (l…...

leetcode_66.加一

题目链接 这道题归类在力扣的数学类中&#xff0c;应该算是一道思维的简单题吧 题是这样的&#xff0c;根据题目我们不难理解&#xff0c;这个题就是在最后一位加 1 然后返回&#xff0c;正如示例所说的那样&#xff0c;当然这很符合我们人的思维&#xff0c;写这种算法题最重要…...

三级流水线是什么?

三级流水线是什么&#xff1f; “三级流水线” 英文名&#xff1a;Three-Stage Pipeline 或 Basic 3-Stage Pipeline&#xff0c;是计算机处理器&#xff08;CPU&#xff09;设计中一种基本的指令流水线技术&#xff0c;它将指令的执行过程划分为三个主要阶段&#xff0c;使得…...

Python爬虫实战:研究demiurge框架相关技术

1. 引言 在当今数字化时代,互联网上蕴含着海量的有价值信息。爬虫技术作为获取这些信息的重要手段,被广泛应用于学术研究、商业分析、舆情监测等多个领域。然而,构建一个高效、稳定且可维护的爬虫系统面临诸多挑战,如网页结构复杂多变、反爬机制日益严格、数据处理流程繁琐…...

老年生活照护实训室建设规划:照护质量评估与持续改进实训体系

随着人口老龄化程度的不断加深&#xff0c;老年生活照护需求日益增长&#xff0c;对专业照护人才的培养提出了更高要求。老年生活照护实训室建设方案作为培养高素质照护人才的重要载体&#xff0c;其核心在于构建科学完善的照护质量评估与持续改进实训体系。通过该体系的建设&a…...