STM32基础知识点归纳(1)

1、stm32内核框架基础知识

四个驱动单元是:

        内核 DCode 总线;

        系统总线;

        通用 DMA1;

        通用 DMA2;

四被动单元是:

        AHB 到 APB 的桥:连接所有的 APB 设备;

        内部 FlASH 闪存;

        内部 SRAM

        FSMC;

STM32基础知识点归纳(1)_第1张图片

        ① ICode 总线:该总线将 M3 内核指令总线和闪存指令接口相连,指令的预取在该总线上

面完成。

        ② DCode 总线:该总线将 M3 内核的 DCode 总线与闪存存储器的数据接口相连接,常量加载和调试访问在该总线上面完成。

        ④ DMA 总线:该总线将 DMA AHB 主控接口与总线矩阵相连,总线矩阵协调 CPU

DCode DMA SRAM,闪存和外设的访问。

STM32基础知识点归纳(1)_第2张图片

        ③、LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。独立看门狗的时钟源只能是 LSI,同时 LSI 还可以作为 RTC 的时钟源。

从图中可以看出 C USB 的时钟是来自 PLL 时钟源。STM32 中有一个全速功能

USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能从 PLL 输出端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需要使用 USB 模块时,PLL 必须使能,并且时钟频率配置为 48MHz 72MHz 

C. 从图中可以看出 C USB 的时钟是来自 PLL 时钟源。STM32 中有一个全速功能 的 USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能从 PLL 输出端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需要使用 USB模块时,PLL 必须使能,并且时钟频率配置为 48MHz 72MHz

        APB1 上面连接的是低速外设,包括电源接口、 备份接口、CANUSBI2C1I2C2UART2UART3 等等,记忆方法是 2>1。

2、stm32复用的概念

STM32基础知识点归纳(1)_第3张图片

        所谓部分重映射就是部分管脚和默认的是一样的,而部分管脚是重新映射到其他管脚。而完全重映射就是所有管脚都重新映射到其他管脚。

        CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256 级的可编程中断设置。       

3、stm32的中断优先级概念

STM32基础知识点归纳(1)_第4张图片

        通过这个表,我们就可以清楚的看到组 0~4 对应的配置关系,例如组设置为 3,那么此时所有的 60 个中断,每个中断的中断优先寄存器的高四位中的最高 3 位是抢占优先级1 位是响应优先级。每个中断,你可以设置抢占优先级为 0~7,响应优先级为 1 0。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高

        (重要)第一,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断同等级处理的是中断同时发生先处理谁的问题。

4、c语言位操作的符号

STM32基础知识点归纳(1)_第5张图片

5、stm32底层符号的意义

#define     __I      volatile const      /*!< defines 'read only' permissions      */

#define     __O     volatile            /*!< defines 'write only' permissions     */

#define     __IO     volatile              /*!< defines 'read / write' permissions   */

__I :输入口。既然是输入,那么寄存器的值就随时会外部修改,那就不能进行优化,每次都要重新从寄存器中读取。也不能写,即只读,不然就不是输入而是输出了。
__O :输出口,也不能进行优化,不然你连续两次输出相同值,编译器认为没改变,就忽略了后面那一次输出,假如外部在两次输出中间修改了值,那就影响输出
__IO:输入输出口,同上

为什么加下划线?

原因是:避免命名冲突

6、stm32的启动方式

STM32基础知识点归纳(1)_第6张图片

        第一种启动方式是最常用的用户FLASH启动,正常工作就在这种模式下,STM32的FLASH可以擦出10万次,所以不用担心芯片哪天会被擦爆!

        第二种启动方式是系统存储器启动方式,即我们常说的串口下载方式(ISP),不建议使用这种,速度比较慢。STM32 中自带的BootLoader就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0/1到该模式下重新烧写Flash即可恢复正常。

        第三种启动方式是STM32内嵌的SRAM启动。该模式用于调试。 用jlink在线仿真,则是下载到SRAM中。

    STM32基础知识点归纳(1)_第7张图片

        Stm32的boot0引脚是单独的一个单片机引脚,但是boot1引脚是与PB2复用的。如果引脚不是很紧缺,PB2引脚还是单独留出来做boot1引脚。但是当boot0为0电平的时候,boot1的引脚的电平是步影响的。

STM32基础知识点归纳(1)_第8张图片

7、stm32的外部时钟的输入形式

        stm32的外部时钟有两种,如下图所示,“A”位置处的"PC14-OSC32-IN"和"PC15-OSC32-OUT"时钟输入引脚,是低速外部时钟的输入引脚,一般选取32.768HZ晶振,主要是给RTC实时时钟和看门狗提供一个低功耗且精确的实时时钟源。

        “B”位置处的就是高速外部时钟了,"PH0-OSC-IN'和"PH1-OSC-OUT"是高速外部时钟的输入引脚,一般作为系统的主要心跳高速晶振的产生。

STM32基础知识点归纳(1)_第9张图片

STM32基础知识点归纳(1)_第10张图片

你可能感兴趣的:(stm32,嵌入式硬件,单片机)