【STM32】简介

  •  🚩 WRITE IN FRONT 🚩   

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量6w+、全网访问量100w+ 🏅
  • 🆔 文章内容由 謓泽 原创 如需相关转载请提前告知博主
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:STM32-单片机謓泽的博客 📃
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

💕目录

‼suggest -建议

⒈STM32 - 简介

⒉ARM - 介绍

₂.₁ 内核

₂.₂拓展知识点

⒊STM32F103C8T6 

₃.₁片上资源&外设

₃.₂系统结构

₃.₃命名规则

⒋引脚定义

⒌STM32启动配置

⒍最小系统电路          

‼suggest -建议

🥂博主对于学习STM32的建议如下⇲

⒈博主建议在学STM32之前可以做几个五一的项目并且是要做成功的实物或仿真像博主就做过(智能小车之类的蓝牙控制小车、红外避障、超声波舵机实现避障、学习机等之类的),五一的项目还是很多的,如果不确定的话可以去网上看看,说不定就看到有自己想做的东西了。

【单片机课设/毕设】51单片机智能小车(寻迹、避障、蓝牙)详细教程(基础版)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV16S4y1C7ad/?spm_id_from=333.337.search-card.all.click&vd_source=37ee726c3aaae0e3f283d28b6fb39ed7只需22个例程 搞定初学入门 项目开发 学电51单片机视频教程 纯手敲教学_哔哩哔哩_bilibili只需22个例程 搞定初学入门 项目开发 学电51单片机视频教程 纯手敲教学共计55条视频,包括:第01集-入门-学习机介绍、第02集-入门-安装开发环境、第03集-入门-如何新建工程等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1QU4y1t7JA/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click

⒉学习下STC8或STC15系列的单片机多接触几款学习一下(虽说它也是五一的)但是从功能方面来说它们还是有着很大的差别的,自己可以翻阅相关数据手册看看就知道了,还有包括STC官方出的一些屠龙刀开发板之类都可以接触下。

STC: 32位 8051 单片机创新者, ISP/IAP 技术创新者,中华有为:除了胜利,我们已无路可走 (stcmcudata.com)

⒊C语言一定要过关,尤其是C语言的一些高阶知识点,STM32的C语言编程和STC89C52C语言编程不是一个level[水平]的。你去看STM32提供给的库函数就知道,如果你想去理解它给你的这个函数是怎么去实现的。去学习它们给的库函数是怎么去实现的我认为还是有必要的,这样可以加深你对于代码的理解。

鹏哥C语言的个人空间_哔哩哔哩_bilibili


⒋可以学习下数据结构这个其实对于你搞嵌入式的都是要接触的一些算法,当然如果学过|有这基础就更好了。

数据结构与算法2022版零基础教程数据结构和算法_哔哩哔哩_bilibili

⒌我不是非常赞同直接跳过五一学习STM32的这种。因为基础还是要用的,等到你C51学习的差不多了,你学STM32就会轻松许多的。

51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili

【普中官方】51单片机手把手教学视频(上)_哔哩哔哩_bilibili

【普中官方】51单片机手把手教学视频(下)_哔哩哔哩_bilibili

        说明⇢以上学习STM32的建议仅为博主的个人建议,如有说的不好或者你觉得不好的地方。那不好意思,你可以不采取博主的建议

📅目录  

⒈STM32 - 简介

⒉ARM - 介绍

₂.₁ 内核

₂.₂拓展知识点

⒊STM32F103C8T6 

₃.₁片上资源&外设

₃.₂系统结构

₃.₃命名规则

⒋引脚定义

⒌STM32启动配置

⒍最小系统电路         

⒈STM32 - 简介

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。

  • STM32也是一款单片机,32的意思表示这是一款32位的单片机相比与51单片机的8位来说的话。STM32的性能可以说是非常的强悍了👍
  • ARM Cortex-M 是STM32的核心部分是ARM公司设计的。

STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。

STM32功能强大、性能优异、片上的资源丰富、功耗低,是一款经典的嵌入式微控制器。

上述图中分别对应四种系列如下👇
1.高性能系列
2.主流系列
3.超低功耗系列
4.无线系列

⒉ARM - 介绍

STM32的单片机使用的是ARM Cortex-M的内核

ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。

  • 知识产权提供商的意思就是,这个ARM公司只是设计ARM内核而不生产实物的。实际的内核是各大半导体产商连同芯片一起制作出来的。ARM可以授权给各大厂商他的设计,然后对其进行授权费用作为盈利方式。

ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片。

如上图所示当中M系列主要用于单片机的领域,像STM32使用的就是M系列的内核

在这里我大致介绍下"内核"这一词在单片机当中是什么意思?

₂.₁ 内核

单片机内核的作用可以简单的理解成为用于执行存储器中程序员写的代码。它可以按照代码中的每条指令的要求进行处理。

₂.₂拓展知识点

⒈程序存储器ROM的功能⇢ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变,就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理。
⒉程序存储器RAM的功能⇢RAM就是在程序运行中,数据会随时改变的,就像我们的黑板,写上了可以擦,擦完再写上去,相当于程序运行的时候,调用ROM里面的数据进行各种运算。

