时钟:
51单片机中有时钟和时钟树的概念,外设只有GPIO、定时器、和一个串口,使用的都是11.0592MHZ的频率,除了定时器外,其他外设只要上电就可以使用。
stm32不同外设对应的时钟频率不同,故有时钟树的概念
PLL:加速器,翻倍输出输入的时钟频率,(2~16倍)用户根据实际的情况调节各个外设的输入频率(预分频器:减速器,将高频型号减速为不同的低频信号供各个外设使用)
内部时钟振荡频率受到温度的影响,不准确,高速通信需要使用外部时钟
STM32英文参考手册:第三章 总线
即断电后数据也不会丢失,
FLASH不利于进行写操作,只是用来存放指令的,只有在烧写程序时对FLASH进行写操作
掉电后,数据消失,存储变量,常量存储在FLASH中
供内核处理数据,读取常量或者变量
总线矩阵:
作用:仲裁
内核和外设进行数据交换,总线仲裁后保证数据有序通过
DMA作用:为各个外设之间进行数据交换时提供通道,而不需要内核的干涉
AHB:高级高性能总线,APB:高级外设总线
高速外设总线:APB2 低速外设总线:APB1
FCLK:
FLITF: 闪存接口
MCU通过HSI与片内闪存进行内部通信,不使用外部晶振
时钟安全系统,检测时钟异常,及时更换供给时钟,便于单片机正常运行
看门狗使用LSI,LSI与其他时钟处于隔离状态,其他地方出现问题不会影响看门狗的正常运行,实现监视整个系统的功能
MCU:时钟输出,输出给外部的时钟源使用,四个时钟源
寄存器:
以字节为单位进行划分,1Byte = 8Bit
32位操作系统可操作2^32个地址(不明白)
K M G
单位换算,÷3次1024 = 4G寻址空间,即运行内存
ARM公司将这个内存分为8块,每块的内存是512-Mbyte
block0:寻址片内闪存,硬盘内存
block1:SRAM
block1:外设
block3、4、5: FSMC(
)
portA-portG 7个端口
每个端口有16个引脚,总引脚数为16*7=112
GPIO:必须以字(32位)的方式操作这些外设寄存器
意思是如果读取0x20002200地址的内容,返回的是一个字的长度,也就是32位的数据。
设置一个GPIO口要占用4Bit空间
配置GPIO口输入输出模式:GPIOx_CRL/H
端口输入寄存器:IDR 只读
端口输出寄存器:IDR 可读可写
原子操作:只需要一个步骤就可以实现的操作,不会被中断打断,需要操作BSRR寄存器
set置1,reset置0
操作BSRR低16位相当于操作ODR低16位,但操作BSRR实现的是原子操作
BSRR寄存器高16位操作和BSR相同
端口配置锁定寄存器(GPIOx_LCKR):
异常和中断:
NVIC处理中断异常
位处理器软件接口标准:
这个图在M3、4指南的第七章 7.5向量表
STN32参考手册10章 (NVIC)所有向量的地址
10.2 外部中断控制
对同一个端口来说同一时间只有一个引脚可以使用中断
9.4.3 (AFIO_EXTICR1)中断寄存器配置
每个中断寄存器管理中断线不同
上面从左到右:挂起请求寄存器,中断屏蔽寄存器,软件中断事件寄存器,上升沿选择寄存器,下降沿选择寄存器
边缘检测电路