A系列:面向尖端,基于虚拟内存的操作系统
R系列:针对实时系统
M系列:针对MCU微控制
STM32是cortex-M3内核,采用ARM-V7哈弗结构
传统的ARM7是采用ARMv4T冯氏结构
Cortex-M3(ARM-V7)比ARM7 TDMI各方面的性价比更优
STM32芯片:内核部分、外设部分、调试系统、总线、存储器、时钟
复位部分
STM32供电电压在2-3.6V之间正常工作
STM32 F 103 Z E T 6
F:通用型
101:基本型 102:USB基本型 103:增强型 105、107:互联型
U/C/R/V/Z:36 48 64 100 144
4/6/8/B/C/D/E:16K 32K 64K 128K 256K 384K 512K
H/T/U/Y:BGA LQFP VFQFPN WLCSP64
6: 工业级稳定-40到85℃
7:工业级温度-40到105℃
DMA:动态数据存储,为CPU减负,直接进行数据交换
BOOT0 BOOT1
0 X :
0 X :从片上Flash代码区域启动,执行固件
1 0 :系统存储器BootLoader区域,引导进行串口1下载
1 1 :执行SRAM区域代码
先RST低,DTR高,所以RESET低电平复位,单片机复位
后RST低,DTR低,此时RESET为高复位结束,B0为高,进入ISP
通过CH340G的rst和dtr引脚间接控制单片机的RST和BOOT0引脚,实现的程序一键式下载
CORE:core_cm3.c core_cm3.h startup_stm32f10x_hd.s
OBJ:过程文件和输出文件hex
STM32F10x_FWLib:STM32固件库包inc和src
USER:main.c stm32f10x.h stm32f10x_conf.h
stm32f10x_it.c stm32f10x_it.h system_stm32f10x.c
system_stm32f10x.h
SYSTEM:原子编写的usart.c usart.h
delay.c delay.h
system.c system.h
HARDWARE:自建外设分类文件夹
注意.h文件的路径包含(到每级文件夹)
全局宏定义的关键字
手册中有FT标识部分的表示可以容忍5V电压
GPIO口的使用:打开相应时钟
配置相应的模式
配置相应的速度
浮空输入模式:自由的输入端,电平传输最终到达相应的
寄存器,读取寄存器值
模拟输入模式:自由输入端,电压被采样到相应的外设部
分,不到达输入寄存器
输出高低电平时,写位设置/清除寄存器---->输出数据寄
存器,控制后续电路的输出电平极性
GPIOx_CRL:端口配置低8位寄存器,每4位控制一个IO
例:PA0-PA7 PA0(3-2:配置输入/输出速度模式)
(1-0:配置输入输出模式细化)
GPIOx_IDR:低16位有效,对应相应IO口的输入电平0/1 在输出模式下也可以读取其上电平,以验证
GPIOx_ODR:低16位有效,对应相应IO口的输出电平0/1
在输入模式下兼有上下拉的选择功能
GPIO_BSRR:端口位设置/清除寄存器
0-15位对应位1,输出高,低无效
16-31位对应位1,输出低,低无效
间接控制ODR寄存器设置IO口
每个IO口都可以作为中断输入
使能IO口时钟 RCC_APB2PeriphColckCmd();
初始化IO口模式,调用GPIO_Init();
操作IO口:GPIO_SetBits(); GPIO_ResetBits();
不同方法操作IO口,最终都是操作相应的底层寄存器ODR/IDR
位带操作:单个IO口的位重新定义为新的地址,可以直接操作地址
如:PAout(1)=1;
位操作:GPIOA->CRL&=0XFFFFFF0F;
GPIOA->CRL|=0XFFFFFF4F; //0101
GPIOA->ODR|=1<<5;
TIMx->SR=(unint16_t)~TIM_FLAG;
Define宏定义:
#define sysclk_freq_72MHz 72000000
前为所定义的宏名,后为常数 表达式 格式串等
ifdef:条件编译
#ifndef
#define
....
#end if
Typedef:类型别名
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef unsigned short int uint16_t;
STM32,一切底层配置,最终都是配置相关寄存器
sfr P0=0X80;//特殊功能寄存器地址
P0=0X00;//特殊功能寄存器赋值
GPIOA->ODR=0X00000000;
寄存器地址位置映射:
重要的是在顶层中将特定位置的顺序地址
强制类型转换:划分为一个结构体类型,方便查询使用
STM32时钟框图
任何外设使用之前,必须使能相应的时钟
时钟结构体类型定义:与时钟相关寄存器的集合
时钟相关库函数:
STM32的USB slave模式下D+需要接上拉电阻到VCC
USB转串口时只需要D+和D-引脚
Mini和Micro的座子的第4脚ID引脚默认下悬空,正常工作