目录
一、GPIO相关
(一)、GPIO简介
GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片
的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的芯片有 GPIOA、GPIOB、GPIOC至 GPIOE共 5组 GPIO,芯片一共 100个引脚,其中 GPIO就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。
最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,如把 GPIO
引脚接入到 LED灯,那就可以控制 LED灯的亮灭,引脚接入到继电器或三极管,那就可以
通过继电器或三极管控制外部大功率电路的通断。
最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低
区分按键是否被按下。
(二)、GPIO端口寄存器配置
本次实验选择的是PA0,PB0,PC15口,PA和PB选择就要选择CRL端口低八位寄存器,PC15就要选择CRH端口高八位寄存器。所以在配置PC15的寄存器时要配置GPIOC的输入地址选择为0X40011004,输出地址CDR要选择为0X4001 100C。
GPIO 端口配置低寄存器:
GPIO 端口配置高寄存器:
二、程序设计
首先需要进行宏定义,本次实验设计用的是GPIOA_0、GPIOB_0、GPIOC_15口进行输出。
#define RCC_APB2ENR (*(unsigned int*)0x40021018)
#define GPIOA_CRL (*(unsigned int*)0x40010800)
#define GPIOA_ODR (*(unsigned int*)0x4001080C)
#define GPIOB_CRL (*(unsigned int*)0x40010c00)
#define GPIOB_CRH (*(unsigned int*)0x40010C04)
#define GPIOB_ODR (*(unsigned int*)0x40010C0C)
#define GPIOC_CRH (*(unsigned int*)0x40011004)
#define GPIOC_ODR (*(unsigned int*)0x4001100C)