/*******************************************************************************
************************* CRL CRH 寄存器配置**********************************
****CNFx[1:0]:端口x配置位(x = 8…15)
**
****在输入模式(MODE[1:0]=00) :
** 00:模拟输入模式
** 01:浮空输入模式(复位后的状态)
** 10:上拉/ 下拉输入模式
** 11:保留
****在输出模式(MODE[1:0]>00):
**
** 00:通用推挽输出模式
** 01:通用开漏输出模式
** 10:复用功能推挽输出模式
** 11:复用功能开漏输出模式
**
****MODEx[1:0]:端口x的模式位(x = 8…15)
**
** 00:输入模式( 复位后的状态)
** 01:输出模式,最大速度10MHz
** 10:输出模式,最大速度2MHz
** 11:输出模式,最大速度50MHz
*******************************************************************************/
/*LCKK[15:0]:锁键
该位可随时读出,它只可通过锁键写入序列修改。
0:端口配置锁键位激活
1:端口配置锁键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住。
*******************************************************************************
锁键的写入序列:
写1 -> 写0 -> 写1 -> 读0 -> 读1
最后一个读可省略,但可以用来确认锁键已被激活。
注:在操作锁键的写入序列时,不能改变LCK[15:0]的值。
操作锁键写入序列中的任何错误将不能激活锁键。
*/
/*------------------------ General Purpose and Alternate Function IO ---------*/
typedef struct
{
vu32 CRL; /* 配置寄存器*/
vu32 CRH;
vu32 IDR; /* 输入寄存器 只能以16位的数据读出*/
vu32 ODR; /* 输出寄存器 只能以16位的数据写数据*/
vu32 BSRR; /* 端口置高 可以对某个端口进行拉高操作*/
vu32 BRR; /* 端口拉低 可以对某个端口进行拉低操作*/
/* LCKK[15:0]:锁键
该位可随时读出,它只可通过锁键写入序列修改。
0:端口配置锁键位激活
1:端口配置锁键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住*/
vu32 LCKR; /* 锁定端口的模式,每个锁定位锁定控制寄存器(CRL, CRH) 中相应的4个位*/
} GPIO_TypeDef;
参考手册上都有的, 只是写到头文件里面, 下次就不用翻参考手册了
|