stm32led寄存器操作

stm32led寄存器操作

ID:40754926

大小:54.00 KB

页数:6页

时间:2019-08-07

stm32led寄存器操作_第1页
stm32led寄存器操作_第2页
stm32led寄存器操作_第3页
stm32led寄存器操作_第4页
stm32led寄存器操作_第5页
资源描述:

《stm32led寄存器操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、控制GPIO输出点亮LED灯——直接操作存储器一.预备知识使用51单片机控制IO口相对来说要简单得多,最小系统搭建完毕后直接通过软件往各IO口写“1”或者写“0”即可。但使用STM32控制IO口输入输出却远没有这么容易,经过一个下午的查阅文献及探索后,略微有了头绪。个人所使用的STM32F103VBT6有100个引脚,其中有五组GPIO(GPIOA…GPIOE),每组有16个GPIO端口(GPIOx_Pin0…GPIOx_Pin15)共80个,每个GPIO端口都有:两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH);两个32位数据寄存

2、器(GPIOx_IDR,GPIOx_ODR);一个32位置位/复位寄存器(GPIOx_BSRR);一个16位复位寄存器(GPIOx_BRR);和一个32位锁定寄存器(GPIOx_LCKR)。其中各个寄存器的作用:名称寄存器意义端口配置寄存器GPIOx_CRLGPIOx_CRH配置GPIO工作模式端口输入数据寄存器GPIOx_IDR读取GPIO输入状态端口输出数据寄存器GPIOx_ODR控制GPIO输出状态端口位设置/复位寄存器GPIOx_BSRR用于位操作GPIO的输出状态的:设置端口为0或1端口位复位寄存器GPIOx_BRR用于位操作GPIO的

3、输出状态的:设置端口为0端口配置锁定寄存器GPIOx_LCKR端口锁定后下次系统复位之前将不能再更改端口位的配置每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。因此,要控制GPIOC端口,必须先使能APB2时钟。此外,STM32初始化外设第一步就是开启APB时钟。(时钟部分知识暂

4、时知道该如此,往后再学习。)关于GPIO各寄存器的描述:端口配置低寄存器(GPIOx_CRL)(x=A..E):端口配置高寄存器(GPIOx_CRH)(x=A..E):端口输入数据寄存器(GPIOx_IDR)(x=A..E):端口输出数据寄存器(GPIOx_ODR)(x=A..E):端口位设置/复位寄存器(GPIOx_BSRR)(x=A..E):端口位复位寄存器(GPIOx_BRR)(x=A..E):端口配置锁定寄存器(GPIOx_LCKR)(x=A..E):当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0

5、]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL,CRH)中相应的4个位。各寄存器地址:GPIOC_CRL:0x40011000GPIOC_CRH:0x40011004GPIOC_ODR:0x4001100CGPIOC_BSRR:0x40011010GPIOC_BRR:0x40011014RCC_APB2ENR:0x40021018二.点亮LED灯外部LED灯原理图:编程思路:1.定义各寄存器地址2.

6、使能APB2时钟3.配置GPIOC各端口输出模式4.利用BRR、BSRR、ODR寄存器点亮LED灯并循环流水灯具体编程:新建工程并设置好环境,添加c文件,键入如下程序://**********************************************//*通过直接操作存储器控制GPIO输出点亮LED灯*//*LED1=GPIOC_Pin6;*//*LED2=GPIOC_Pin7;*//*LED3=GPIOC_Pin8;*//*LED4=GPIOC_Pin9;*//*------------------Sah_Pah---------

7、--------*//**********************************************#include//定义各寄存器地址#defineGPIOC_CRL(*(volatileunsignedlong*)(0x40011000))#defineGPIOC_CRH(*(volatileunsignedlong*)(0x40011004))#defineGPIOC_ODR(*(volatileunsignedlong*)(0x4001100C))#defineGPIOC_BSRR(*(volatileun

8、signedlong*)(0x40011010))#defineGPIOC_BRR(*(volatileunsignedlong*)(0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。