当前位置:文档之家› RC522教程(基于mps430)

RC522教程(基于mps430)

RC522教程(基于mps430)
RC522教程(基于mps430)

RFID-RC522速成教程(基于msp430单片机的程序讲解)

学习一种模块,有很多种方法,其中一种方式是先去弄明白怎么使用这个模块,亲自体验了这个模块的大体功能之后,再回过头来了解该模块的工作原理,再去深层次的研究该模块。

在这里,着重介绍怎么用程序实现RC522模块的一些功能,而RC522的结构,功能等便不再介绍。

这个程序的讲解是基于MSP430F149/169单片机的。

模块使用的是SPI接口,与单片机接口如下:

#define RF_LPCTL BIT3 // P2.3 射频卡休眠控制------RST

#define RF_SS BIT7 // p2.7 射频卡从机选择(SS)---SDA

#define RF_SCLK BIT6 // p2.6 射频卡数据时钟输出(SCLK)

#define RF_DATA_OUT BIT5 // p2.5 射频卡数据输出(MOSI)

#define RF_DATA_IN BIT1 // p2.1 射频模块输入(MISO)

要想对模块内部的数据块进行读写,需要完成4个步骤:寻卡→防冲突→选卡→读/写卡;第一步:寻卡。

status2=PcdRequest(0x52,Temp);////寻卡参数Temp为返回的卡类型

if(status2== MI_OK)

{

tochar(Temp[0]);

tochar(Temp[1]);//输出卡类型

}

其中0x52代表寻天线区内全部卡。

卡类型(TagType):

0x4400 = Mifare_UltraLight

0x0400 = Mifare_One(S50)

0x0200 = Mifare_One(S70)

0x0800 = Mifare_Pro(X)

0x4403 = Mifare_DESFire

比如,当Temp[0]=04,Temp[1]=00时,卡类型为S50。

第二步:防冲突。

status2 = PcdAnticoll(UID); //防冲撞处理,输出卡片序列号,4字节

if(status2==MI_OK)

{

PutString0("Card Id is:");

tochar(UID[0]);

tochar(UID[1]);

tochar(UID[2]);

tochar(UID[3]); //输出卡片序列号

}

第三步:选卡。

status2 = PcdSelect(UID); //选择卡片,输入卡片序列号,4字节

第四步:在读写卡之前需要先进行认证。

status2 = PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID);

其中四个参数分别代表:验证A密钥+块地址+扇区密码+卡序列号。

然后进行写操作:

status2=PcdWrite(1,writeData);//写数据,将数组writeData中的数写入到卡中

其中第一个参数 1 代表写入的地址为块1.

或者进行读卡操作:

status2 = PcdRead(1, str);//读卡

其中第一个参数 1 代表读的地址为块1.

读卡后得到的数据存放于数组str中。

至此,已将RC522的基本操作介绍了一遍,明白了以上这些函数,就可以对卡进行一些初步的操作,可以再结合程序研究一下。

如果需要进一步了解RC522的工作原理,可以到网上搜资料,网上有很多的,也可以在下方留言,大家讨论讨论。Hjl

基于RC522的非接触式IC卡读卡器设计(含程序)

1 绪论 1.1 课题的研究背景 工业3.0将世界带入信息化的时代,信息技术的发展日新月异,一个以电子商务为主要特征的经济时代成为主要潮流,智能射频卡是一种将用户数据最快捷地送入到环球信息互联网并获得信息的最有用的工具,智能IC卡成为了人们身份识别和实现电子支付的手段,影响了我们生活工作的方式。智能IC卡与普通磁卡对比具有更高的安全性,所以,对智能IC卡的功能进行研究是非常有意义的。 智能IC卡,又是CPU卡。顾名思义, 这种卡片上集成了存储器、通信接口及CPU,具有存储数据、对外交流和数据处理的能力,因此,又是一片卡上的单片机系统。为了使这一系统中的硬件和软件资源充分得到利用, 卡上存放了进行数据读写和安全通信的协议,以及管理这些程序的Chip Operating system卡上操作系统。这操作系统是按照IC卡性能特征而专门设计的操作系统,它极大地不同于计算机上常见的DOS和WINDOWS 等操作系统,IC 卡存储器的容量大小和CPU的性能的限制着Chip Operating system卡上操作系统。主要功能是:控制IC卡与读卡器的数据交流;管理IC卡上各种存储器;在IC卡内执行读写器发来的各种操作命令。有了CPU与COS系统,成就了智能IC卡。所以,智能射频卡具有超强的管理性能,提供很高的数据安全性和可靠性[1]。 1.2 非接触式IC卡 1.2.1 非接触式IC卡的简介 非接触式IC卡又称射频卡,由IC芯片、感应天线组成,封装在一个标准的PVC卡片内,芯片及天线无外露部分[2]。它是全球上最近发展成熟的一项技术,射频识别技术和IC卡技术被成功地结合起来,解决了无源和非接触这一难题,无源即卡中没有电源,这是电子科学领域的一大突破[2]。卡片接近读写器天线产生电磁场的一定空间范围 (通常为50—100mm),通过电磁波的发送来完成数据的读写操作。 1.2.2 非接触式IC卡的特点 (1)操作快捷 卡与读卡器之间的通讯是非接触的。不用定向使用和插拔卡。操作时,卡也可

STM32嵌入式系统实验报告模板

实验一使用固件函数库创建库函数模板 一、实验目的 1. 熟悉STM32的开发环境MDK Keil和仿真软件Proteus 2. 熟悉STM32的固件库函数文件夹 3. 掌握STM32固件库的使用方法 二、实验内容 1.开发自己的固件库函数模板 三、预备知识 掌握基于STM32固件库进行编程的方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:嵌入式开发平台,USB转串口数据线; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:Keil μVision5 IDE; 五、实验过程 1.创建本地文件夹和软件中的文件夹 2. 对软件中的文件夹进行配置

3.软件设计及代码(写一个简单的main函数)

六、遇到的问题及解决方法

实验二使用STM32固件库点亮LED灯 一、实验目的 1. 掌握STM32固件库的使用方法 2. 掌握基于库函数模板的开发方法 3. 掌握基于固件库进行GPIO端口编程的方法 二、实验内容 1. 使用Proteus软件设计点亮LED灯电路 2. 基于固件库进行编程 3. 基于固件库编程控制GPIO端口的输出,进而控制LED灯的显示状态 三、预备知识 掌握基于STM32固件库进行编程的方法;掌握Proteus软件的使用方法;掌握GPIO端口的组成、工作方式、编程方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:嵌入式开发平台,USB转串口数据线; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:Keil μVision5 IDE; 五、实验过程 1.LED灯电路设计 2. GPIO初始化过程

在C51单片机上对读写卡芯片MFRC522编程

在C51单片机上对读写卡芯片MFRC522编程 1 概述 在整个的射频识别系统中。读写卡模块负责建立单片机与电子标签之间的通信,起着非常重要的作用。而整个读写卡模块的核心,就是读写卡芯片MFRC522 MFRC522 是NXP 公司专为各种计量检测设备而设计、推出的一款低成本、低功耗的非接触式读写卡芯片。该芯片应用于13.56MHz 非接触通信,应用了较为先进的调制和解调概念,集成了众多的通信方式和协议,其内部强大的电路可直接驱动天线无需其他外接电路,通过其独特的加密算法,更使其具备可较强的安全性。 作为一款较为成功的读写卡芯片,MFRC522与主机间的通信采用的是连线较少的串行通信,而且可根据不同的用户需求,从SPI、I2C、串行UART三种总线模式中选择,这样的设计有利于减少连线数量,缩小PCB 板体积,降低成本。 目前MFRC522在很多的领域都得到了广泛应用,尤其适用于低成本、小尺寸、低功耗和单电源的非接触式通信的应用场合,是智能仪表、板上单元、便携式手持设备的极佳选择。目前,全国各大城市的公共交通终端以及非接触式公用电话应用的正是MFRC522

