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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mmdetection安装与训练

一、什么是mmdetection 商汤科技&#xff08;2018 COCO 目标检测挑战赛冠军&#xff09;和香港中文大学最近开源了一个基于Pytorch实现的深度学习目标检测工具箱mmdetection&#xff0c;支持Faster-RCNN&#xff0c;Mask-RCNN&#xff0c;Fast-RCNN等主流的目标检测框架&#…

前端js面试题 (四)

文章目录 ES6新增的proxy手写&#xff0c;proxy访问某对象输出别的数字深度拷贝&#xff0c;为啥无法使用JSON.parse(JSON.stringify(obj))异步编程有哪些&#xff0c;async await来由&#xff0c;本质原理是什么事件队列输出题第一题第二题第三题 粘性布局的原理&#xff0c;以…

Live800:2023年客服团队管理有哪些思路和方法?

在数字化时代&#xff0c;客服团队成为企业与客户之间的重要桥梁。随着技术不断发展&#xff0c;客服团队管理也在不断进化。到了2023年&#xff0c;最新的客服团队管理将会有哪些思路和方法呢&#xff1f; 一、智能化客服系统 随着人工智能技术的不断发展&#xff0c;智能化客…

redis-5.0.8主从集群搭建、不重启修改配置文件

一、环境准备 192.168.5.100 redis-01 192.168.5.101 redis-02 192.168.5.102 redis-03 关闭防火墙、能够通网 二、安装redis [rootlocalhost ~]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz [rootlocalhost ~]# tar xf redis-5.0.8.tar.gz -C /usr/loca…

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

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

十大适合外贸企业邮箱的Gmail替代品推荐

电子邮件仍然是许多人选择的媒介&#xff0c;因为它是交换信息的最可靠和正式的方法。无论是个人还是小型企业&#xff0c;电子邮件仍然是个人和专业用途的重要通信工具。它提供了一种安全、可靠且正式的方法来交换信息和文档以及共享文件。 对于大多数人来说&#xff0c;Googl…

RT-Thread STM32F407 DMA

这里以串口的DMA方式接收为例&#xff0c;串口1进行调试&#xff0c;串口2进行DMA接收 第一步&#xff0c;进入RT-Thread Settings配置DMA 第二步&#xff0c;进入board.h&#xff0c;定义串口及DMA宏 第三步&#xff0c;回到main.c&#xff0c;配置串口及DMA模式 第四步…

uniapp开发ios上线(在win环境下使用三方)

苹果 1、win环境下无法使用苹果os编译器所以使用第三方上传工具&#xff0c;以下示例为 初雪云 &#xff08;单次收费&#xff0c;一元一次&#xff09; 初雪云&#xff08;注册p12证书&#xff09;&#xff1a;https://www.chuxueyun.com/#/pages/AppleCertificate 苹果开发者…

将ECharts图表插入到Word文档中

文章目录 在后端调用JS代码准备ECharts库生成Word文档项目地址库封装本文示例 EChartsGen_DocTemplateTool_Sample 如何通过ECharts在后台生成图片&#xff0c;然后插入到Word文档中&#xff1f; 首先要解决一个问题&#xff1a;总所周知&#xff0c;ECharts是前端的一个图表库…

websocket学习笔记【springboot+websocket聊天室demo】

文章目录 WebSocket是什么&#xff1f;为什么需要WebSocket?WebSocket和Http连接的区别WebSocket的工作原理基本交互过程&#xff1a; Java中的WebSocket支持WebSocket的优势springboot websocket themlef 一个聊天室demopom.xmlWebSocketConfigChatControllerWebController…

数字人,虚拟数字人——你看好数字人领域的发展吗?

你看好数字人领域的发展吗&#xff1f; 目录 一、虚拟人、数字人、虚拟数字人基本概念 1.1、虚拟人&#xff08;Virtual Person&#xff09; 1.2、 数字人&#xff08;Digital Human&#xff09; 1.3、虚拟数字人&#xff08;Virtual Digital Human&#xff09; 1.4、侧重…

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…

菜单栏图标隐藏管理Bartender 5.0.44

Bartender是一款Mac上的菜单栏图标隐藏管理软件&#xff0c;它可以帮助用户轻松整理和管理菜单栏上的图标&#xff0c;使其更加整洁和有序。 以下是Bartender的一些主要特点和功能&#xff1a; 菜单栏图标隐藏&#xff1a;Bartender允许用户将一些不常用的菜单栏图标隐藏起来&a…

Uniapp-小程序自定义导航栏

一、项目背景 制作小程序页面时候发现原生导航栏有一定的高度是没有背景渲染的会出现这种情况 但是我们需要的是 二、原因 小程序的原生导航栏存在。一般可以使用 纯色填充顶部栏 可以直接使用navigationBarBackgroundColor完成 在style中添加 "navigationBarBackgrou…

【跨境电商独立站新手入门手册】

一直想要更新一个独立站的系列合集&#xff0c;用小白也看得懂的方式阐述怎么从0到1搭建并运营一个独立站&#xff0c;并且后续我也会录制成视频。 今天&#xff0c;它来了。 这是《跨境电商独立站新手入门手册》系列的第一篇。 你是否有过这样的经历&#xff1a;当你在网上浏…

AMEYA360分析:蔡司工业CT中的自动缺陷检测

蔡司自动缺陷检测&#xff1a;适用于您的应用领域的AI软件 蔡司自动化缺陷检测机器学习软件将人工智能应用于3D CT和2D X射线系统&#xff0c;树立了新的标杆&#xff0c;可对缺陷或异常(不规则)进行检测、定位与分类&#xff0c;同时通过读取CT扫描和X射线结果对其进行详细分析…

ACM/IEEE Fellow、欧洲科学院院士王义教授将在2023年CCF中国软件大会上作特邀报告...

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;邀请王义作大会特邀报告。 特邀嘉宾 王义 ACM/IEEE Fellow、欧洲科学院院士 Wang is a chair professor at Uppsala University. He has a Ph.D. in Computer Science from Chalmers. His interests are mainl…

LLMs可以遵循简单的规则吗?

深度学习自然语言处理 原创作者&#xff1a;wkk 由于大型语言模型在现实世界中的责任越来越大&#xff0c;因此如何以可靠的方式指定和约束这些系统的行为很重要。一些开发人员希望为模型设置显式规则&#xff0c;例如“不生成滥用内容”&#xff0c;但这种方式可能会被特殊技术…

Mysql数据备份 —xtrabackup

一 备份介绍 ### 优点&#xff1a; 1. **在线备份&#xff1a;** XtraBackup 支持在线备份&#xff0c;这意味着你可以在 MySQL 服务器运行的同时进行备份&#xff0c;而无需停止数据库服务。这对于生产环境中的数据库是非常关键的&#xff0c;因为可以最小化停机时间。 2. **…

【工具流】WSL2安装

一些废话 最近看到了PKU出品的cs自学指南&#xff0c;想要跟着里面的自学路径学国外的优质课程&#xff0c;无奈大多数pre教程里面都是直接Linux环境下的操作&#xff0c;并且我在CSwiki看到了那个熟悉的上学期学了一点的missing-semester课。 上学期自学missing-semester的时候…