STM32 10个工程篇:1.IAP远程升级(三)

news2025/1/11 21:51:56

       本想着周六去更新IAP远程升级(三),但是周三单位突然通知团建周六去爬水长城,晚上回来已经精疲力竭,打开电脑不由地点开网易云音乐听着听着感觉很乏,去床上躺了会可一觉醒来已经夜里三点,于是调整一下周日晚上开始撰写这篇博客,言简意赅不想赘述过多,不论写什么样的技术博客笔者还是追求能用最通俗易懂的话把复杂绕脑的概念和逻辑整理清楚还原给读者。

       IAP远程升级的前两篇博客详细介绍了IAP升级的背景知识和工作原理,那么这篇博客直接开门见山即如何去实现IAP升级了,在这篇博客笔者会带大家一步步地用ST推出的STM32CubeMX,通过图形化界面的方式配置下豌豆开发板的stm32f103rct6初始化设置,在这里我们只用到了单片机的一个串口,采用了DMA+空闲中断的方式接收来自PC端上位机发送的报文。

      如图1所示是stm32f103rct6的内部时钟树设置猛地看上去确实非常复杂,其实本质就是把外部的8Mhz时钟通过内部PLL锁相环倍频为72Mhz的系统时钟,当然这里存在一些概念如HSE(高速外部时钟)来源为外部晶振速度8MhzPLLCLK(锁相环时钟)来源为HSIHSE经过倍频所得HCLKAHB高速总线时钟):来源由系统时钟分频得到,速度最高为72MCFGR中的HPRE控制;PCLK1APB1低总线时钟):来源为HCLK分频得到,速度最高为36M APB1总线上的外设提供时钟由RCC_CFGR时钟配置寄存器的PPRE1位控制;PCLK2APB2高总线时钟):来源为HCLK分频得到,速度最高为72M,为APB2总线上的外设提供时钟由RCC_CFGR时钟配置寄存器的PPRE2位控制。

1 stm32f103rct6的内部时钟树

      如图2所示是豌豆开发板stm32f103rct6的硬件原理图,如图3所示是STM32CubeMX下配置stm32f103rct6的晶振时钟和UART1引脚,这里我们做好硬件上的引脚匹配即可,当然STM32CubeMX也非常人性化地给出了选择,用户在图形化界面配置时也能看到每个引脚所支持的不同定义。

2 豌豆开发板stm32f103rct6的晶振时钟和串口1电路图

3 STM32CubeMX配置stm32f103rct6的晶振时钟和UART1引脚

       如图4所示我们在STM32CubeMX下配置stm32f103rct6的调试方式是JTAG(5 pins),需要注意的是这里需要勾选否则生成的代码不支持JLINK或者STLINK下载器在线仿真调试。

4 STM32CubeMX配置stm32f103rct6的调试方式

        如图5所示STM32CubeMX下对UART1的系统配置,这里主要配置了三个关键点即:1. 串口波特率和位宽大小;2. 串口DMA通道;3. 串口的引脚定义。

5 STM32CubeMX配置stm32f103rct6UART1

      如图6所示是STM32CubeMX配置stm32f103rct6的初始化工程HAL库版本,在这里我们选择MDK-ARM V5版本即KEIL所支持的版本,选择最新的HAL库版本,直接单击GENERATE CODE即可生成初始化代码,如图7所示是STM32CubeMX下生成的stm32f103rct6初始化工程。

6 STM32CubeMX配置stm32f103rct6的初始化工程HAL库版本

7 STM32CubeMX下生成的stm32f103rct6初始化工程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能】— 贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

