目录
1、ARM处理器
32 位处理器(一次处理 32bit 即 4 字节。处理速度更快,可调用的内存更大), 是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine(arm公司只卖IP,不生产)。
8bit=1Byte,1KB=1024Byte=8*1024bit,1M=1024KB
2、STM32
1. 定义
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核 。按内核架构分为不同产品:
主流产品:STM32F0、STM32F1、STM32F3
超低功耗产品:STM32L0、STM32L1、STM32L4、STM32L4+
高性能产品:STM32F2、STM32F4、STM32F7、STM32H7
2. 主频
(1)STM32F1 主频 72 MHz
高级高性能总线 AHB,最大频率 72MHz;
高级外围总线 APB,APB1 最大频率 36MHz,APB2 最大频率 72MHz;
(2)STM32F407 主频 168 MHz
高级高性能总线 AHB,AHB1 & AHB2 最大频率 168MHz;
高级外围总线 APB,APB1 最大频率 42MHz,APB2 最大频率 84MHz;
(3)STM32F429 主频 180MHz
高级高性能总线 AHB,AHB1 & AHB2 最大频率 180MHz;
高级外围总线 APB,APB1 最大频率 45MHz,APB2 最大频率 90MHz;
(4)STM32F7 主频 216 MHz
高级高性能总线 AHB,AHB1 & AHB2 最大频率 216MHz;
高级外围总线 APB,APB1 最大频率 54MHz,APB2 最大频率 108MHz;
(5)STM32H7 主频 480 MHz
高级高性能总线 AHB,AHB1 & AHB2 & AHB3 & AHB4 最大频率 240MHz;
高级外围总线 APB,APB1 & APB2 & APB3 & APB4 最大频率 120MHz。
STM32寻址大小:2^32 = 4G(字节)
STM32寻址范围:0x 0000 0000 —— 0x FFFF FFFF
3. 启动模式
STM32F1、F4启动模式:
启动主闪存存储器(FLASH启动):BOOT0=0 BOOT1=X
启动系统存储器(自举程序,串口1下载的程序):BOOT0=1 BOOT1=0
启动内置SRAM(SEAM启动):BOOT0=1 BOOT1=1
4. 时钟源
(1)STM32F1低速时钟
LSI 是低速内部时钟,RC 振荡器频率为40kHz 。供独立看门狗和自动唤醒单元使用。
LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。
(2)STM32F1高速时钟
HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。
HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz。
(3)STM32F4低速时钟
LSI 是低速内部时钟,RC 振荡器,频率为 32kHz 左右。供独立看门狗和自动唤醒单元使用。
LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。
(4)STM32F4高速时钟
HSI 是高速内部时钟,RC 振荡器,频率为 16MHz。可以直接作为系统时钟或者用作 PLL 输入。
HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~26MHz。HSE 也可以直接做为系统时钟或者 PLL 输入。
PLL 为锁相环倍频输出。
5. GPIO
(1)基础操作函数
HAL_GPIO_ReadPin(GPIO, PIN) 读取引脚电平
HAL_GPIO_TogglePin(GPIO, PIN) 反转引脚电平
HAL_GPIO_WritePin(GPIO, PIN, GPIO_PIN_SET) 引脚电平置1
HAL_GPIO_WritePin(GPIO, PIN, GPIO_PIN_RESET) 引脚电平置0
(2)GPIO 的基本结构
GPIO 是控制或者采集外部器件的信息的外设。它按组分配,每组 16 个 IO 口,组数视芯片
而定。STM32F103ZET6 芯片是 144 脚的芯片,有 GPIOA、GPIOB、GPIOC、 GPIOD、
GPIOE、GPIOF 和 GPIOG 七组 GPIO 口,共有 112 个 IO 口。
(3)GPIO工作模式
输入浮空——GPIO_Mode_IN_FLOATING
上拉/下拉电阻为断开状态,施密特触发器打开,输出被禁止。
浮空输入状态下,IO电平完全由外部输入决定,如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。
输入上拉——GPIO_Mode_IPU
上拉电阻导通,施密特触发器打开,输出被禁止。
在需要外部上拉电阻的时候,可以使用内部上拉电阻,这样可以节省一个外部电阻,但是内部上拉电阻的阻值较大,所以只是“弱上拉”,不适合做电流型驱动。
输入下拉——GPIO_Mode_IPD
下拉电阻导通,施密特触发器打开,输出被禁止。
在需要外部下拉电阻的时候,可以使用内部下拉电阻,这样可以节省一个外部电阻,但是内部下拉电阻的阻值较大,所以不适合做电流型驱动。
模拟输入——GPIO_Mode_AIN
上下拉电阻断开,施密特触发器关闭,双 MOS 管也关闭。
该模式用于 ADC 采集或者 DAC 输出,或者低功耗下省电。
开漏输出——GPIO_Mode_Out_OD
输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强。
利用外部电路的驱动能力,减少IC内部的驱动。
可以将多个开漏输出的Pin,连接到一条线上,通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。
推挽输出——GPIO_Mode_Out_PP
可以输出高,低电平,连接数字器件。
输出既可以向负载灌电流,也可以从负载抽取电流。
推拉式输出级既提高电路的负载能力,又提高开关速度
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。
开漏式复用功能——GPIO_Mode_AF_OD
一个 IO 口可以是通用的 IO 口功能,还可以是其他外设的特殊功能引脚,这就是 IO 口的复用功能。
在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息。
推挽式复用功能——GPIO_Mode_AF_PP