⒊STM32F103C8T6 

系列:主流系列STM32F1内核:ARM Cortex-M3主频:72MHzRAM:20K(SRAM)
注:实际的存储介质是SRAMROM:64K(Flash)
注:实际的存储介质是Flash闪存供电:2.0~3.6V(标准3.3V)
注:五一是5V供电,还有USB输出的电压也是5V.
如果是5V电压,那么还需要加上一个稳压芯片把电压降到3.3V.封装:LQFP48

₃.₁片上资源&外设

这个片上资源又被称之为是外设(peripheral)

上述图中非常重要,务必了解清楚一下。学习STM32F1系列就是和这些外设打交道的。

🍎注→C8T6是没有上述途中后面的四个外设的以及在上述图当中前面两个深颜色的是位于Cortex-M3内核里面的外设,剩下的都是内核外的外设。

.₂系统结构

这个芯片的结构还是比较复杂的初学的话大致了解一下即可✔

₃.₃命名规则

⒋引脚定义

        引脚定义是非常重要的,以后再学习STM32的时候我们会经常和这些引脚定义打交道。

        说明⇢在上述图中有一个小黑点代表着一号引脚,然后逆时针依次排列直到48号引脚为止。

        拓展⇢SWDIO和SWCLK是用于调试和编程嵌入式系统的串行线接口。SWDIO是串行线数据输入/输出线,而SWCLK是串行线时钟线。它们通常与SWD(Serial Wire Debug)协议一起使用,用于与微控制器或其他嵌入式设备进行通信和调试。 

引脚颜色标记

  1. 橙色代表的是电源相关的引脚。
  2. 蓝色代表的是最小系统相关的引脚。
  3. 绿色的是IO口、功能口这些引脚。

类型

  • S --> 电源
  • I --> 输入
  • O --> 输出
  • IO --> 输入输出

IO口电平

  • FT的代表能容纳5V的电压。
  • 没有FT的代表只能容纳3.3V电压。

⒌STM32启动配置

说明⇢启动配置的作用就是指定程序开始运行的位置,但是在某些情况下,我们也可以让程序在别的地方开始执行。一般情况下,程序都是在Flash程序存储器下开始执行的。

可以通过配置BOOT0和BOOT1的引脚,来选择三种不同的启动模式。

        第一种模式当BOOT0引脚为0的话也就是接地的意思。这个时候无论BOOT1接什么,启动模式都是主闪存存储器模式。也就是说是正常执行Flash闪存里面的程序。这个模式是最常用的模式,一般情况下都会是这个模式。

📃注→接到1的话就是接到3.3V正电源的意思。

        第二种模式一般我们需要串口下载程序的时候会配置到这个模式上的,在配置程序的时候我们应该小心点不能让全部配置下载的IO口都变成了普通IO口,如果全部都是普通IO口的话这样就会下载不进去程序了。

        第三种模式配置的是内置SRAM启动,这个模式主要是用来进行程序调试的。     

⒍最小系统电路          

STM32的主晶振一般都是8MHZ然后经过内部锁相环倍频得到72MHZ的主频。

如果需要RTC(实时时钟)的功能的话,电路还需要接到32.768MHZ的晶振和上述图一样接法。连接到3、4号引脚,OSC32就是32.768MHZ。

        说明⇢说明在上述图片的稳压芯片可能是AMS1117(lm1117) XC6204、XC6206等。 这些都是常用的稳压芯片。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频 vs2017配置FFmpeg

vs2017 ffmpeg4.2.1 一、首先我把FFmpeg整理了一下&#xff0c;放在C盘 二、新建空项目 三、添加main.cpp&#xff0c;将bin文件夹下dll文件拷贝到cpp目录下 #include<stdio.h> #include<iostream>extern "C" { #include "libavcodec/avcodec.h&…

类与对象(加深)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 6.const成员 7.取地址及const取地址操作符重载 1.类的6个默认成员函数 如果…

Linux常见面试题,应对面试分享

操作系统基础 1.cpu占⽤率太⾼了怎么办? 排查思路是什么&#xff0c;怎么定位这个问题&#xff0c;处理流程 其他程序: 1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程 2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程 3.询问开发或者⽼⼤,是什么业务在使⽤这个进程…

【Windows API】获取卷标、卷名

1、卷->卷标 使用FindFirstVolume()和FindNextVolume()函数体系&#xff0c;枚举系统所有卷&#xff08;Volume&#xff09;的例子&#xff0c;然后获取卷标、卷类型。这个方式可以枚举出没有驱动器号&#xff08;卷标&#xff09;的卷。 int TestMode1() {HANDLE hVolume…

科技云报道:一波未平一波又起?AI大模型再出邪恶攻击工具

AI大模型的快速向前奔跑&#xff0c;让我们见识到了AI的无限可能&#xff0c;但也展示了AI在虚假信息、深度伪造和网络攻击方面的潜在威胁。 据安全分析平台Netenrich报道&#xff0c;近日&#xff0c;一款名为FraudGPT的AI工具近期在暗网上流通&#xff0c;并被犯罪分子用于编…

