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

目录

前言

一、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.hqwc.cn/news/176969.html

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

相关文章

机器学习基础之《回归与聚类算法(7)—无监督学习K-means算法》

一、什么是无监督学习 1、没有目标值—无监督学习 一家广告平台需要根据相似的人口学特征和购买习惯将美国人口分成不同的小组&#xff0c;以便不同的用户采取不同的营销策略。 Airbnb需要将自己的房屋清单分组成不同的社区&#xff0c;以便用户能更轻松地查阅这些清单&#x…

【PyTorch教程】如何使用PyTorch分布式并行模块DistributedDataParallel(DDP)进行多卡训练

本期目录 1. 导入核心库2. 初始化分布式进程组3. 包装模型4. 分发输入数据5. 保存模型参数6. 运行分布式训练7. DDP完整训练代码 本章的重点是学习如何使用 PyTorch 中的 Distributed Data Parallel (DDP) 库进行高效的分布式并行训练。以提高模型的训练速度。 1. 导入核心库 D…

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

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

Oracle数据库、实例、用户、表空间和表之间的关系

一、Oracle数据库中数据库、实例、用户、表空间和表&#xff08;索引、视图、存储过程、函数、对象等对象&#xff09;之间的关系。 1、Oracle的数据库是由一些物理文件组成&#xff1a;数据文件控制文件重做日志文件归档日志文件参数文件报警和跟踪日志文件备份文件。 2、实…

MHA:故障切换

MHA&#xff1a; masterhight availabulity&#xff1a;基于主库的高可用环境下&#xff1a;主从复制 故障切换 主从的架构。 MHA&#xff1a;最少要一主两从 mysql的单点故障问题&#xff0c;一旦主库崩溃&#xff0c;MHA可以在0-30秒内自动完成故障切换。 工作原理&#…

上机实验四 图的最小生成树算法设计 西安石油大学数据结构

实验名称&#xff1a;图的最小生成树算法设计 &#xff08;1&#xff09;实验目的&#xff1a; 掌握最小生成树算法&#xff0c;利用kruskal算法求解最小生成树。 &#xff08;2&#xff09;主要内容&#xff1a; 利用kruskal算法求一个图的最小生成树&#xff0c;设计Krus…

社区论坛小程序系统源码+自定义设置+活动奖励 自带流量主 带完整的搭建教程

大家好啊&#xff0c;又到了罗峰来给大家分享好用的源码的时间了。今天罗峰要给大家分享的是一款社区论坛小程序系统。社区论坛已经成为人们交流、学习、分享的重要平台。然而&#xff0c;传统的社区论坛往往功能单一、缺乏个性化设置&#xff0c;无法满足用户多样化的需求。而…

「Verilog学习笔记」优先编码器Ⅰ

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 分析编码器的功能表&#xff1a; 当使能El1时&#xff0c;编码器工作&#xff1a;而当E10时&#xff0c;禁止编码器工作&#xff0c;此时不论8个输入端为何种状态&…

【rl-agents代码学习】02——DQN算法

文章目录 Highway-env Intersectionrl-agents之DQN*Implemented variants*:*References*:Query agent for actions sequence探索策略神经网络实现小结1 Record the experienceReplaybuffercompute_bellman_residualstep_optimizerupdate_target_network小结2 exploration_polic…

【吐血总结】前端开发:一文带你精通Vue.js前端框架(七)

文章目录 前言1️⃣事件处理器2️⃣表单3️⃣总结 前言 上一篇中我们学习了vue.js 的条件语句、循环语句等知识点.&#xff0c;现在让我们接着Vue系列的学习。 Vue中事件处理器、表单等在开发中的作用不可或缺&#xff0c;本文将基于实例进行以上知识点的讲解。 1️⃣事件处理器…

交换机堆叠 配置(H3C)

堆叠用来干什么&#xff1f; 一台交换机网口有限&#xff0c;无法满足网络需求&#xff1b; 无法达到网络要求&#xff0c;为了扩展核心设备的转发要求&#xff0c;不改变原来网络&#xff0c; 可以使用新交换机和原来交换机组成IRF。 配合聚合可以达到备用作用&#xff0c;防…

爆款元服务!教你如何设计高使用率卡片

元服务的概念相信大家已经在 HDC 2023 上有了很详细的了解&#xff0c;更轻便的开发方式&#xff0c;让开发者跃跃欲试。目前也已经有很多开发者开发出了一些爆款元服务&#xff0c;那么如何让你的元服务拥有更高的传播范围、更高的用户使用率和更多的用户触点呢&#xff1f;设…