2 特性 1. 高度集成的模拟电路模块,应用新概念完成调制和解调。 2. 支持ISO 14443A与MIFARE通信协议 3. 驱动优化,采用少量外部器件就能输出驱动级到天线 4. 支持MIFARE的加密算法 5. 可自由选择多样的主机接口: ①10Mbit/s的SPI接口 ②I2C接口,快速传输模式的速率为400kbit/s, 高速模式的速率为3400kbit/s ③串行UART,传输速率高达1228.8kbit/s,帧取决于RS232接口,电 压电平取决于提供的管脚电压 6. 灵活的中断模式 7. 64字节的发送接收缓冲区 8. 具备软件掉电、硬件掉电和发送器掉电三种低功耗模式,能够通过关闭 相应的模块或驱动器达到节电的目的。 9. 2.5~3.3V的低电源电压,低功耗设计 10. 内部振荡器,链接27.12HZ的晶体 11.可编程定时器 12.自由编程的I/O管脚 13.内置温度传感器,当芯片温度过高时会自动停止射频信号的发射 14. 体积小,仅有5mm╳5mm╳0.85mm 3 系统结构

STM32 实验2报告

实验2 MINI STM32按键控制LED灯实验 一、实验目的 1、掌握嵌入式程序设计流程。 2、熟悉STM32固件库的基本使用。 二、实验内容 1、编程使用I/O口作为输入,控制板载的两个LED 灯。 2、使用固件库编程。 三、实验设备 硬件:PC机一台 MINI STM32开发板一套 软件:RVMDK V3.8 一套 Windows XP 一套 四、实验步骤 1、设计工程,使用固件库来编程设置。 1.1、在这里我们建立一个文件夹为: STM32-Projects. 点击Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32-Projecst 之下,在这个目录下面建立子文件夹shiyan1, 然后定位到shiyan1目录下面,我们的工程文件就都保存到shiyan1 文件夹下面。工程命名为shiyan1, 点击保存. 1.2、这里我们定位到STMicroelectronics 下面的STM32F103RB( 针对我们的mini 板子是这个型号。

1.3、弹出对话框“Copy STM32 Startup Code to project ….”,询问是否添加启动代码到我们的工程中,这里我们选择“否”,因为我们使用的ST固件库文件已经包含了启动文件。 1.4、接下来,我们在Template 工程目录下面,新建3 个文件夹CORE, USER, STM32F10x_FWLib 。USER 用来放我们主函数文件main.c, 以及其他包括 system_stm32f10x.c 等等,CORE 用来存放启动文件等,STM32F10x_FWLib 文件夹顾名思义用来存放ST官方提供的库函数源码文件. 1.5、.打开官方固件库包,定位到我们之前准备好的固件库包的目录。 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,将目录下面的src,inc 文件夹copy 到我们刚才建立的STM32F10x_FWLib 文件夹下面。 1.6、我们将文件加入我们的工程中去。右键点击Target1,选择Manage Components

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设计报告

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设 计报告 NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告 学生姓名: 学号: 学院: 专业班级: 指导教师: 同组成员: 2016年 12 月 26 日 嵌入式系统课程设计报告 一、课程设计目的 本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一 次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。 二、设计题目及要求 2.1 设计题目: 基于STM32和uC/OS-II的多任务设计 2.2 功能实现:

使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。 2.3 设计要求: 理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。 四个任务分别为: (1)驱动1个LED指示灯闪烁、 (2)由3个LED指示灯组成流水灯 (3)驱动蜂鸣器发出响声。 (4)利用swd方式进行printf输出。 三、设计原理说明 3.1 硬件说明 本次课程设计主要使用的是STM32 神舟 IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。 (1)开发板资源图 - 1 - 嵌入式系统课程设计报告

MFRC522 IC卡模块使用手册V1.0

MFRC522 IC 卡模块使用手册 V1.0
嵌达科技,快乐生活 欢迎访问:https://www.doczj.com/doc/d218017341.html,/shop/view_shop.htm?tracelog=twddp 程序功能: 当 IC 卡放在模块上时,先把预先赋值给 Write_Data[16]这个数组中的数据写 到 IC 卡中,然后马上把写入的数据读出来,显示在 PC 机的串口调试助手上。 操作步骤: 1、 下载程序到单片机中。 我们设计的电路板使用的是 AT89S52,因此只能通过 ISP 下载,为了布线方 便,我只引出了必须的 6 根线供下载,图如下:
程 序 下 载 接 口 程 序 下 载 接
我们都知道 ISP 下载器都是 10 脚的,从 10 脚转变成 6 脚就必须有所转换, 一般有两种解决方法:1)通过杜邦线一对一连,这种方法的前提是你必须知道 自己手上的 ISP 下载器引脚定义;2)通过另一块转接板把 10 脚转换为 6 脚,并 附加上开关功能,这种方法比较方便,如下图:
由于此转换电路板制作费用较小,如果您买了 ISP 下载器或者买了读写卡模 块,我们将免费赠送。 2、 准备工作 ① 将读写卡模块插在电路板上; ② 将串口线连接电路板和电脑,保证可以实现串口通信的硬件连接; ③ 打开 PC 机上的串口调试助手,并打开对应端口,开启 16 进制显示,准 备接收数据。


