机电传动控制 实验2点亮LED.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
实验一 如何点亮一个LED 实验目的 掌握STM32F103通用GPIO口作为推挽输出使用的设置步骤; 掌握STM32 F103通用GPIO各个寄存器的作用; 掌握控制STM32通用GPIO输出状态的方法; 实验内容 在实验1的基础之上新建LED.h、delay.h、LED.c、delay.c实现LED1、LED2、LED3、LED4周期性的亮和灭。 预备知识 C语言基本知识; STM32 GPIO工作方式; STM32时钟树结构; STM32通用GPIO寄存器。 实验设备及工具 硬件:PC机、STM32开发板、JLINK_V8仿真器; 软件:KEIL MDK4.12、JLINK_V8驱动。 实验原理及说明 板载LED原理图: 配套的STM32开发板配备4个LED,原理图如下图所示: 发光二极管的阴极接入GPIO,如果将GPIO置低则LED亮起,如果将GPIO置高则LED熄灭。 STM32通用GPIO工作模式: STM32 的 IO 口可以由软件配置成 8 种模式: 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 推挽输出 推挽式复用功能 开漏复用功能 每个 IO 口可以自由编程,单IO口寄存器必须要按 32 位字被访问。 STM32 的很多IO口都是5V兼容的,这些 IO 口在与 5V 电平的外设连接的时候很有优势,具体哪些 IO 口是 5V 兼容的,可以从该芯片的数据手册管脚描述章节查到( I/O Level 标 FT 的就是 5V 电平兼容的)。 STM32端口IO寄存器简介 STM32 的每个IO端口都有7个寄存器来控制。他们分别是: 配置模式的 2个32 位的端口配置寄存器 CRL 和 CRH; 2个32 位的数据寄存器 IDR 和 ODR; 1个32 位的置位/复位寄存器BSRR; 1个 16 位的复位寄存器 BRR; 1个32 位的所存寄存器 LCKR; 这里我们仅介绍常用的几个寄存器,我们常用的 IO 端口寄存器只有4个:CRL、CRH、IDR、ODR。 端口配置低寄存器(GPIOx_CRL) (x=A..E): 通过此寄存器配置GPIOx(x=A/B../G)的低8位IO的工作模式和输出速度,上电默认值是0x4444 4444即复位默认浮空输入模式;CRH控制GPIOx(x=A..E)的高8位IO功能与CRL相同。其详细描述如下: 端口输出数据寄存器(GPIOx_ODR) (x=A..E): 此寄存器控制GPIO端口的状态,通过置1和置0来控制IO口状态。其详细描述如下: IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以16 位的形式读出。该寄存器各位的描述如下图所示: 要想知道某个IO口的状态,你只要读这个寄存器,再看某个位的状态就可以了。使用起来是比较简单的。 程序流程 实验步骤 拷贝实验1工程模板并保存在..\STM32工程文件目录下重命名为“实验2点亮LED”; 新建LED.c、LED.h、delay.c、delay.h并保存在“实验2点亮LED ”..\bsp目录下。 修改“实验2点亮LED ”Project目录下的KEIL工程文件并重命名为“LED.uvproj” 打开工程文件并进行如下修改 添加工程文件如下: 修改includes.h #ifndef __INCLUDES_H__ #define __INCLUDES_H__ #include stm32f10x.h #includeApplication.h #includeLED.h #includedelay.h #endif 修改LED.h #ifndef __LED_H__ #define __LED_H__ /*LED_1相关*/ #define LED1_OFF GPIOB-ODR|=(110) #define LED1_ON GPIOB-ODR=~(110) /*LED_2相关*/ #define LED2_OFF GPIOE-ODR|=(114) #define LED2_ON GPIOE-ODR=~(114) /*LED_3相关*/ #define LED3_OFF GPIOE-ODR|=(112) #define LED3_ON GPIOE-ODR=~(112) /*LED_4相关*/ #define LED4_OFF GPIOE-ODR|=(110) #define LED4_ON GPIOE-ODR=~(110) /*初始化函数*/ void LED_Init(void); extern uint8_t LED_Status[5]; #endif 修改LED.c #includeincludes.h /* ------------------------

文档评论(0)

卖报的小行家 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档