1、射频识别技术原理射频识别技术原理与应用实战与应用实战本项目将首先介绍二维码的扫描实现过程,让读者对物联网和自动识别技术有一个感性认识,然后结合RFID射频识别开发平台和Keil Vision4开发环境,初步学习RFID软硬件平台的基本用法,从而为后续RFID读写器设计奠定基础。项目二RFID基础认知目录目录CONTENTCONTENT02任 务 二 L E D 灯 控 制01任 务 一 二 维 码 识 别二维码识别一一务务任任二 维 码 识 别一、QR Code二维码二维码的信息可以是文本、字符或图片,还可以是简短的视频。信息输入后,首先要选择一种信息编码的码制。目前常用的二维码大多是以QR
2、Code开源工具来编码的。QR Code是一种矩阵式二维码,它是采用统一的黑白方块的组合,而不是不同宽度的条与空的组合,它能够提供更高的信息密度,存储更多的信息。实训准备二 维 码 识 别知识库QR Code在一个矩形空间内,通过黑白像素在矩阵中的不同分布来进行编码。计算机使用二进制(“0”和“1”)来存储和处理数据,而在二维码中,用黑白矩形表示二进制数据(黑色表示二进制“1”,白色表示二进制“0”),黑白的排列确定了矩阵式二维码的内容,以便于计算机对二维码符号进行编码和读取。二 维 码 识 别目前,QR Code是被广泛使用的一种二维码,它解码速度快,可以存储多种类型。QR Code的基本结
3、构如图2-1所示。空白区位置探测图形位置探测图形分隔符定位图形校正图形格式信息版本信息数据和纠错码字功能图形编码区格式符号图2-1 QR Code的基本结构二 维 码 识 别位置探测图形、位置探测图形分隔符、定位图形,用于对二维码的定位。对每个QR Code来说,位置都是固定存在的,只是大小规格会有所差异。校正图形规格确定,也就确定了校正图形的数量和位置。格式信息表示该二维码的纠错级别,分为L,M,Q,H。版本信息即二维码的规格,QR Code符号共有40种规格的矩阵(一般为黑白色),从2121(版本1),到177177(版本40),每一版本符号比前一版本每边增加4个模块。数据是实际保存的二维
4、码信息,纠错码字用于修正二维码损坏带来的错误。二 维 码 识 别二维码的基本编码过程如下。(一)数据分析确定编码的字符类型,按相应的字符集转换成符号字符;选择纠错等级,在规格一定的条件下,纠错等级越高,其真实数据的容量越小。(二)数据编码将数据字符转换为位流,每8位一个码字,整体构成一个数据的码字序列。知道这个数据码字序列就相当于知道了二维码的数据内容。QR Code存储资料容量如表2-1所示。表2-1 QR Code存储资料容量数据类型容 量数字最多7 089字符字母最多4 296字符二进制数(8 bit)最多2 953字节日文汉字/片假名最多1 817字符(采用Shift JIS)中文汉字
5、最多984字符(采用UTF-8);最多1 800字符(采用BIG5)二 维 码 识 别QR Code模式编码如表2-2所示。表2-2 QR Code模式编码模式指示符ECI0111数字0001字母数字00108位字节0100日本汉字1000中国汉字1101结构链接0011FNCI0101(第一位置)1001(第二位置)终止符(信息结尾)0000二 维 码 识 别数据可以按照一种模式进行编码,以便进行更高效的解码。例如,对数据01234567编码(版本1-H),方法如下。(1)对数据分组:012 345 67(2)转换成二进制:0120000001100345010101100167 10000
6、11(3)转换成序列:0000001100 0101011001 1000011(4)字符数转换成二进制:80000001000(5)加入模式指示符:0001:0001 0000001000 0000001100 0101011001 1000011对于字母、中文、日文等只是分组的方式、模式等内容有所区别,但基本方法是一致的。二 维 码 识 别(三)纠错编码按需要将码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。二维码的纠错等级及其对应的纠错水平(即错误修正容量)如表2-3所示。表2-3 错误修正容量纠错等级纠错水平L7%的字码可被
7、修正M15%的字码可被修正Q25%的字码可被修正H30%的字码可被修正二 维 码 识 别(四)构造最终数据信息在规格确定的条件下,将上面产生的序列按次序放入分块中,按规定把数据分块,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块按顺序构成一个序列,添加到原先的数据码字序列后面。如:D1,D12,D23,D35,D2,D13,D24,D36,D11,D22,D33,D45,D34,D46,E1,E23,E45,E67,E2,E24,E46,E68,在二维码规格和纠错等级确定的情况下,其实它所能容纳的码字总数和纠错码字数也就确定了,比如版本10,纠错等级是H时,总共能容纳346个码字
8、,其中含224个纠错码字。就是说二维码区域中大约1/3的码字是冗余的。对于这224个纠错码字,它能够纠正112个替代错误(如黑白颠倒)或者224个拒读错误(无法读到或者无法译码),这样纠错容量为:112/346=32.4%。二 维 码 识 别(五)构造矩阵将探测图形、分隔符、定位图形、校正图形和码字模块放入矩阵中。把上面的完整序列填充到相应规格的二维码矩阵的区域中,如图2-2所示。剩余位E9 D 1 0 D 7 D 8 D 1 3 D 9 D 1 5 D 1 2 D 1 4 D 1 1 D 6 D 1 6 D 1 7 D 2 2 D 2 3 D 2 1 D 2 0 D 1 9 D 3 D 1
9、D 2 D 4 D 5 D 1 8 E 5 E 6 E 4 D 2 4 D 2 6 D 2 5 D 2 3 E 3 E 1 E 2 D 2 8 D 2 7 E 1 5 E 1 6 E 1 4 E 7 E 1 0 E 8 E 1 2 E 1 3 E 1 1 图2-2 二维码矩阵二 维 码 识 别(六)掩模将掩模图形用于符号的编码区域,使得二维码图形中的深色和浅色(黑色和白色)区域能够比率最优地分布(接近1 1)。(七)格式和版本信息生成格式和版本信息放入相应区域内。版本7-40都包含了版本信息,没有版本信息的全为0。二维码上两个位置包含了版本信息,它们是冗余的。版本信息共18位,63的矩阵,其中
10、6位是数据位,如版本号8,数据位的信息是001000,后面的12位是纠错位。至此,二维码的编码流程基本完成,可以使用第三方开发包ZXing完成编码过程。二 维 码 识 别二、二维码开源工具ZXingZXing是Google公司提供的一个开放源码的,用Java实现的多种格式的一维/二维条码图像处理库,它包含了联系到其他语言的端口。ZXing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。ZXing的目标是能够对QR编码、Data Matrix、UPC等的一维条形码进行解码,它提供了多种平台下的客户端,包括J2ME、J2SE和Android等。二 维 码 识 别(1)了解二维码扫描的实现过程
11、。实训目的(2)掌握二维码开源工具(ZXing)的用法。二 维 码 识 别(1)二维码开源工具(ZXing)的使用。实训内容(2)二维码的扫描。二 维 码 识 别(1)PC机一台(搭建好Android开发环境)。实训设备(2)物联网智能网关设备一台。(3)物联网智能网关配套光盘一张。二 维 码 识 别(1)打开物联网智能网关设备,如图2-3所示。实施步骤图2-3 物联网智能网关二 维 码 识 别(2)检查SD卡是否插入SD卡槽,如图2-4所示。如果未插入SD卡槽,则先把SD卡插到卡槽内再继续下一步;如果已插入SD卡槽,则直接进行下一步。图2-4 将SD卡插入卡槽SD卡已插入卡槽,符合实训要求二
12、 维 码 识 别(3)检查拨码开关是否正确,拨码开关应该是SW4组全部拨到下面,如图2-5所示;SW5组第7个拨到上面,其余全部拨到下面,如图2-6所示。图2-5 SW4开关组 图2-6 SW5开关组二 维 码 识 别(4)将物联网智能网关标配的电源适配器的输入端插到家用插座上,如图2-7所示;输出端接到物联网智能网关的J1口,如图2-8所示。图2-7 连接电源 图2-8 J1口将电源适配器输出端接到此口处二 维 码 识 别(5)将摄像头连接到物联网智能网关的USB口,如图2-9所示。图2-9 将摄像头连接到USB口 图2-10 智能网关电源开关(6)打开物联网智能网关的电源开关,如图2-10
13、所示。二 维 码 识 别(7)按动ON/OFF开关,启动物联网智能网关,如图2-11所示。(8)物联网智能网关启动后,界面如图2-12所示。图2-11 智能网关ON/OFF开关 图2-12 智能网关启动后界面二 维 码 识 别(9)按照图2-13所示方法进行滑动解锁,解锁后界面如图2-14所示。图2-13 滑动解锁界面 图2-14 解锁后界面二 维 码 识 别(10)将物联网智能网关标配数据线的小端(OTG端)与物联网智能网关的OTG口相连,如图2-15所示,另一端(即USB端)与电脑相连。(11)在电脑上运行360手机助手程序,360手机助手运行后,会自动连接上物联网智能网关,此时物联网智能
14、网关的界面如图2-16所示。图2-15 智能网关的OTG口图2-16 智能网关的界面二 维 码 识 别(12)将条码扫描应用的Apk安装到物联网智能网关上,如图2-17图2-20所示。图2-19 安装过程 图2-20 安装成功后关闭该界面图2-17 选择用360Apk安装助手安装 图2-18 选择开始安装二 维 码 识 别(13)将条码扫描软件安装到物联网智能网关上之后,按动物联网智能网关上的BACK按钮,如图2-21所示,此时物联网智能网关的界面如图2-22所示,提示是否退出360手机助手,点击“确定”按钮,关闭物联网智能网关上的360手机助手界面。图2-21 BACK按钮图2-22 退出3
15、60手机助手二 维 码 识 别(14)退出360手机助手后,点击应用列表项,如图2-23所示,进入应用列表界面。图2-23 点击进入应用列表(15)在应用列表界面中,找到并点击刚刚安装的条码扫描应用“条码扫描”,启动该应用,界面如图2-24所示。点击界面下方的选项卡,可以进入到相应的界面。图2-24 条码扫描应用的主界面二 维 码 识 别(16)打印一张二维码标签纸,如图2-25所示,将摄像头对准二维码进行扫描,如图2-26所示。图2-25 二维码图片图2-26 扫描二维码图片二 维 码 识 别(17)扫描出二维码信息,如图2-27所示。图2-27 扫描结果显示界面(18)返回到程序主界面,点
16、击返回图标,在弹出的对话框中点击“确定”按钮,退出系统,至此本实训结束。二 维 码 识 别验证二维码扫描是否成功。成果检验熟 悉 R F I D 与 物 联 网自我考核(1)二维码与一维码的区别是什么?(2)二维码可以应用在哪些方面?LED灯控制二二务务任任L E D 灯 控 制一、读写器读写器是读取和写入电子标签内存信息的设备,它作为数据交换的一环,将前端电子标签所包含的信息传递给后端的计算机网络。读写器有多种形式,包括固定式读写器、手持式读写器、工业读写器和OEM读写器等,选择时还需要考虑天线与读写器模块是否分离。读写器的基本组成包括射频模块、控制处理模块和天线等。实训准备二、控制器本实训
17、使用的RFID读写器芯片采用的微控制器为STM32F103ZET6。STM32系列单片机是ST(意法半导体)推出的一种微控制器,它基于为要求高性能、低成本、低功耗的嵌入式应用而专门设计的ARM Cortex-M3内核。STM32按性能分成两个不同的系列,即STM32F103“增强型”系列和STM32F101“基本型”系列。STM32F103“增强型”系列时钟频率达到72 MHz,是同类产品中性能最高的产品。其性能优势表现在72 MHz CPU,多达20 KB SRAM,212位ADC温度传感,PWM定时器,CAN,USB。STM32F101“基本型”系列时钟频率为36 MHz,以16位产品的价
18、格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。L E D 灯 控 制两个系列都内置32 KB到128 KB的内存,不同的是SRAM的最大容量和外设接口的组合。时钟频率为72 MHz时,从内存执行代码,STM32功耗36 mA,相当于0.5 mA/MHz,是32位市场上功耗最低的产品。知识库ARM Cortex-M3内核的优势如下:(1)高性能:具有1.25 DMips/MHz的性能,而ARM7TDMI只有0.95 DMips/MHz。(2)外设一流:1 s的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18 MHz的I/O翻转速度。(3)低功耗:72 MHz时消耗
19、36 mA(所有外设处于工作状态),待机时下降到2 A。(4)集成度高:复位电路、低电压检测、调压器、精确的RC振荡器等。(5)简单结构及易用的工具。L E D 灯 控 制三、GPIO简介GPIO亦称通用输入输出接口,通俗地讲就是引脚集,通过输出高低电平或者通过读入高低电平状态,每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外地写入I/O寄存器。在APB2上
20、的I/O脚可达18 MHz的翻转速度。GPIO是单片机控制器的外围设备,通过寄存器操作GPIO引脚。用户可以通过GPIO引脚和硬件进行数据交互,控制硬件(如LED、蜂鸣器等)工作,读取硬件的工作状态信号(如中断信号等),应用非常广泛。GPIO的优点表现在以下几个方面。L E D 灯 控 制低功耗(大约1 A,C的工作电流则为100 A)。内置I2C从机接口,即使在待机模式下也能够全速工作。封装尺寸小(最小的封装尺寸为3 mm3 mm QFN)。成本低,没有用的功能可以不集成。不需要编写额外的代码和文档,也不需要任何维护工作。灵活的灯光控制,内置多路高分辨率的PWM输出。灯光效果好,匹配的电流输
21、出确保均匀的显示亮度。可预先确定响应时间,缩短或确定外部事件与中断之间的响应时间。布线简单,仅需使用2条I2C总线或3条SPI总线。L E D 灯 控 制提示根据STM32中文参考手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每位可以由软件分别配置成多种模式。L E D 灯 控 制四、Keil Vision4软件随着单片机技术的不断发展,从普遍使用汇编语言逐渐发展为使用高级语言开发,单片机的开发软件也在不断地发展。2009年2月,美国Keil Software公司发布的Keil Vision4就是将用高级语言编写的源程序汇编成机器可以执行的代码。Keil Vision4提供了包括编译
22、器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。(一)Keil Vision4安装首先请从正规渠道购买或者从Keil官方网站(http:/ Vision4软件。本书采用的版本为Keil Vision4(V4.12),其安装包位于本书“教学资源包”“相关软件和驱动”“Keil uVision4(V4.12)”文件夹下。L E D 灯 控 制(1)打 开“K e i l uVision4(V4.12)”文件夹,双击运行“主程序MDK412.exe”,进入安装向导界面,单击“Next”按钮,如图2-28所示。图2-2
23、8 安装向导界面L E D 灯 控 制(2)选中“I agree to a l l t h e t e r m s o f t h e p r e c e d i n g L i c e n s e Agreement”复选框,然后单击“Next”按钮,如图2-29所示。图2-29 同意安装条款选中此复选框L E D 灯 控 制(3)单击“Browse”按钮,选好安装路径,然后单击“Next”按钮,如图2-30所示。图2-30 选择安装路径安装路径L E D 灯 控 制(4)根据实际情况填写姓名、单位及邮箱地址等相关信息,然后单击“Next”按钮,如图2-31所示。图2-31 填写用户相关信息
24、L E D 灯 控 制(5)正式开始安装,并显示安装进度,如图2-32所示。图2-32 安装进度L E D 灯 控 制(6)在安装完成界面中保持默认设置,单击“Finish”按钮,如图2-33所示。至此,完成Keil Vision4软件的安装。图2-33 安装完成L E D 灯 控 制(二)Keil Vision4注册图2-34 Keil Vision4桌面图标 图2-35 执行许可证管理操作(1)双击电脑桌面上新出现的Keil Vision4快捷方式图标,如图2-34所示,进入Keil Vision4软件主界面,然后选择“File”“License Management”菜单命令,如图2-3
25、5所示。L E D 灯 控 制图2-36 Keil Vision4软件注册(2)此时弹出“License Management”对话框,将购买软件时所获得的序列码输入到下方的“New License ID Code”编辑框中,如图2-36所示,然后单击“Add LIC”按钮,系统会提示“LIC Added Sucessfully”,到此注册完毕,单击“Close”按钮即可。L E D 灯 控 制(三)Keil Vision4简介Keil Vision4软件的主界面如图2-37所示。图2-37 Keil Vision4软件主界面标题栏菜单栏工具栏编辑区状态栏工程窗格编译输出栏L E D 灯 控
26、制Keil Vision4运行程序时,会进入调试界面,出现调试工具栏,如图2-38所示,其中常用按钮的功能如下。图2-38 调试工具栏L E D 灯 控 制复位(复位()执行到断点处执行到断点处()挂起(挂起()执行进去执行进去()此按钮功能等同于在硬件上按复位按钮,相当于实现了一次硬复位,代码重新执行。此按钮用来快速执行到断点处,有时候用户并不需要查看每步是怎么执行的,而是想快速地执行到程序的某个地方看结果,单击此按钮就可以实现该功能。此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。此按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,等
27、同于执行过去按钮。L E D 灯 控 制在有函数的地方,通过此按钮就可以单步执行过这个函数,而不进入这个函数单步执行。此按钮是在进入函数单步调试时,不必再执行该函数的剩余部分,通过此按钮就可以直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。此按钮可以迅速地使程序运行到光标处,与执行到断点处按钮功能相似,但两者是有区别的,断点可以有多个,但是光标所在处只有一个。通过此按钮,可以查看汇编代码,这对分析程序很有用。执行过去执行过去()执行出去执行出去()执行到光标处执行到光标处()汇编窗口汇编窗口()L E D 灯 控 制单击此按钮,会弹出一个显示变量的窗口,在里面可以查看各种变量值
28、,是一个很常用的调试窗口。单击此按钮,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。单击此按钮,会弹出一个内存查看窗口,可以在里面输入需要查看的内存地址,然后观察内存的变化情况,也是一个很常用的调试窗口。单击此按钮,会弹出一个观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能,是比较有用的。观看变量观看变量/堆栈堆栈窗口(窗口()串口打印窗口串口打印窗口()内存查看窗口内存查看窗口()性能分析窗口性能分析窗口()L E D 灯 控 制单击此按钮,会弹出一个逻辑分析窗口,通过SETUP按钮新建一些I/O口,就可以观察这些I/O口的电平变化情况,以多种形式显示出来,比
29、较直观。逻辑分析窗口逻辑分析窗口()以上是调试工具栏中比较常用的按钮,当然也不是每次都用得着这么多,具体要看程序调试的时候有没有必要。调试工具栏中的其他几个按钮用得比较少,这里就不介绍了。L E D 灯 控 制五、J-Link仿真器J-Link仿真器用来接收计算机的仿真命令,然后转换成微控制单元MCU的JTAG(芯片内部测试国际标准协议)控制信号,控制芯片数据的读写等操作。(一)J-Link驱动安装(1)双击运行本书“教学资源包”“相关软件和驱动”文件夹下的安装文件“Setup_JLinkARM_V408i.exe”,进入安装向导界面,单击“Yes”按钮,然后在接下来出现的界面中,依次单击“N
30、ext按钮即可,如图2-39(a)图2-39(f)所示。L E D 灯 控 制默认安装位置(a)(b)(c)(d)(e)(f)图2-39 采用默认方式安装L E D 灯 控 制(2)在安装完成界面中,单击“Finish”按钮,如图2-40所示。至此,完成J-Link驱动的安装。图2-40 安装完成L E D 灯 控 制(二)驱动安装检测(1)右击桌面上的“计算机”图标,从弹出的快捷菜单中选择“设备管理器”命令,如图2-41所示,打开“设备管理器”窗口。图2-41 打开设备管理器操作L E D 灯 控 制(2)在“设备管理器”窗口中,单击“通用串行总线控制器”选项将其展开,查看J-Link驱动是
31、不是安装好了。如果出现问号或感叹号,则说明这个驱动无法正常运行。例如,图2-42就表明J-Link驱动没有安装正确。出现感叹号,表明驱动安装存在问题图2-42 “设备管理器”窗口中显示的J-Link驱动L E D 灯 控 制(3)打 开 K e i l V i s i o n 4 软 件,选 择“Project”“Open Project”菜单命令,如图2-43所示。图2-43 Keil Vision4工程菜单L E D 灯 控 制(4)找 到 并 打 开“KEIL_EXAM.uvproj”工程文件,如图2-44所示。图2-44 打开工程文件L E D 灯 控 制提示也可从深圳讯方教学实训平台
32、所提供的“传感器实验”“实验例 程”“实 验 1 K E I L 模板”“code”“RVMDK”文件夹下找到“KEIL_EXAM.uvproj”文件,然后通过直接双击将其打开。L E D 灯 控 制(5)打开“KEIL_EXAM.uvproj”工程后,单击“Rebuild”按钮 进行编译,结果如图2-45所示。图2-45 编译工程编译按钮配置按钮L E D 灯 控 制(6)单击“Target Options”按钮,打开“Options for Target”对话框,切换至“Output”选项卡,配置输出文件位置,如图2-46所示。单击“Select Folder for Objects”按钮
33、,弹出“Browse for Folder”对话框,双击“OBJ”文件夹,如图2-47所示,然后单击“OK”按钮。图2-46 配置输出文件位置输出文件位置选项L E D 灯 控 制图2-47 选择输出文件夹L E D 灯 控 制(7)返回“Options for Target”对话框,选中“Create HEX File”复选框,如图2-48所示。图2-48 选择编译生成HEX文件输出文件的位置编译生成HEX输出文件L E D 灯 控 制(8)单击“OK”按钮,重新编译程序,得到HEX输出文件及其输出文件所在位置,如图2-49所示。图2-49 重新编译程序编译与输出信息L E D 灯 控 制综
34、上可知,如果J-Link驱动安装成功,结果将如图2-50所示。图2-50 可用的J-Link驱动J-Link驱动可用L E D 灯 控 制如果工程编译通过并输出HEX文件,结果将如图2-51所示。图2-51 编译输出无误HEX文件输出编译通过,无错误,无警告L E D 灯 控 制(1)通过本实训了解GPIO特性。实训目的(2)理解I/O常用的输入和输出状态模式。(3)熟悉GPIO的配置寄存器。L E D 灯 控 制(1)点亮LED灯的程序。实训内容(2)按键按下,LED灯被点亮。L E D 灯 控 制实训设备一、硬件部分(1)RFID射频识别开发平台,如图2-52所示。图2-52 RFID射频
35、识别开发平台(2)PC主机一台。(3)J-Link仿真器一个。L E D 灯 控 制实训设备二、软件部分Keil Vision4开发环境及J-Link驱动程序。L E D 灯 控 制知识链接一、按键点亮LED灯实现按键点亮LED灯的具体步骤如下。(2)(3)(1)设置按键I/O为输入状态,LED对应I/O为输出状态。扫描按键,标记对应键值。有按键操作就点亮LED灯。L E D 灯 控 制二、按键的电路原理图K1和K2按键的电路原理图分别如图2-53和图2-54所示。效果等同于:有按键按下,发送低电平;无按键按下,发送高电平。图2-53 K1按键原理图 图2-54 K2按键原理图L E D 灯
36、控 制三、GPIO模式配置根据STM32中文参考手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每位可以由软件分别配置成多种模式,包括:输入浮空输入上拉输入下拉模拟输入开漏输出推挽式输出推挽式复用功能开漏复用功能L E D 灯 控 制表2-4所示为端口位配置表。表2-4 端口位配置表配置模式CNF1CNF0MODE1MODE0PxODR寄存器通用输出推挽(Push-Pull)00011011见表2-50或1开漏(Open-Drain)10或1复用功能输出推挽(Push-Pull)10不使用开漏(Open-Drain)1不使用输入模拟输入0000不使用浮空输入1不使用下拉输入100上拉输
37、入1L E D 灯 控 制表2-5所示为输出模式位。表2-5 输出模式位MODE1:0意义00保留01最大输出速度为10 MHz10最大输出速度为2 MHz11最大输出速度为50 MHzL E D 灯 控 制四、GPIO寄存器介绍每个GPIO端口有两个32位配置寄存器(GPIOx_CRL和GPIOx_CRH)、两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)、一个32位置位/复位寄存器(GPIOx_BSRR)、一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。本实训用到的寄存器有GPIOx_CRL、GPIOx_CRH和GPIOx_ODR,下
38、面就简单介绍这3个寄存器。(1)端口配置低寄存器(GPIOx_CRL)(x=A.E),如表2-6所示。偏移地址:0 x00复位值:0 x4444 4444L E D 灯 控 制表2-6 端口配置低寄存器CNF71:0MODE71:0CNF61:0MODE61:0CNF51:0MODE51:0CNF41:0MODE41:0CNF31:0MODE31:0CNF21:0MODE21:0CNF11:0MODE11:0CNF01:0MODE01:0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 rw rw rw rw rw rw rw rw rw rw
39、rw rw rw rw rw rw 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rwL E D 灯 控 制位31:3027:2623:2219:1815:1411:107:63:2CNFy1:0:端口x配置位(y=0.7)软件通过这些位配置相应的I/O端口,请参考表2-4“端口位配置表”。在输入模式(MODE1:0=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE1:000):00:通用推挽输出模式01:通用
40、开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:8,5:41:0MODEy1:0:端口x的模式位(y=0.7)软件通过这些位配置相应的I/O端口,请参考表2-4“端口位配置表”。00:输入模式(复位后的状态)01:输出模式,最大速度为10 MHz10:输出模式,最大速度为2 MHz11:输出模式,最大速度为50 MHzL E D 灯 控 制(2)端口配置高寄存器(GPIOx_CRH)(x=A.E),如表2-7所示。偏移地址:0 x04复位值:0 x4444 4444表2-7 端口配置高寄存器CNF151:0MODE151:
41、0CNF141:0MODE141:0CNF131:0MODE131:0CNF121:0MODE121:0CNF111:0MODE111:0CNF101:0MODE101:0CNF91:0MODE91:0CNF81:0MODE81:0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rwL
42、E D 灯 控 制位31:3027:2623:2219:1815:1411:107:63:2CNFy1:0:端口x配置位(y=8.15)软件通过这些位配置相应的I/O端口,请参考表2-4“端口位配置表”。在输入模式(MODE1:0=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE1:000):00:通用推挽输出模式01:通用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:8,5:41:0MODEy1:0:端口x的模式位(y=8.15)软件通过这些位配置相应的
43、I/O端口,请参考表2-4“端口位配置表”。00:输入模式(复位后的状态)01:输出模式,最大速度为10 MHz10:输出模式,最大速度为2 MHz11:输出模式,最大速度为50 MHzL E D 灯 控 制(3)端口输出数据寄存器(GPIOx_ODR)(x=A.E),如表2-8所示。地址偏移:0Ch复位值:0 x0000 0000表2-8 端口输出数据寄存器保留ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR8ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 1
44、6 15 14 13 12 11 10 9 8 rw rw rw rw rw rw rw rw 7 6 5 4 3 2 1 0 rw rw rw rw rw rw rw rw位31:16保留,始终读为0。位15:0ODRy15:0:端口输出数据(y=0.15)这些位可读可写并只能以字(16位)的形式操作。注:对GPIOx_BSRR(x=A.E),可以分别地对各个ODR位进行独立的设置/清除L E D 灯 控 制(1)在某个电脑磁盘中新建一个文件夹“LED”,如图2-55所示。实施步骤图2-55 创建文件夹“LED”(2)在“LED”文件夹中再创建两个子文件夹,名称分别为“RVMDK”和“SRC
45、”,如图2-56所示。图2-56 创建文件夹“RVMDK”和“SRC”L E D 灯 控 制(3)接着在“RVMDK”文件夹中再创建两个子文件夹,名称分别为“list”和“obj”,如图2-57所示。图2-57 创建文件夹“list”和“obj”L E D 灯 控 制(4)双击桌面上的“Keil Vision4”快捷方式图标,或者在开始菜单中选择“开始”“所有程序”“Keil Vision4”命令,启动Keil Vision4。创建新工程的步骤如下:选择“Project”“New Vision Project”菜单命令,如图2-58所示。图2-58 创建新工程命令L E D 灯 控 制 此 时
46、 弹 出“C r e a t e N e w Project”对话框,输 入 工 程 文 件 名“led.uvproj”,然后将其保存到之前创建的“RVMDK”文件夹中,如图2-59所示。图2-59 “Create New Project”对话框L E D 灯 控 制 接着弹出“Select Device for Target”对话框,如图2-60所示,选定CPU型号,本实训采用的CPU型号为“STM32F103ZE”,如图2-61所示,然后单击“OK”按钮。图2-60 “Select Device for Target”对话框 图2-61 选定CPU型号L E D 灯 控 制 随后出现提示框
47、,询问是否加入启动代码,单击“否”按钮,如图2-62所示。图2-62 提示框 完成以上步骤,则新建工程完成,如图2-63所示。图2-60 “Select Device for Target”对话框L E D 灯 控 制(5)添加相应组,包括“user”,“led”,“key”,“lib”和“startup”,步骤如下。在工程窗格中右击“Target 1”,从弹出的快捷 菜 单 中 选 择“M a n a g e Components.”菜单命令(见图2-6 4),弹 出“Components,Environment and Books”对话框,如图2-65所示。图2-64 添加管理组命令 图2
48、-65 “Components,Environment and Books”对话框L E D 灯 控 制 添加组及按钮。先双击“Groups”栏中的“Source Group 1”,将其修改为“user”;然后通过单击该栏的“New”按钮,添加组“le d”,“key”,“lib”和“startup”,如图2-66所示。图2-66 添加组及按钮L E D 灯 控 制提示“user”组对应主程序、功能程序和系统程序;“led”组对应LED灯程序;“key”组对应按键程序;“lib”组对应库程序;“startup”组对应启动程序。L E D 灯 控 制 添加程序文件,步骤如下。图2-67 为“us
49、er”组添加程序文件a在“Groups”栏中选中“user”组,然后单击“Files”栏下的“Add Files”按钮,如图2-67所示。L E D 灯 控 制b弹出“Add Files to Group”对话框,在本任务实训对应的“SRC”文件夹中找到并选中要添加的程序文件(main.c,P u b l i c F u c.c 和SystemInit.c),然后先单击“Add”按钮,再单击“Close”按钮,如图2-68所示,完成添加。图2-68 “user”组的程序文件L E D 灯 控 制c其他组程序文件的添加方法与“user”组类似,具体为:“led”组(leds.c)、“key”组(
50、Key.c)、“lib”组(“stm32lib”文件夹中的.c 文 件)、“s t a r t u p”组(“stm32lib”“StartUp”文件夹中的startup_stm32f10 x_hd.s文件)。添加完成后,单击“Components,Environment and Books”对话框中的“OK”按钮,结果如图2-69所示。图2-69 各组添加完程序文件后L E D 灯 控 制 目标选项设置,步骤如下。a单击工具栏中的“Target Options”按钮,如图2-70所示,弹出“Options for Target”对话框,默认显示的是“Target”选项卡,如图2-71所示。图
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。