3、 实现读写卡 ① 给电路板通电; ② 把卡放在读卡器模块上,当绿灯亮时表示读写卡结束,此时串口调试助 手会显示出卡对应数据块中的数据,如下图:
1、
工程文件说明:
我们的程序只用了四个文件,分别为:读写卡.c、read_card.h、read_card.c
和 rc522.h。下面我来介绍一下这四个文件的作用,各位亲,这部份仔细看哦, 尤其是那些还执着于在一个文件中实现所的函数编写的朋友们, 下面我们所展示 的文件架构可以适用于小中型工程的实现, 这会让您的程序看上去更有条理性和 逻辑性,更容易调试和修改程序,这对于您自身编程能力的提升是无往不利的。 如果您要实现大型的工程,就需要考虑更多的文件存放各种类别的程序了。 读写卡.c:这个文件是我们的 main()函数所在的文件,是我们整个工程的入 口点, 这个文件中包含了串口通信初始化函数的调用和读写卡函数的调用,进而 牵动所有函数的调用。 Read_card.h:这个文件是我们除 main()函数之外所有的函数定义的地方,只 有在这里定义函数,这些函数才能在别的文件中被使用。另外,这个文件中统一 定义了本工程所要用到的所有系统文件,比如说:regx52.h、intrins.h 等。 Read_card.c:如果说 read_card.h 这个文件实现了所有函数的定义, read_card.c 这个文件则实现了所有函数的编写。 从很简单的延时函数到复杂的寄 存器操作函数, 从单一功能的实现函数到完整读写功能的实现函数,全都会体现 在这里。 Rc522.h:MFRC522 读写模块上有一个芯片实现了对读写卡功能的控制,这

stm32课程设计报告

利用TIM定时器的中断和定时功能实现跑马灯 一、原理及目的 1、学习stm32库开发 2、理解和熟悉I/O的使用; 3、进一步掌握定时器、中断处理程序的编程方法 4、利用库函数开发实现跑马灯 二、电路原理图 三、流程图 四、软件算法(代码) 1、Main.c #include "stm32f10x.h" #include "bsp_led.h" #include "bsp_TiMbase.h" volatile u32 time = 0; int i=0;

int main(void) { LED_GPIO_Config(); TIM2_Configuration(); TIM2_NVIC_Configuration(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); while(1) { if ( time == 1000 ) { time = 0; i++; if(i>=3) i=0; switch(i) { case 0: LED1(OFF);LED2(OFF);LED3(ON);break; case 1: LED1(ON);LED2(OFF);LED3(OFF);break; case 2: LED1(OFF);LED2(ON);LED3(OFF);break; } } }} 2、led.c #include "bsp_led.h" void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GP IO_Pin = GPIO_Pin_4|GPIO_Pin_3; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_0); GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3); } 3、led.h #ifndef __LED_H #define __LED_H #include "stm32f10x.h" #define ON 0

基于STM32的嵌入式系统应用设计》课程实验报告

《基于STM32的嵌入式系统应用设计》课程实验报告 班级:电信工程15-01班 学号:5415230301 姓名: 指导老师: 成绩

