stm32F103VET6系统框图
驱动单元 被动单元
ICode总线读取Flash Flash存程序转换成的指令和常量
DCode总线读SRAM和Flash SRAM存变量
System总线读寄存器
DMA总线把数据搬到寄存器
DCode总线和DMA总线同时读取数据,总线总裁的作用就出来了
FSMC接外存
AHB系统总线接RCC SDIO外设
桥接器连APB1 APB2接外设
STM32F103VET6的存储器映射
ST给存储器分配地址叫存储器映射
8个512MB BANK块
BANK0是Flash用64KB BANK1是SRAM用64KB BANK2是外设
BANK3 BANK4 BANK5是FSMC BANK6不用
BANK7是Cortex-M3内外设
编程:sbit是重命名 要有= 空格 给每一位重命名
寄存器映射:sfr也是重命名 也要有= 空格 将寄存器地址命名一个名字
GPIO框图解读:
I/O引脚不能直接接电机要用驱动电路隔离不然整个芯片烧坏,当输入电压高于3.3伏会流向上面的二极管而不会流入里面防烧坏,当I/O引脚低于0伏时下面的二极管流出引脚
推挽输出:数据寄存器相应位为1时,反向器变为0,上面的MOS管导通推到GPIO为VDD高电平,数据寄存器为0时,反向器变为1,下面的MOS管导通把GPIO拉到和VSS一样为低电平,
开漏输出:上面MOS管禁止,当数据寄存器为0时,变为1,下面MOS把I/O口拉为低电平,当为1时,变为0,I/O口为高阻态,如果要输入高电平要外接上拉电阻和电源VDD,比如传感器要5V驱动,VDD就要接5V
位设置/清除寄存器会写入输出数据寄存器,高16位全写1让ODR清0,低16位全写1让ODR置1,同时写1低16位优先
配置低寄存器和高寄存器同时控制GPIO的输入输出模式,4位对应1个GPIO端口,比如GPIOB有16个引脚,每4位控制1个端口
复用功能输出来自UART串口的数据寄存器
上拉输入/下拉输入配置通过端口配置低高寄存器和位设置/清除寄存器,上拉输入位设置全1,就是低16位全1,下拉输入位清除全1,就是高16位全1
高于2V施密特触发器就选择1,低于1.2V施密特触发器就选择0到输入,就是转换为高低电平,复用功能输入经过施密特触发器,模拟输入不经过施密特触发器,这两个功能未知