单片机资源(三大资源):
程序存储空间(ROM:Read Only Memory):用来存储用户写的程序代码。
数据存储空间(RAM:Random Access Memory):用来存储程序运行过程中需要的以及产生的数据。
特殊功能寄存器(SFR:Special Function Register):用来控制单片机执行各种不同功能,用户通过读写特殊功能寄存器让单片机执行不同的功能。
单片机STM32F103ZE有512K字节的FLASH(程序存储空间),64K字节的静态SRAM(数据存储空间)
STM32的GPIO端口配置流程:
GPIO(General Purpose Input Output):STM32的IO口统称,单片机的一个重要外设。
以点亮LED为例对STM32F103的IO口输出操作流程:①配置端口时钟,②配置端口模式,③配置输出数据。LED小灯接在STM32的端口G的第7、8引脚。
1.配置端口时钟(时钟使能)
GPIO外设挂在APB2总线上。“复位和时钟控制(RCC)寄存器”的基地址是0x40021000,“APB2外设时钟使能寄存器”的偏移地址是0x18,该寄存器的第8位控制端口G的时钟使能(1:开启,0:关闭)。 开启端口G时钟使能的语句为 *(unsigned int *)0x40021018 |= (1 << 8)
2.配置端口模式
STM32的IO口模式有8种:浮空输入、上拉输入、下拉输入、模拟输入;开漏输出、推挽输出、推挽复用功能、开漏复用功能。
CNF1/0表示模式,MODE1/0表示输出速率。 模式为输入:默认MODE1和MODE0是00;模式为输出:表示三种不同的最大输出速率。
GPIO端口G的基地址是0x40012000。端口配置寄存器有高低之分(低寄存器偏移地址0x00,高寄存器偏移地址0x04),复位值是0x44444444,复位后CNFx[1:0]是01,MODEx[1:0]是00,即每个IO口复位后是浮空输入模式。若配置为推挽输出模式,速率为10MHz:即CNFx[1:0]是00,MODEx[1:0]是01(0001)。 比如:GPIO端口G的第7引脚,即配置端口低寄存器的28~31位为0001。
代码为 *(unsigned int *)0x400012000 |= (1 << 28)
3.配置输出数据
STM32的GPIO输出数据寄存器相对端口的偏移地址为0x0c。寄存器的0~15分别对应GPIO端口的16个IO口(高电平1,低电平0),复位值为0x0000 0000,默认复位后输出低电平。比如:控制GPIO端口G的第7引脚输出高电平:*(unsigned int *)0x4001200C |= (1 << 7)
程序编写
int
编译信息
Code=1348:代码占用了1348个字节的程序存储空间
Ro-data(Read Only):只读常量的大小
RW-data(Read/White):已初始化的可读写变量的大小
ZI-data(Zero Initialize):未初始化的可读写变量的大小