实验一流水灯和按键实验 一、目的与任务 目的:掌握STM32开发环境,掌握从无到有的构建工程,学会GPIO基本操作。 任务:编写代码下载到目标板,观察效果。如未达到理想效果,检查和修改代码,再次编译下载直到成功。记录实验过程,完成实验报告。 二、内容、要求与安排方式 1、实验内容与要求: 1)熟悉MDK KEIL开发环境,构建基于HAL库的工程。 2)编写代码实现流水灯工程,按键后能改变流水灯速度。 3)通过ISP下载代码到实验板,查看运行结果。 4)使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。 2、实验安排方式:采用1人1组,上机编程在STM32实验板上实验。 三、实验设备 1、所用设备:PC计算机(宿主机)、STM32实验板、JLINK。 2.消耗性器材:无。 四、实验过程 五、程序清单 #include "system.h" #include "SysTick.h" #include "led.h" #include "key.h" int main()

{ u8 key; SysTick_Init(72); LED_Init(); KEY_Init(); while(1) { static u8 j=1000; key=KEY_Scan(0); //é¨?è°′?ü switch(key) { case KEY_UP: j=j-100;break; //°′??K_UP°′?ü μ?ááD2??ê?μ? case KEY_DOWN: j=j+100;break; //°′??K_DOWN°′?ü?¨?eD2??ê?μ? } switch(j) { case(0):j=2000;break; case(2000):j=100;break; } led1=0; led2=1;led3=1; led4=1; led5=1; led6=1;led7=1;led8=1; //1áá delay_ms(j); led1=1; led2=0;led3=1; led4=1; led5=1; led6=1;led7=1;led8=1; //2áá delay_ms(j); led1=1; led2=1;led3=0; led4=1; led5=1; led6=1;led7=1;led8=1; //3áá delay_ms(j);

MF RC522 射频识别参考程序注释new

MF RC522 射频识别参考程序注释串口读取的数据

//------------------------------------------ ucAddr = ((Address<<1)&0x7E)|0x80;//变化成有效的地址形式,最低位为0,最高位为1时候是,从MFRC522读出数据,参考39页 // 读SPI数据 //------------------------------------------ unsigned char SPIReadByte(void) { unsigned char data SPICount; // Counter used to clock out the data unsigned char data SPIData; SPIData = 0; for (SPICount = 0; SPICount < 8; SPICount++) // Prepare to clock in the data to be read { SPIData <<=1; // Rotate the data CLR_SPI_CK; nop();nop(); // Raise the clock to clock the data out of the MAX7456 if(STU_SPI_MISO) { SPIData|=0x01; }

Drop the clock ready for the next bit } // and loop back return (SPIData); // Finally return the read data } //------------------------------------------ // 写SPI数据 //------------------------------------------ void SPIWriteByte(unsigned char data SPIData) { unsigned char data SPICount; // Counter used to clock out the data for (SPICount = 0; SPICount < 8; SPICount++) { if (SPIData & 0x80) { SET_SPI_MOSI; } else { CLR_SPI_MOSI; } nop();nop(); CLR_SPI_CK;nop();nop(); SET_SPI_CK;nop();nop(); SPIData <<= 1; } } ///////////////////////////////////////////////////////////////////// //功能:寻卡 //参数说明: req_code[IN]:寻卡方式 // 0x52 = 寻感应区内所有符合14443A标准的卡 // 0x26 = 寻未进入休眠状态的卡 // pTagType[OUT]:卡片类型代码 // 0x4400 = Mifare_UltraLight // 0x0400 = Mifare_One(S50) // 0x0200 = Mifare_One(S70) // 0x0800 = Mifare_Pro(X) // 0x4403 = Mifare_DESFire //返回: 成功返回MI_OK ///////////////////////////////////////////////////////////////////// char PcdRequest(unsigned char data req_code,unsigned char *pTagType) {

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

STM32 MDK实验报告

姓名:楚昕班级:轨道1502班学号:201523050224 1.实验目的 知道如何建立一个程序。 2.图

3.实验步骤 (1)建立一个文件夹为Template (2)点击MDK的菜单:Project–>New Uvision Project,然后将目录定位到刚才建立的文 件夹Template之下,在这个目录下面建立子文件夹USER (3)出现一个选择CPU的界面,就是选择我们的芯片型号 (4)在Template工程目录下面,新建3个文件夹CORE,OBJ以及STM32F10x_FWLib (5)将固件库包里面相关的启动文件复制到我们的工程目录CORE之下 (6)定位到目录: STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER 目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER 目录下面。 (7)右键点击Target1,选择Manage Project Items,将需要的固件库相关文件复制到了我们 的工程目录下面 (8)往Group里面添加我们需要的文件 (9)编译工程,点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”, 然后选择目录为我们上面新建的OBJ目录 4.总结 (1)Template.uvprojx是工程文件,非常关键,不能轻易删除。Listings和Objects文件夹是 MDK自动生成的文件夹,用于存放编译过程产生的中间文件。新建一个OBJ文件夹,用来存放编译中间文件。 (2)STM32F10x_FWLib。CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文 件以及hex文件,STM32F10x_FWLib文件夹用来存放ST官方提供的库函数源码文件。 (3)src存放的是固件库的.c文件,inc存放的是对应的.h文件 (4)添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型为All files才能看 得到这个文件 (5)keil只会在一级目录查找,如果目录下面还有子目录,path一定要定位到最后一级子目 录 (6)

STM8 RC522 读写IC卡程序

#include "stm8s.h" #include "uart.h" void Delay(u32 nCount); extern u8 RxBuffer[RxBufferSize]; extern u8 UART_RX_NUM; unsigned char CT[2];//卡类型 unsigned char SN[4]; //卡号 unsigned char write[16] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10}; unsigned char read[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char key[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; #define countof(a) (sizeof(a) / sizeof(*(a))) #define BufferSize (countof(Tx_Buffer)-1) u8 Tx_Buffer[] = "STM8S RFID TEST"; u8 Rx_Buffer[BufferSize]; u32 FLASH_ID ; void cardNo2String(u8 *cardNo, u8 *str); void main(void) { unsigned char status; /*设置内部时钟16M为主时钟*/ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); status = memcmp(read,write,16); GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOC); Uart_Init(); GPIO_Init( GPIOA, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); InitRc522(); UART2_SendString(Tx_Buffer,BufferSize); while(1) { status = PcdRequest(PICC_REQALL,CT); /*扫描卡*/ status = PcdAnticoll(SN); /*防冲撞*/ if (status==MI_OK) { GPIO_LOW(GPIOA, GPIO_PIN_4); //寻卡成功

STM32实验报告分析

实验一:一个灯的闪烁 一、实验要求 1.熟悉使用STM32F103ZET6开发板 2.利用C语言程序实现一个灯闪烁 二、电路原理图 图1-1 LED灯硬件连接图 三、软件分析 1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init(); 2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA 3.声明GPIO结构: PF6~PF10口配置为输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; 4.应用GPIO口:点亮LED1有五种方法 ①ODR寄存器法:GPIOA->ODR=0xffbf; ②位设置/清除寄存器法:GPIOA->BRR|=0X001; ③方法③只适用于GPIOx_BSRR寄存器 ④GPIO_WriteBit()函数法:GPIO_Write(0xffbf); ⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8); 5.主函数程序: int main(void) { RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;) { GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */ Delay(600000); GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */ Delay(600000); } } 四、实验现象 下载程序后开发板上的LED1灯闪烁

