C/C++ stm32基础知识超详细讲解(系统性学习day14)

news2024/11/18 21:49:06

目录

前言

一、ARM和STM32是什么?

二、STM32的开发方式

三、GPIO----寄存器开发方式

1.八种输入输出模式分析

2.寄存器 

四、stm32芯片图片

五、怎么学好stm32 

总结


前言

stm32的广泛含义及背景:

STM32是一款由意法半导体(ST)公司开发的32位微控制器,其全称是意法半导体32位系列微控制器芯片。STM32是基于Cortex-M内核的32位单片机,分为多个系列以满足不同应用场景的需求。

STM32微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机,其诞生于20世纪70年代中期,经过多年的发展,其成本越来越低,性能越来越强大,应用已经无处不在,遍及各个领域。

STM32系列是ST公司专为要求高性能、低成本、低功耗的嵌入式应用设计的ARMCortex-M3内核的32位单片机。STM32有很多系列,从内核上分有Cortex-M0、M3、M4和M7等几种,每个内核又大概分为主流、高性能和低功耗等不同类型。其中STM32F系列有多个子系列,如STM32F103“增强型”系列、STM32F101“基本型”系列、STM32F105和STM32F107“互联型”系列等。


一、ARM和STM32是什么?

(1)什么ARM?
        1,ARM是一家公司名字------专门做IP核------依靠专利授权盈利
        2,ARM是一系列基于ARM内核设计的芯片的代称

(2)ARM内核的分类?
        ARM7,ARM9,ARM11
        Cortex-A      主要应用于计算量比较大,有交互性界面的领域  ------电视机,手机,平板,投影仪,车载中控
        Cortex-R      主要应用实时性要求比较高的领域-----航空航天,汽车刹车
        Cortex-M      主要用于微控制器(MCU)领域 

 (3)什么STM32?
        单片机
        它是ARM Cortex-M3的芯片
        我们学习的芯片全称:
            STM32F103RCT6
            STM32F407ZET6

          
(4)STM32F103RCT6的含义
        ST:意法半导体公司
        M:MCU
        32:32bit的CPU一次性处理数据的多少
        F103:编号
        R:引脚数量 pin  64pin
        C:flash的大小----256KB  注意:flash的大小和启动文件的选择有关系
        T:封装
        6:温度等级

二、STM32的开发方式

        常用的为以下四种开发方式:

      (1) 寄存器开发:寄存器----具有特殊功能的内存单元------寄存器开发是所有可编程逻辑芯 片所支持的一种开发方式
       (2)标准外设库开发:ST公司不再维护这种开发方式
       (3)Cube库开发:STM32CubeMX图形化界面的软件-----目前这种开发方式有两个缺点:   一,只支持ST公司的芯片,二代码冗余特别多
       (4)LL库开发:不成熟

开发方式大比拼:
开发方式开发难度可维护性代码可执行效率
寄存器开发最难最低 最高
标准外设库开发适中适中适中
Cube库开发最简单最高最低
LL库开发较难较低较高

芯片里面有什么?

(1)内核  ----CPU
(2)片上外设:外设位于芯片的内部,内核的外部
        (片外外设:外设位于芯片的外部)
        单片机的开发实质:和内核沟通,利用片上外设驱动片外外设
        
        补充:
            Cortex-M3的内核是哈弗架构:数据和指令是分开存储的
                             冯若依曼架构:数据和指令是不分开的

三、GPIO----寄存器开发方式

1.八种输入输出模式分析

         组件的作用:

         施密特触发器----纠正电平
        上拉电阻:一个电阻,一端接到电源正极,一端接到信号线,这个电阻称为这根信号线上的上拉电阻-----如果信号线没有其他输入,上拉电阻无压降
        下拉电阻:一个电阻,一端接到电源负,一端接到信号线,这个电阻称为这根信号线上的下拉电阻

        八种输入输出模式:
        (1)输入浮空:  没有上拉电阻,没有下拉电阻
                    输入0:  输入数据寄存器中的值为0
                    输入1:  输入数据寄存器中的值为1
                    没有输入时: 输入数据寄存器中的值为上一次状态或者是复位值
        (2)输入上拉:  有上拉电阻,没有下拉电阻
                    输入0:  输入数据寄存器中的值为0
                    输入1:  输入数据寄存器中的值为1
                    没有输入时: 输入数据寄存器中的值为1
        (3)输入下拉:  没有上拉电阻,有下拉电阻
                    输入0:  输入数据寄存器中的值为0
                    输入1:  输入数据寄存器中的值为1
                    没有输入时: 输入数据寄存器中的值为0    
       (4)模拟输入:(是专门为ADC这个片上外设准备的模式)    ,不经过施密特触发器,没有上拉电阻,也没有下拉电阻
                    电压从芯片的引脚进来后直接输入到ADC片上外设,由ADC片上外设处理
                    ADC的作用:用于读取电压值;当需要读不是0v或3.3v之外的电压值时使用
                    
        (5)推挽输出: 输出数据寄存器写0: 对应引脚输出低电平0V            
                   输出数据寄存器写1: 对应引脚输出高电平3.3V
                   
        (6)开漏输出:不能输出高电平
                   输出数据寄存器写0: 对应引脚输出低电平0V            
                   输出数据寄存器写1: 对应引脚输出高阻
                   
        复用:引脚受片上外设控制
        通用:引脚受CM3控制的输出数据寄存器控制
        
        (7)复用推挽输出: 片上外设的输出数据寄存器写0: 对应引脚输出低电平0V            
                       片上外设的输出数据寄存器写1: 对应引脚输出高电平3.3V
                   
        (8)复用开漏输出:不能输出高电平
                   片上外设的输出数据寄存器写0: 对应引脚输出低电平0V            
                   片上外设的输出数据寄存器写1: 对应引脚输出高阻    

2.寄存器 

(1)

       最大速度:电平翻转的速度
        f(频率)=1/T(周期)
        f(单位是HZ)
        T(单位是s)

(2)

       将寄存器reg的第n位清零:  reg  &=~(1<<n);
       将寄存器reg的第n位置1:   reg  |=(1<<n);    
        判断寄存器reg的第n位为0还是为1
        if(reg&(1<<n)){
            reg的第n位为1;
        }else{
            reg的第n位为0;
        }

(3)

        如果点亮红色的灯
        1,配置GPIOC的CRH寄存器的第3---0位配置成0010
        2,配置GPIOC的ODR寄存器的第8位配置成0

四、stm32芯片图片

五、怎么学好stm32 

学好STM32需要掌握以下基本技能和步骤:

  1. 熟练掌握C语言:STM32开发的核心语言是C语言,因此熟练掌握C语言是学好STM32开发的基础。
  2. 学习并掌握一种开发环境:常见的STM32开发环境有Keil、IAR等,选择适合自己的开发环境,并熟练掌握其使用方法。
  3. 学习并掌握一种调试工具:常用的调试工具包括JTAG、SWD等,熟练掌握这些调试工具的使用方法,可以帮助你更好地调试代码。
  4. 学习库函数和寄存器:STM32的库函数和寄存器是实现其功能的关键,因此需要深入学习并理解库函数和寄存器的使用方法。
  5. 学习基本外设和高级功能:STM32有许多基本外设和高级功能,如GPIO、定时器、串口、SPI、IIC、WDG、FSMC、ADC/DAC等,需要了解并掌握这些外设和功能的基本原理和使用方法。
  6. 系统学习:可以通过购买开发板、开发板配套视频教程、开发板配套源码和芯片官方手册进行系统学习。同时,要善于利用网络资源,如论坛、博客等,进行学习交流。
  7. 多实践、多动手:学习STM32开发不能只停留在理论层面,需要多动手实践,编写代码、调试程序,从实践中学习和积累经验。
  8. 注重学习方法:学习STM32开发需要注重学习方法,例如如何查找资料、如何提问、如何解决问题等。要学会独立思考和解决问题,避免过度依赖他人。

