01、单片机简介

单片机简介

1、什么是单片机

单片机(Single-Chip Microcomputer)是一种微型计算机,是一种集成电路芯片。把具有数据处理能力的中央处理器CPU、随机存储器RAM、闪存flash、多种片上外设等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。如下图为STM32F103系列单片机的系统结构图:

对F103系列单片机内部结构的简要介绍

😀CPU:单片机的核心,用于代码的执行,数据的处理和计算等
😀Flash:闪存掉电不丢失,读写速度较慢。①用于存放代码被编译为可执行文件(代码区)和一些常量数据,②存放BootLoader程序,空间为2KB,③存储选项字节数据(即一些配置参数),空间为16B
😀SRAM:临时存储器掉电会丢失,读写速度较快。①用于划分栈空间和堆空间,②栈空间存储代码执行时临时变量的数据,③堆空间是用户自己开辟,用于存储数据
😀片上外设:具有特定的功能的设备,若GPIO,UART等
😀总线:用于CPU和存储器,CPU和外设之间的通信

2、STM32F103ZET6介绍

2.1、参数的含义

由上图所示:STM32F103ZET6属于M3内核,主频72MHz,Flash为512KB,高密度的单片机。

2.2、存储器映射

STM32单片机一共有32位地址总线,则地址由0x0000 0000 ~ 0xFFFF FFFF。而在单片机中一个基本的存储单元是一个字节,如下图所示:

那么0x00 00 00 00 ~ 0xFF FF FF FF一共有多少个字节的空间喃?
答案:一共由2^32 = 4294967296个字节(B) = 4194304KB = 4096MB = 4GB的寻址空间。所以STM32最大空间范围为4GB。

虽然可以寻址 4GB 的空间,但实际可用的存储空间(如 Flash、SRAM)要小得多。其余的地址范围可能会被映射到其他功能区域(如外设寄存器、内存映射的I/O设备等)。

具体的存储器映射如下图所示:

3、外设寄存器介绍

STM32F103ZET6该芯片是STM32F103系列里面配置非常强大的芯片。它拥有的资源包括:64KB SRAM、 512KB FLASH、 2 个基本定时器、 4 个通用定时器、 2 个高级定时器、 2 个 DMA 控制器(共 12 个通道)、 3 个 SPI、2 个 IIC、 5 个串口、 1 个 USB、 1 个 CAN、 3 个 12 位 ADC、 1 个 12 位 DAC、 1 个 SDIO 接口、1 个 FSMC 接口以及 112 个通用 IO 口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩 SRAM 和连接 LCD 等,通过 FSMC (可变静态存储控制器)驱动 LCD,可以显著提高 LCD 的刷屏速度。

由上图所示:STM32F103ZET6将片上外设的寄存器映射到起始地址为0x4000 0000的空间里面。那什么是寄存器喃?

寄存器简单来说,可以理解为功能的开关盒子,一个特定的功能对应着一个特定的开关盒子。假设向这个盒子里面写入1代表开启这个功能,那么写入0就代表关闭这个功能。而一个片上外设有很多的功能,所以与之对应的就有很多的寄存器。

而STM32将这些寄存器映射到了存储空间,则操作这些映射的空间,就代表在操作这些寄存器。如下图所示:

如上图:寄存器直接映射到与之对应的空间,直接对映射空间操作就能操作寄存器。那么怎样操作映射空间喃?
答案:使用指针,演示代码如下:

c 复制代码
/* 如上图:想要操作USART寄存器的PE写入1 */
int main(void)
{
    *(uint32_t *)(0x40013800 + 0x00) |= 0x01; //给PE写入1
}

【注意】对寄存器的映射空间进行操作时只能通过寄存器的基地址+偏移地址进行操作,即只能寻址到映射空间的起始地址,这与计算机中的内存对齐有关,如下:

c 复制代码
/* 如上图:想要操作USART寄存器的LBD写入1 */
int main(void)
{
    *(uint32_t *)(0x40013800 + 0x00) |= 0x0100; //给LBD写入1
}

//下面的错误操作
/* 如上图:想要操作USART寄存器的LBD写入1 */
int main(void)
{
    *(uint32_t *)(0x40013801) |= 0x01; //给LBD写入1
}
相关推荐
XINVRY-FPGA11 分钟前
XC7K410T‑2FFG900I 赛灵思XilinxFPGA Kintex‑7
嵌入式硬件·安全·阿里云·ai·fpga开发·云计算·fpga
YuforiaCode23 分钟前
第十四届蓝桥杯 2023 C/C++组 平方差
c语言·c++·蓝桥杯
JANYI201836 分钟前
C语言中的双链表和单链表详细解释与实现
c语言·开发语言·windows
努力努力再努力wz38 分钟前
【C++深入系列】:模版详解(上)
java·c语言·开发语言·c++
the sun341 小时前
STM32时钟树
stm32·单片机·嵌入式硬件
逼子格1 小时前
硬件工程师笔记——电子器件汇总大全
嵌入式硬件·硬件工程师·二极管·三极管·硬件工程师学习·电子器件·电路图
逼子格2 小时前
十三种通信接口芯片——《器件手册--通信接口芯片》
单片机·嵌入式硬件·硬件工程师·芯片·硬件工程师学习·电路图·通信接口芯片
刚入坑的新人编程2 小时前
数据结构——栈和队列
c语言·数据结构·c++·链表·数组
YKPG2 小时前
c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第六式】文件操作
java·c语言·数据库
浅陌pa3 小时前
08【基础学习】串口通信(三):收发数据包+数据校验
单片机·学习·51单片机