RFID_MFRC522

RFID 一、概述 (2) 二、系统组成 (2) 三、非接触式IC卡—M1卡 (2) 1、外观 (2) 2、结构 (3) 3、功能 (3) 4、Mifare 1 S50卡存储EEPROM (5) 四、读卡器—MFRC522 (7) 1、内部框图 (7) 2、电路图 (8) 3、MFRC522支持的三种接口 (9) 4、工作过程 (9) 五、结果 (13)

一、概述 通过点名、磁卡和接触式IC卡等方式对学生的到课情况进行考勤、记录管理,既耗时又相互干扰;而非接触式RFID学生考勤系统实现了利用无线射频识别技术对学生考勤管理,既方便、快捷,又省时。而且通过物联网和PC机终端对数据进行处理。 二、系统组成 学生智能考勤系统由四大部分组成,非接触式IC卡、读卡器、单片机及PC 终端。如下图 学生考勤系统组成 1.当保存有学生基本信息的IC卡进入读卡器天线作用范围内时,卡片获得 能量以维持卡内部电路工作; 2.单片机负责控制读卡器进行一系列“寻卡→防冲突→选卡→读/写卡”操 作,如果成功,将读取到卡片上的学生信息; 3.单片机将学生信息发送到PC终端,由PC机对一步对数据进行处理。 三、非接触式IC卡—Mifare One卡 1、外观 非接触式IC卡

