STM32是一种基于ARM Cortex-M内核的32位微控制器,它有多种型号和封装,每种型号的引脚数量和功能也不同。以常用的STM32F103C8T6为例,介绍它的引脚分布和控制方法。
STM32F103C8T6单片机共有48个引脚,芯片从左上角的小白点开始作为1号引脚,以逆时针方向依次排列。这些引脚可以分为以下几类:
要控制GPIO引脚的状态和功能,需要访问芯片内部的寄存器。寄存器是一种特殊的内存单元,它可以存储和操作一些数据。STM32F103C8T6单片机有多个寄存器组,每个寄存器组都有一个基地址和一些偏移地址。通过基地址加上偏移地址,就可以找到对应的寄存器的地址。
例如,GPIOB端口的输出数据寄存器ODR的地址是0x40010C0C(基地址0x40010000加上偏移地址0x00000C0C)。ODR寄存器是32位的,低16位有效,对应着16个外部IO。写0/1对应的IO则输出低/高电平。
要访问寄存器,我们可以使用C语言指针的操作方式,或者使用STM32提供的宏定义来简化代码。
例如,要让GPIOB端口全部输出高电平,可以写: