STM32 ARM学习锦集一
内容简介
1、最小外围电路
2、启动模式存储器
3、映射寄存器映射
4、访问寄存器内容
5、GPIO工作模式
6、安装KEIL5
7、GPIO初始化
8、端口配置及输出模式
9、启动文件功能
10、固件库文件
一、最小外围电路
电源电路
复位电路
晶振电路
下载电路
二、启动模式
通过BOOT[1:0]引脚选择三种;
设置串口下载代码,需配置BOOT0=1,BOOT1=0;
设置一按复位键就开始跑代码,需配置BOOT0=0,任何值BOOT1;
将内置SRAM设置为启动区,需配置BOOT0=1,BOOT1=1;
三、存储器映射
1、存储器地址通常是由MCU厂商或用户分配,而本身是不具有地址信息的,这一给存储器分配地址的过程为存储器映射;
四、寄存器映射
1、寄存器即为自己使用时设定的名称,该名称为给具有特定功能内存单元所取,且该单元已分配好地址;
2、而这个设定过程即为寄存器映射;
五、访问寄存器内容
1、采用的方式主要是通过指针的使用来操作STM32内存单元;
如设置STM32的GPIOC 0管脚输出低电平;
首先确定GPIOC挂接于APB2总线上,确定其地址;
STM32总线地址
总线名称 总线基地址 相对外设基地址的偏移
APB1 0x4000 0000 0x0
APB2 0x4001 0000 0x0001 0000
AHB 0x4001 8000 0x0001 8000
3、宏定义外设基地址
#define MS_BASE ((unsigned int)0x40000000)
4、分别定义APB2总线基地址
#define APB2MS_BASE (MS_BASE + 0x00010000)
5、宏定义端口外设地址
#define GPIOC_BASE (APB2MS_BASE + 0x1000)
定义GPIOC端口寄存器地址
#define GPIOC_BSRR *(unsigned int*)(GPIOC_BASE+0x10)
A、BSRR寄存器的BR0置 1为清零,GPIOC引脚0管脚,输出低电平;GPIOC_BSRR = (0x01<
B、BSRR 寄存器的BS0置1,GPIOC 0管脚输出高电平;
GPIOC_BSRR = 0x01<<0;
读IDR寄存器可知GPIOC全部引脚电平状态;
输入数据寄存器(GPIOx_IDR),其在每个APB2时钟周期都会捕捉I/O引脚上的数据;
unsigned int temp;
temp = GPIOC_IDR;
浅谈GPIO结构
六、GPIO工作模式
通用输入输出端口统称;
输入浮空
输入高阻抗,外部干扰对输入状态下的影响较小
输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
只可输出低电平,输出高电平需要外接上拉;
开漏输出具有线与功能,当内部出现一个总线动作为低,则输出全部为低,如I2C的使用;
开漏复用功能
7、推挽式输出
8、推挽式复用功能
推挽输出开关效率高,驱动能力强;
灌电流即为输出高电平,电流输出到负载;
七、安装KEIL5
Keil5需要单独安装芯片包,否则无法选择芯片类型,Keil4则可以不用此操作。
芯片包直接双击安装在KEIL5相应的目录即可;
使用注册机破解;
1、管理员身份运行KEIL5;
2、File-LicenseManagement;
3、复制代码;
4、Add LIC,完成破解;
八、GPIO初始化
1、确定GPIO的工作模式和工作速度
通过配置寄存器GPIOx_CRL、GPIOx_CRH;
输出内容
置/复位寄存器:BSRR;
数据输出寄存器:ODR;
九、端口配置及输出模式
十、启动文件功能
1、初始化堆栈指针SP;
2、初始化程序计数器指针PC;
3、设置堆/栈的大小;
A、堆是程序在运行时,申请/给予内存的过程,由系统自动分配释放;
B、栈/堆栈是指一种使用堆的方法-先进后出,由程序员分配释放;
4、设置中断向量表入口地址;
5、配置外部SRAM作为数据存储器;
6、调用 SystemInit() 函数配置系统时钟;
ARM Cortex微控制器软件接口标准CMSIS;
十一、固件库文件
1、标准外设库称为固件库;
2、是一个固件函数包,由程序、数据结构、宏组成;
3、使用固件库可减少程序编写开发时间;