【人工智能】— 贝叶斯网络 频率学派 vs. 贝叶斯学派贝叶斯学派Probability(概率):独立性/条件独立性:Probability Theory(概率论):Graphical models (概率图模型)什么是图模型(Grap…

深度学习之图像分类识别(一):AlexNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

基于matlab使用麦克风阵列进行声波束成形

一、前言 此示例说明了麦克风阵列波束成形,以便在干扰为主的嘈杂环境中提取所需的语音信号。此类操作可用于增强语音信号质量以进行感知或进一步处理。例如,嘈杂的环境可以是交易室,麦克风阵列可以安装在交易计算机的显示器上。如果交易计算机…

js绘制的红心

看腻歪了粒子特效的红心&#xff0c;今天给各位整个线条的&#xff0c;效果图如下&#xff1a; 表白显圣神器&#xff0c;你值得拥有&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…

必定收藏:国内免费可用 ChatGPT 网页版

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术&#xff0c;包括深度学习和神经网络&#xff0c;以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题&#xff0c;包括但不限于常见问…

Cesium入门之七:Cesium加载地形数据

Cesium加载地形数据 一、什么是地形数据二、TerrainProvider类常用属性常用方法 三、TerrainProvider子类CesiumTerrainProvider类常用属性常用方法 CustomHeightmapTerrainProvider类ArcGISTiledElevationTerrainProvider类常用属性常用方法 EllipsoidTerrainProvider类常用属…

bash shell脚本常用代码记录

任何编程语言&#xff0c;常用的语法和代码结构其实不多的&#xff0c;如果为了快速的掌握入手一门编程语言&#xff0c;我认为只需要把该语言的常见语法和代码记下来&#xff0c;再结合实际需求去拼接成新的代码。这篇博客主要是记录bash shell的一些用法&#xff0c;便于日后…

机器学习指标: F1分数

动动发财的小手&#xff0c;点个赞吧&#xff01; F1 score 简介 在本文[1]中&#xff0c;您将了解 F1 分数。 F1 分数是一种机器学习指标&#xff0c;可用于分类模型。尽管分类模型存在许多指标&#xff0c;但通过本文&#xff0c;您将了解 F1 分数的计算方式以及何时使用它有…

腾讯云语音合成

用腾讯云 AI 语音合成打造有声书制作工具 代码开发 第一步&#xff1a;电子书文件解析 第二步&#xff1a;有声语音合成 第三步&#xff1a;完成有声书制作脚本 第四步&#xff1a;脚本可视化 产品体验 腾讯云 AI 语音合成服务已经非常成熟&#xff0c;基于开源工具整合 TTS P…

JAVA135-185

JAVA135-185 多线程多线程成员方法线程优先级eg&#xff0c;卖票&#xff08;线程的安全问题&#xff09;需要解决线程同时抢的问题 同步方法LOCK锁等待唤醒机制阻塞队列实现等待唤醒机制多线程的六种状态红包抽奖箱抽奖比较 线程池最大并行数网络编程InetAdress端口号协议练习…

Mutipart

含义&#xff1a; 多部分的、复合 场景&#xff1a; 位置&#xff1a;package org.springframework.boot.autoconfigure.web.servlet; Springboot中autoconfigration包下web包下servlet下DispatcherServletAutoConfiguration中&#xff1a; 有一个默认加载的Bean Bean …

stm32通用外部spi下载算法实现

参考硬汉嵌入式&#xff1a;【实战技能】任何支持SWD接口的单片机都可以方便移植的SPI Flash烧写算法制作_哔哩哔哩_bilibili 该up主提供的stm32H7的模板工程&#xff0c;目前需求是实现基于正点原子探索者stm32f407zet6W25Q128 下载算法实现步骤 使用cubemx建立一个LED工程…

postgresql walsender源码分析

专栏内容&#xff1a;postgresql内核源码分析个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e; 目录 前言 介绍 数据结构 WAL对端的状态 walsender进程 WALsender交互流程 在…

【连续介质力学】张量分量的变换定律

张量分量的变换定律 张量的分量是依赖于坐标系的&#xff0c;所以当坐标系发生旋转&#xff0c;张量分量也会发生改变&#xff0c;张量分量与坐标系通过分量变换规律互相关联起来的。 考虑在正交基 ( e ^ 1 , e ^ 2 , e ^ 3 ) (\hat e_1, \hat e_2, \hat e_3) (e^1​,e^2​,…

【51单片机】串口通信使用串口通信控制LED灯

&#x1f38a;专栏【51单片机】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【51单片机】 &#x1f970;大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f354;串口通信 &#x1f60e;代码…

HTTP1.1(四)URI

一 URI的基本格式以及与URL的区别 ① URI直观感受 1&#xff09;URI是HTTP协议的重要组成部分2&#xff09;ABNF如何严格定义URI ② URL、URN、URI ③ URI细讲 ④ URI的组成 ⑤ ABNF关于URI定义 blob:http 地址的原理及生成方法 video 标签 src 带有blob:http data…

NetCore发布到Docker-单机

一.git安装 1.下载 https://github.com/git/git/releases/tag/v2.40.1 2.将本地的安装包上传到 linux 服务器上&#xff0c;我这里放在 /opt/git/ 目录下 3.解压压缩包&#xff0c;得到目录 git-2.40.1&#xff0c;位置在 /opt/git/git-2.40.1 tar -zxvf git-2.40.1.tar.gz 4.…

【刷题之路】LeetCode 225. 用队列实现栈

【刷题之路】LeetCode 225. 用队列实现栈 一、题目描述二、解题1、主要思路解析2、先实现栈3、实现各个接口3.1、初始化接口3.2、push接口3.3、pop接口3.4、myStackTop接口3.5、myStackEmpty接口3.6、myStackFree接口 一、题目描述 原题连接&#xff1a; 225. 用队列实现栈 题…

如何选择合适的自动化测试工具? 我教你

目录 前言 选择最佳自动化测试工具的重要性 自动化测试工具的种类 选择自动化测试工具时要考虑的因素 自动化测试工具的选择标准 前言 自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中&#xff0c;几乎任一软件开发过程都需要在开发阶段的某个…

测试工具-JIRA

软件测试工具—JIRA使用 1.创建 项目&#xff1a;一般为业务线名称 问题类型&#xff1a;任务、故事、缺陷等 概要&#xff1a;bug的简要描述&#xff0c;一般写出定位地方和目前现状 Sprint&#xff1a;一般为业务线迭代简称 测试阶段&#xff1a;按照各公司的测试流程对应标…