STM32完全学习1:stm32手册,标准库和HAL库&&存储器、电源和时钟系统

发布时间 2023-08-29 23:39:05作者: zxkic

STM32的相关知识

1.主流的32位高性能单片机,是ARM架构,但是ARM架构不一定是stm32

 三种stm32编程的方法:

1.寄存器操作

2.标准库(标准外设库)操作:代码复用

3.HAL库:集成了很多功能,有点像操作系统,图形化编程

下面为数据手册的前4章:存储器和总线架构+电源控制+复位和时钟控制

STM32的存储器映像

四个驱动单元I-bus,D-bus,S-bus和GP-DMA(通用DMA)

三个被动单元:内部SRAM,内部闪存存储器,AHB到APB的桥

AHB是主干道

 

stm32是32位cpu,数据总线是32位的。

stm32的地址总线也是32位的。

STM32可以访问的地址容量是:4GB=2^32B

数据总线32位,即CPU一次处理的字长为32位。

存储单元是以字节(byte)为单位,N根地址总线能访问2的N次方个存储单元。于是有32位地址总线可以访问2的32次方个存储单元,即4GB。如果有些题目说:按“字”寻址,就说明是存储单元大小为字长的位数,按“字节”寻址,说明存储单元是字节的大小。

 

STM32用不完4GB,因此有了逻辑地址和物理地址。

存储器映像就是告诉我们STM32涉及时是如何使用4GB的逻辑地址。

ARM是内存和IO统一编址的。

CODE段:

SRAM段

外设段:

stm32的实际地址:

0x00000000 - 0x08000000: 128MB   映射区

0x08000000 - 0x0801FFFF:128K  Flash

0x1FFFF000 - 0x1FFFF800: 2KB  System Memory

0x1FFFF800 - 0x1FFFF9FF: 512B options bytes

 

STM32的位带操作详解

Cortex-M3权威指南——相关书籍

bitband:有时候叫位带

别名存储器区       字(32位)

                 映射

位段存储区           位

stm32只支持8,16,32位的操作,而不支持位操作。

但是我们实际编程中,仍然存在位操作的需求。一般是读出整体的32位操作,然后对其中一位进行操作之后再整体32位写回去。

改进效率:想办法直接一次性修改那一位,还不影响其他位。那就是位带操作。

位带思路的操作:将这一位映射到其他地方的32位,在其他地方操作32位就相当于操作这里的1位。

 

别名存储器区大小等于位段存储器区大小的32倍

位带操作的核心问题:如何由位段存储器区地址,计算出别名存储器区的地址。

bit_word_addr = bit_band_base+(byte_offset*32)+(bit_number*4)

计算公式需要理解

 

STM32的启动模式

启动模式是STM32上电复位后从哪里去执行程序的问题。

BOOT1和BOOT0控制启动模式

BOOT1  BOOT0   模式

     X          0          用户闪存存储器区启动(开发的程序代码烧录时就烧录到了这里,正常情况下都是从这里启动)

   0          1          系统存储器(非常规,为了实现ISP功能)

   1     1          内嵌SRAM(非常规,实现调试器调试功能)

 

ISP和IAP:

ISP:in-system programming 在系统烧录,或在系统编程。PC机通过串口将bin/hex文件直接isp到单片机内部flash中。

IAP:in-application programming (在应用编程,在线升级)IAP的时候,用户程序通过串口来接收PC发送过来的bin/hex文件,然后将其烧录到内部flash中完成IAP。一般实现IAP需要人为的将用户存储器区分为2部分:bootloader+app

STM32的电源管理系统

 电源管理芯片

 低功耗模式:根据最低电源消耗,最快速启动时间和可用的唤醒源的需求,选取一个最佳的折中方案

  待机模式:CPU停,外设停,时钟停,SRM和寄存器停

stm32的复位和时钟控制

系统复位,上电复位和备份区域复位。

系统复位:1.NRST管脚上的低电平(外部复位) 2.窗口看门狗计数终止(WWDG复位)3.独立看门狗计数终止(IWDG复位)4.软件复位(SW复位) 5.低功耗管理复位

可通过RCC_CSR控制状态寄存器中的复位状态标志位来确认复位事件来源。

电源复位:1.上电/掉电复位 2.从待机模式中返回、

STM32复位后CPU都会被强制到复位向量中去执行程序。

备份区域复位

 

STM32的时钟总体设计

时钟源:纯内部,纯外部,内外部(在外部提供了晶振)

PLL(锁相环电路):功能就是倍频

时钟通道与流向、分频:时钟树

完全独立的多个时钟

时钟框图:

1.两套独立的时钟:HSx和LSx

2.纯内部:HSI,LSI

3.内外部:HSE,LSE

4.纯外部:OSC_IN,OSC32_IN

PLLMUL:倍频控制

PLLSRC:时钟源选择

分频:注意时钟节点的名称

HSI,HSE,LSI,LSE

PLLCLK,SYSCLK

USBCLK,HCLK,FCLK,PCLK1,PCLK2,ADCCLK,RTCCLK,IWDGCLK

时钟相关的寄存器:

时钟开关

基地址,查memory map得到,然后配合偏移地址得到寄存器地址

寄存器位一般有三种:状态位,开关位、设置值位

RCC_CR

RCC_CFGR