总之,学好STM32需要付出努力和时间,需要掌握基本技能和知识,同时注重实践和学习方法,不断提高自己的编程和调试能力。


总结

关于C/C++ stm32基础知识的超详细讲解,懒大王就先分享到这里了,如果你认为这篇文章对你有帮助,请给懒大王点个赞点个关注吧,如果发现什么问题,欢迎评论区留言!!💕💕 💕 

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

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

相关文章

基于flask和fomantic-ui的简易p2p文件分享平台的手动实现

背景 开学一个多月了&#xff0c;由于繁重的学业和懒惰&#xff0c;都没怎么更新有意思的博客。 前几天突然想到了一个想法。同学之间平常用网络分享一个文件&#xff0c;大部分都是用的qq。但是qq看起来把文件拖到聊天框点击发送就发给对面同学了。但是实际上是先上传到了腾…

Spark通过三种方式创建DataFrame

通过toDF方法创建DataFrame 通过toDF的方法创建 集合rdd中元素类型是样例类的时候&#xff0c;转成DataFrame之后列名默认是属性名集合rdd中元素类型是元组的时候&#xff0c;转成DataFrame之后列名默认就是_N集合rdd中元素类型是元组/样例类的时候&#xff0c;转成DataFrame…

LLM prompt提示工程调试方法经验技巧汇总

现在接到一个LLM模型任务&#xff0c;第一反应就是能不能通过精调prompt来实现&#xff0c;因为使用prompt不需要训练模型&#xff0c;只需输入指令就可以实现和LLM的交互。按照以往经验&#xff0c;不同的prompt对模型输出影响非常大&#xff0c;如果能构造一个好的prompt&…

工业品电商,新的隐形冠军藏不住了?

【潮汐商业评论/原创】 “时代真的变了。”自打从淘宝买了一批配件后&#xff0c;工厂老板李瓦就经常感慨。 李瓦经营着一家专门生产机器零部件的工厂&#xff0c;日常经常要采购传送带、螺丝、螺母等材料&#xff0c;过去他主要通过线下的方式进货。但最近朋友圈里一段淘宝工…

2023.11.15 hive sql之函数标准,字符串,日期,数学函数

目录 一.函数分类标准 二.查看官方函数,与简单演示 三.3种类型函数演示 四.字符串函数 1.常见字符串函数 2.索引函数 解析函数 五.日期函数 1.获取当前时间 2.获取日期相关 3.周,季度等计算 4.时间戳 六.数学函数 一.函数分类标准 目前hive三大标准 UDF:&#xff08…

社区论坛小程序源码系统,功能齐全,页面简洁,前端+后端+完整部署教程

现如今&#xff0c;社区论坛已经成为人们交流思想&#xff0c;分享经验&#xff0c;获取信息的重要平台。近年来&#xff0c;小程序的出现更是改变了传统的网站建设方式&#xff0c;让用户体验更加便捷&#xff0c;高效。今天源码小编来和大家分享一款社区论坛小程序源码系统&a…

基于SSM的OA办公管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

exce常用

一、冻结 同时冻结行和列 打开一个Excel表格&#xff0c;点击选择需要冻结的行和列交接处对应的单元格&#xff08;例如&#xff1a;需要同时冻结1、2行和A、B列&#xff0c;则选中行列交接对应的C3单元格&#xff09;&#xff09;&#xff0c; 即下一行 和下一列的交接点。 …

使用grad-cam对ViT的输出进行可视化

使用grad-cam对ViT的输出进行可视化 文章目录 使用grad-cam对ViT的输出进行可视化前言原理使用代码Pytorch-grad-cam库的更多方法在MMpretrain中使用示例总结 前言 Vision Transformer (ViT) 作为现在CV中的主流backbone&#xff0c;它可以在图像分类任务上达到与卷积神经网络…

