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

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

前言

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

相关文章
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
82 0
|
2月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
2月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
75 4
|
2月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
37 4
|
2月前
|
传感器 监控 物联网
基于STM32+微波雷达设计的非接触式睡眠监控系统
本项目开发一种非接触式的睡眠监控系统,该系统利用先进的60GHz毫米波雷达技术和STM32微控制器,实现了对人体在睡眠过程中的存在感知、运动感知以及生理指标如呼吸频率、心率的实时监测。系统能够自动评估睡眠质量,并在用户睡眠周期结束时提供睡眠评分。为了确保用户能够在任何地点了解自己的睡眠状况,系统集成了Wi-Fi模块,可以将收集到的数据上传至华为云物联网平台,并通过专门设计的移动应用程序供用户远程访问。此外,系统还具备超阈值报警功能,当检测到异常的生理指标时会发出警报提醒。本地1.44寸TFT LCD显示屏用于实时显示监测到的信息,包括生理指标和环境数据。为了全面监测用户的健康状况,系统还加入了
260 0
基于STM32+微波雷达设计的非接触式睡眠监控系统
|
2月前
|
Java 编译器 C++
c++学习,和友元函数
本文讨论了C++中的友元函数、继承规则、运算符重载以及内存管理的重要性,并提到了指针在C++中的强大功能和使用时需要注意的问题。
23 1
|
2月前
|
存储 机器学习/深度学习 编解码
基于STM32的车牌识别系统
基于STM32的车牌识别系统
88 0
|
2月前
|
传感器 网络协议 物联网
基于STM32的环境监测系统 (esp8267)(下)
基于STM32的环境监测系统 (esp8267)(下)
101 0
|
2月前
|
传感器 测试技术 芯片
基于STM32的环境监测系统 (esp8266)(上)
基于STM32的环境监测系统 (esp8266)(上)
320 0
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
44 3