2、结构 非接触式IC卡的薄膜结构 卡内部结构 3、功能 功能框图 读卡器通过天线发射激励信号(一组固定频率的电磁波),IC卡进入读写器工作区内,被读写器信号激励。在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内

有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2 V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。 (1)ATR模块:Answer To Request(“请求之应答”) 当一张MIFARE 1卡处在读写器的天线工作范围之内时,程序员控制读写器向卡发出Request all(或Request std)命令后,卡的ATR将启动,将卡片块 0 中2个字节的卡类型号(TagType)传送给读写器,建立卡与读写器的第一步通信联络。 如果不进行第一步的ATR工作,读写器对卡的其他操作(读/写操作等)将不会进行。 (2)AntiCollision模块:防(卡片)冲突功能 如果有多张MIFARE 1卡处在读写器的天线工作范围之内,则AntiCollision模块的防冲突功能将被启动工作。读写器将会首先与每一张卡进行通信,读取每一张卡的序列号(Serial Number)。由于每一张MIFARE 1卡都具有惟一的序列号,决不会相同,因此程序员将启动读写器中的AntiCollision防重叠功能配合卡上的防重叠功能模块,根据卡序列号来选定其中一张卡。被选中的卡将被激活,可以与读写器进行数据交换;而未被选中的卡处于等待状态,随时准备与读写器进行通信。 AntiCollision模块(防重叠功能)启动工作时,读写器将得到卡片的序列号(Serial Number)。序列号存储在卡的Block 0中,共有5个字节,实际有用的为4个字节,另一个字节为序列号的校验字节。 (3)Select Application 模块:卡片的选择 当卡与读写器完成了上述两个步骤,读写器要想对卡进行读/写操作时,必须对卡进行“Select”操作,以使卡真正地被选中。 被选中的卡将卡片上存储在Block 0中的卡容量“Size” 字节传送给读写器。当读写器收到这一字节后,方可对卡进行进一步的操作,如密码验证等。 (4)Authentication & Access Control 模块:认证及存取控制模块 完成上述的三个步骤后,读写器对卡进行读/写操作之前,必须对卡上已经设置的密码进行认证,如果匹配,则允许进一步的读/写操作。 MIFARE 1 卡上有16个扇区,每个扇区都可分别设置各自的密码,互不干涉,必须分别加以认证,才能对该扇区进行下一步的操作。因此每个扇区可独立地应用于一个应用场合,整个卡可以设计成一卡多用(一卡通)的形式来应用。 密码的认证采用了三次相互认证的方法,具有很高的安全性。如果事先不知卡上的密码,则因密码的变化可以极其复杂,试图靠猜测密码而打开卡上一个扇区的可能性几乎为零。 (5)Control & Arithmetic Unit:控制及算术运算单元 这一单元是整个卡的控制中心,是卡的“头脑”。它主要对卡的各个单元进行操作控制,协调卡的各个步骤;同时它还对各种收/发的数据进行算术运算处理、递增/递减处理和CRC运算处理等,是卡中内建的中央微处理器(MCU)单元。 (6)RAM/ROM 单元 RAM主要配合控制及算术运算单元,将运算的结果进行暂时存储,例如将需存储的数据由控制及算术运算单元取出送到EEPROM存储器中;将需要传送给读写器的数据由控制及算术运算单元取出,经过RF射频接口电路的处理,通过卡片上的天线传送给读写器。RAM 中的数据在卡失掉电源后(卡片离开读写器天线的有效工作范围)将会丢失。 同时,ROM中则固化了卡运行所需要的必要的程序指令,由控制及算术运算单元取出,对每个单元进行指令控制,使卡能有条不紊地与读写器进行数据通信。 (7)Crypto Unit:数据加密单元 该单元完成对数据的加密处理及密码保护。加密的算法可以为DES标准算法或其他。