mysql数据库超过最大连接数

mysql 超过数据库最大连接数解决办法 1、报错信息 首先无论是navicat 执行sql还是 用idea启动多的服务都会有如下报错信息&#xff1a; 2、解决办法 2.1命令方式修改 这种方法是由其他资料提供的。这种修改方式是临时的&#xff0c;如果mysql服务重启设置就会还原&#xff…

弱类型和强类型自定义UDAF函数

目录 使用自带的avg函数弱类型自定义UDAF函数(AVG)强类型自定义UDAF函数(AVG) 弱类型&#xff1a;3.x过期 2.x有 强类型&#xff1a;3.x 2.x没有 使用自带的avg函数 import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession}object UserDefine…

双极膜电渗析设备

#双极膜电渗析设备 双极膜&#xff08;bipolar membrance&#xff0c;简称BPM&#xff09;是一种新型的离子交换复合膜&#xff0c;它通常由阳离子交换层&#xff08;N型膜&#xff09;、界面亲水层&#xff08;催化层&#xff09;和阴离子交换膜&#xff08;P型膜&#xff09;…

【计算思维】少儿编程蓝桥杯青少组计算思维题考试真题及解析C

【科技素养】少儿编程蓝桥杯青少组计算思维题考试真题及解析 1.天平的左右两端分别放有一些砝码&#xff0c;如下图所示&#xff0c;右边的砝码不变&#xff0c;从左边最多拿走几个砝码&#xff0c;可以使天平左右两边平衡&#xff1a; A、1 B、2 C、3 D、4 2.把下面的图形…

sqli-labs(Less-3)

1. 通过构造id1’ 和id1’) 和id1’)–确定存在注入 可知原始url为 id(‘1’) 2.使用order by 语句猜字段数 http://127.0.0.1/sqlilabs/Less-3/?id1) order by 4 -- http://127.0.0.1/sqlilabs/Less-3/?id1) order by 3 --3. 使用联合查询union select http://127.0.0.1…

Window MongoDB安装

三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…

IDEA创建JavaFX项目

1、New -> Project 2、选择JavaFX 配置项目名&#xff0c;包名&#xff0c;lib包管理工具&#xff0c;JDK版本&#xff08;注&#xff0c;JDK版本最低需要11&#xff09; 3、选择lib包 根据自己需求选择 lib包介绍 BootstrapFX&#xff1a;BootstrapFX 是一个为 JavaFX 提…

怎样正确选择等保测评机构开展等保测评工作?

随着大家对网络安全的重视&#xff0c;越来越多的企业需要做等保测评了。很多小伙伴想知道怎样正确选择等保测评机构开展等保测评工作&#xff1f;这里就给大家简单说说。 怎样正确选择等保测评机构开展等保测评工作&#xff1f; 【回答】&#xff1a;正确选择等保测评机构开展…

Java魔法解密:HashMap底层机制大揭秘

文章目录 一、 源码深度解析1.1 窥探Java集合框架中的设计思想1.2 逐行解读HashMap的源代码1.2.1 类信息1.2.2 常量属性1.2.3 变量属性1.2.4 节点信息1.2.5 构造方法1.2.6 put方法1.2.6.1 putVal方法1.2.6.2 putTreeVal方法1.2.6.3 tieBreakOrder方法1.2.6.4 treeifyBin方法1.2…

【联邦学习+区块链】TORR: A Lightweight Blockchain for Decentralized Federated Learning

文章目录 I.CONTRIBUTIONII. ASSUMPTIONS AND THREAT MODELA. AssumptionsB. Threat Model III. SYSTEM DESIGNA. Design OverviewB. Block DesignC. InitializationD. Role SelectionE. Storage ProtocolF. Aggregation ProtocolG. Proof of ReliabilityH. Blockchain Consens…