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

慈云数据 2024-05-30 技术支持 55 0

目录

前言

一、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

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon