最近一段时间在学STM32,感觉都是在和寄存器打交道,首先先说下什么是寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
STM32的每个IO口有7个寄存器控制(1个IO口应该就是一组),分别是两个32位的端口配置寄存器,CRL和CRH。两个32位的数据寄存器IDR和ODR(这上面四个是重点),一个32位置位复位寄存器,一个16位复位寄存器,一个锁存寄存器LCKR.
________________________________________________________________________________________________________________
端口配置寄存器
端口配置寄存器CRL和CRH有两部分组成 CNFX和MODEX
通过设置这两个来确定模式 (1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
如果IO口是0-7的话用CRL寄存器,如果是8-15的话用CRH寄存器
使用说明: MODE 模式
00 输入模式
01 输出模式 10MHZ
10 输出模式 2MHZ
11 输出模式 50MHZ
CNF 所处模式 表达含义
00 输入 模拟输入模式
01 输入 浮空输入模式
10 输入 上拉\下拉输入模式
11 输入 保留
00 输出 推挽输出模式
01 输出 开漏输出模式
10 输出 复用功能 推挽输出模式
11 输出 复用功能开漏输出模式
使用方法:
首先是APB2总线上的外设始能寄存器,只要加外设就要将这个使能
RCC->APB2ENR |= 1<<几位 根据表来说
然后开始配置
GPIOB->CRH &= 0XFFFFFFF0; 通过与将要写数据的位进行清空
GPIOB->CRH |= 0X03; 在要写的为写内容
GPIOB->ODR = 1<<8; 在第几位写入数据
ODR是输出数据寄存器
|