毅哥铡特:修改后的Bellmanford最短路径路由动画演示

修改背景&#xff1a;毅哥铡特自带的《routing_bellmanford.cpp》&#xff0c;按路由跳数进行更新路由表&#xff0c;但是&#xff0c;卫星互联网的卫星路由器节点&#xff0c;可能需要考虑传播传输时延&#xff0c;对应的&#xff0c;可能需要按照两个网络节点的距离来更新路由…

Node.js |(四)HTTP协议 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;HTTP概念&#x1f4da;窥探HTTP报文&#x1f4da;请求报文的组成&#x1f407;HTTP请求行&#x1f407;HTTP请求头&#x1f407;HTTP的请求体 &#x1f4da;响应报文…

Linux信号介绍

一、信号处理函数的注册 signal()使用&#xff1a; 1 #include<stdio.h>2 #include <signal.h>3 4 void handler(int signum)5 {6 switch(signum){7 case 2:8 printf("signum %d\n",signum);9 …

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程&#xff0c;Ubuntu采用22.04 安装multipass后&#xff0c;在卓面右下角Open shell 就可以链接默认实例Primary&#xff0c;当然如果你有多个虚拟机&#xff0c;可以针对不同内容单独建立终端的链接&#xff0c;而本文仅仅用Primary来说明。 …

GO学习之 微框架(Gin)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

《大型网站技术架构》第二篇 架构-高可用

高可用在公司中的重要性 对公司而言&#xff0c;可用性关系网站的生死存亡。对个人而言&#xff0c;可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构&#xff0c;对性能、扩展性、伸缩性做了很多改善&#xff0c;但别人未必能直观地感受到&#…

【三维编辑】Seal-3D:基于NeRF的交互式像素级编辑

文章目录 摘要一、引言二、方法2.1.基于nerf的编辑问题概述2.2.编辑指导生成2.3.即时预览的两阶段学生训练 三、实验四、代码总结 项目主页: https://windingwind.github.io/seal-3d/ 代码&#xff1a;https://github.com/windingwind/seal-3d/ 论文: https://arxiv.org/pdf/23…

JavaWeb-Servlet服务连接器(一)

目录 1.Servlet生命周期 2.Servlet的配置 3.Servlet的常用方法 4.Servlet体系结构 5.HTTP请求报文 6.HTTP响应报文 1.Servlet生命周期 Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称。其主要的功能是交互式地浏览和修改数据&#xff0c;生成一些动态…

Springboot04--vue前端部分+element-ui

注意点&#xff1a; 这边v-model和value的区别&#xff1a;v-model是双向绑定的&#xff0c;value是单向绑定 li的key的问题 vue的组件化开发&#xff1a; 1. NPM&#xff08;类似maven&#xff0c;是管理前段代码的工具&#xff09; 安装完之后可以在cmd里面使用以下指令 2.…

初出茅庐的小李博客之认识编码器

编码器是什么&#xff1a; 一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器&#xff0c;我们可以通过编码器测量到底位移或者速度信息。编码器通常由一个旋转部分和一个固定部分组成&#xff0c;旋转部分随着被测量的物体进行旋转&#xff0c;固定部分则保持不动…

vue2 封装 webSocket 开箱即用

第一步&#xff1a; 下载 webSocket npm install vue-native-websocket --save 第二步&#xff1a; 需要在 main.js 中 引入 import websocket from vue-native-websocket; Vue.use(websocket, , {connectManually: true, // 手动连接format: json, // json格式reconnection:…

【Ubuntu】简化反向代理和个性化标签页体验

本文将介绍如何使用Docker部署Nginx Proxy Manager和OneNav&#xff0c;两个功能强大且易用的工具。Nginx Proxy Manager用于简化和管理Nginx反向代理服务器的配置&#xff0c;而OneNav则提供个性化的新标签页体验和导航功能。通过本文的指导&#xff0c;您将学习如何安装和配置…

JavaScript类

JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类&#xff0c;类体在一对大括号 {} 中&#xff0c;我们可以在大括号 {} 中定义类成员的位置&#xff0c;如方法或构造函数。 每个类中包含了一个特殊的方法 constructor()&#xff0c;它是类…

【yolov系列:小白yolov7跑数据集建立环境】

首先在github上面获取别人的源码 这个是github的源码包&#xff0c;直接下载解压使用 打开解压后的文件夹应该可以看到这个页面。 进入文件夹的requirements.txt的页面 这篇文章是为了记录自己的环境配置过程&#xff0c;当作笔记使用来看&#xff0c;目前网上各种安装教程都…

深入浅出:MyBatis的使用方法及最佳实践

这里写目录标题 添加MyBatis框架⽀持配置连接字符串和MyBatis配置连接字符串配置 MyBatis 中的 XML 路径 添加业务代码创建数据库和表添加用户实体类添加 mapper 接⼝添加 UserMapper.xml添加 Service层添加 Controller层 增删改操作增加操作删除操作修改操作 添加MyBatis框架⽀…