stm32led寄存器操作.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stm32led寄存器操作

控制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位数据寄存器(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): 端口输入数据寄存器(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]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。 每个锁定位锁定控制寄存器(CRL, CRH)中相应的4个位。 各寄存器地址: GPIOC_CRL:0 GPIOC_CRH:0 GPIOC_ODR:0x4001100C GPIOC_BSRR:0 GPIOC_BRR:0RCC_APB2ENR:0二.点亮LED灯 外部LED灯原理图: 编程思路: 1. 定义各寄存器地址 2. 使能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----------------- * //********************************************** #includestdio.h //定义各寄存器地址 #define GPIOC_CRL (*

文档评论(0)

haocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档