STM32实验报告

STM32实验报告

实验一搭建实验环境 一.实验简介 搭建嵌入式系统开发环境,建立第一个工程,流水灯实验 二.实验目的 掌握STM32开发环境,掌握从无到有的构建工程。 三.实验内容 熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现流水灯工程。通过ISP下载代码到实验板,查看运行结果。下载代码到目标板,查看运行结果。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1.熟悉MDK KEIL开发环境 2.熟悉串口编程软件ISP 3.查看固件库结构和文件 4.建立工程目录,复制库文件 5.建立和配置工程 6.编写代码 7.编译代码 8.使用ISP下载到实验板 9.测试运行结果 10.记录实验过程,撰写实验报告

六.实验结果及测试七.实验总结

实验二按键实验(查询方式) 一.实验简介 在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。 二.实验目的 熟练使用库函数操作GPIO,掌握利用查询方式控制按键的程序编写方法。 三.实验内容 实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1在实验一代码的基础上,编写按键控制部分代码 2编写完成主程序 4编译代码,下载到实验板 5.单步调试 6记录实验过程,撰写实验报告 六.实验结果及测试 七.实验总结

STM32实验报告

嵌入式系统课程设计实验报告题目基于STM32的LCD数字钟显示 姓名刘意 学号 2012221105200045 ___ 专业年级 12电科 指导教师卢仕 2015年 6 月 30日

1.实验名称: 基于STM32的LCD数字钟显示 2.实验目的与要求: (1)掌握嵌入式程序设计流程。熟悉并掌握软件的开发,如GPIO的端口配置,FSMC的编程,RA8875初始化等等。 (2)学习LCD与STM32的LCD的控制器的接口原理,掌握内置LCD 控制器驱动编写方法。 (3)编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来。 3.实验设备及原理: 硬件:PC机一台 STM32开发板一套 软件:keil4 原理:LCD显示器是通过给不同的液晶单元供电,控制其光线的 通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对 每个液晶单元通断电的控制,每个液晶单元都对应着一个电极, 对其通电,便可使用光线通过。本次实验使用RA8875驱动LCD, 采用FSMC模式向RA8875发送指令,读取状态和数据。通过程 序代码实现对TFTLCD的控制器RA8875驱动要求,从而达到TFT LCD 数字钟的显示。 4.实验步骤及内容: 1.新建工程文件夹szz,并建立4个子文件夹,并复制粘贴库文件和驱动文件。

2.打开keil4,新建工程。工程名为szz.芯片选取STM3210F103VC。 3.完成基础设置

4. 添加LCD.H和LCD.C两个文件,并加入工程中,编写LCD.H文件. LCD.H: #ifndef __GLCD_H #define __GLCD_H #include "stm32f10x.h" /* LCD color */颜色定义

STM8 RC522 IC卡修改密码程序

/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" #include "stm8s_clk.h" #include "intrinsics.h" #include "stm8s_uart1.h" #include "uart.h" #include "rc522.h" #include "string.h" void Delay(u32 nCount); extern u8 RxBuffer[RxBufferSize]; extern u8 UART_RX_NUM; unsigned char CT[2];//卡类型 unsigned char SN[4]; //卡号 unsigned char write[16] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10}; unsigned char read[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char key[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; /* Private macro -------------------------------------------------------------*/ #define countof(a) (sizeof(a) / sizeof(*(a))) #define BufferSize (countof(Tx_Buffer)-1) /* Private variables ---------------------------------------------------------*/ u8 Tx_Buffer[] = "STM8S RFID TEST"; u8 Rx_Buffer[BufferSize]; u32 FLASH_ID ; /* Private defines -----------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ #define ReadWriteAddr 11 //读写扇区 void main(void) { unsigned char status; /* Infinite loop */ /*设置内部时钟16M为主时钟*/ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

相关主题
文本预览
相关文档 最新文档