新闻中心

EEPW首页>嵌入式系统>设计应用> STM32学习笔记——控制GPIO输出点亮LED灯

STM32学习笔记——控制GPIO输出点亮LED灯

作者: 时间:2016-11-28 来源:网络 收藏
一.预备知识

使用51单片机控制IO口相对来说要简单得多,最小系统搭建完毕后直接通过软件往各IO口写“1”或者写“0”即可。但使用STM32控制IO口输入输出却远没有这么容易,经过一个下午的查阅文献及探索后,略微有了头绪。

本文引用地址: //m.amcfsurvey.com/article/201611/322904.htm

个人所使用的STM32F103VBT6有100个引脚,其中有五组GPIO(GPIOA…GPIOE),每组有16个GPIO端口(GPIOx_Pin0…GPIOx_Pin15)共80个,每个GPIO端口都有:

两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH);

两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR);

一个32位置位/复位寄存器(GPIOx_BSRR);

一个16位复位寄存器(GPIOx_BRR);

和一个32位锁定寄存器(GPIOx_LCKR)。

其中各个寄存器的作用:

名称

寄存器

意义

端口配置寄存器

GPIOx_CRL

GPIOx_CRH

配置GPIO工作模式

端口输入数据寄存器

GPIOx_IDR

读取GPIO输入状态

端口输出数据寄存器

GPIOx_ODR

控制GPIO输出状态

端口位设置/复位寄存器

GPIOx_BSRR

用于位操作GPIO的输出状态的:设置端口为0或1

端口位复位寄存器

GPIOx_BRR

用于位操作GPIO的输出状态的:设置端口为0

端口配置锁定寄存器

GPIOx_LCKR

端口锁定后下次系统复位之前将不能再更改端口位的配置

每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。

输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。因此,要控制GPIOC端口,必须先使能APB2时钟。此外,STM32初始化外设第一步就是开启APB时钟。(时钟部分知识暂时知道该如此,往后再学习。)

关于GPIO各寄存器的描述:

端口配置低寄存器(GPIOx_CRL) (x=A..E):

端口配置高寄存器(GPIOx_CRH) (x=A..E):


上一页 1 2 3 下一页

评论


技术专区

关闭