芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片复制RFID RC522门禁系统STM32源码

芯片复制单片机源程序如下:

  1. 芯片复制//硬件环境:德飞莱STM32开发板
  2. 芯片复制//接线:SDA--PA3  SCK--PB13  MOSI--PB15  MISO--PB14  IRQ悬空  RST--PA4
  3. #include "var.h"
  4. #include "led.h"
  5. #include "delay.h"
  6. #include "key.h"
  7. #include "sys.h"
  8. #include "usart.h"
  9. #include "rtc.h"
  10. #include "wkup.h"
  11. #include "ADC.h"
  12. #include "DAC.h"
  13. #include "DMA.h"
  14. #include "24c02.h"
  15. #include "w25qxx.h"
  16. #include "timer.h"
  17. #include "oled.h"
  18. #include "stmflash.h"
  19. #include "rc522.h"
  20. //要写入到STM32 FLASH的字符串数组
  21. u16 m=1212;

  22. /*常量定义*/
  23. #define N 10 //最大管理员数目
  24. /*全局变量*/
  25. u16 flash_adder=0;//闪存地址变化量
  26. u16 people_num=0;
  27. u16 root_num=0;
  28. u16 ROOT_ID[4]= {174,115,14,46};
  29. u16 user1[4]= {222,181,4,46};
  30. u16 user2[4]= {219,225,48,47};
  31. u8 key_flage=0;
  32. u8 Key_Value=0;
  33. u16 ID[4];//卡号
  34. u16 id1[4];//卡号
  35. u16 id2[4];//卡号
  36. unsigned char CT[2];//卡类型
  37. /*函数声明*/
  38. u8 Get_RC522_ID(u16 *p);
  39. u8 ROOT_ID_Cheak(u16 *p);
  40. u8 root_ID_Cheak(u16 *p);
  41. u8 NormalUser_Input(u16 *p);
  42. u8 RootUser_Input(u16 *p);
  43. void unlock_check(u16 *p);
  44. void User_ID_Play(u8 y,u8 x,u16 *p);
  45. void Progress_Bar(u8 y,u8 x,u16 num,u8 n);
  46. /*主函数*/
  47. int main(void)
  48. {
  49.     u8 keyvalue,i,j=0;
  50.     delay_init();                     //延时函数初始化
  51.     uart_init(9600);                 //串口初始化为115200
  52.     LED_Init();//初始化
  53.     KEY_Init();
  54.     InitRc522();
  55.         OLED_Init();                        //初始化OLED  
  56.         OLED_Clear();
  57.     BEEP=0;
  58.     STMFLASH_Write(FLASH_SAVE_ADDR+2,(u16*)&people_num,1);
  59.     STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)&flash_adder,1);
  60.     STMFLASH_Write(FLASH_SAVE_ADDR+4,(u16*)&root_num,1);  
  61.     printf("*%d\r\n",RootUser_Input(ROOT_ID));
  62.     ROOT_ID[0]=174;
  63.     printf("***********************\r\n");
  64.     while(1)
  65.     {
  66.                 if(j==0)  OLED_ShowString(10,-1,"Unocking model");
  67.                 j++;
  68.         if(Get_RC522_ID(ID))
  69.         {  
  70.                         User_ID_Play(0,0,ID);
  71.             unlock_check(ID);
  72.             for(i=0; i<4; i++)
  73.             {
  74.                 ID[i]=0;
  75.             }
  76.         }
  77.         /**********************************************************************/
  78.         if(Key_Test()==1)
  79.         {
  80.                         OLED_Clear_Hang(0);
  81.             printf("用户录入模式\r\n");
  82.                         j=1;
  83.             while(1)
  84.             {
  85.                                
  86.                                 if(j==1)
  87.                                 {
  88.                                         OLED_ShowString(0,-1,"User Entering");
  89.                                         OLED_ShowString(0,0,"Key2:Common User");
  90.                                         OLED_ShowString(0,1,"Key3:root User");
  91.                                         OLED_ShowString(0,2,"Key4:Exit");
  92.                                 }
  93.                                 j++;
  94.                 printf("key2管理员用户录入  key3普通用户录入 key4退出录入模式\r\n");
  95.                 if(key_flage==0)
  96.                 {
  97.                     Key_Value=Key_Test();
  98.                     if(Key_Value==2||Key_Value==3) key_flage=1;
  99.                 }
  100.                 /*******************************************************************************/
  101.                 if(Key_Value==2)
  102.                 {
  103.                                         OLED_Clear_Hang(1);
  104.                                         OLED_Clear_Hang(2);
  105.                                         OLED_Clear_Hang(3);
  106.                                         OLED_ShowString(0,0,"ROOT Cheak");
  107.                     while(1)
  108.                     {
  109.                         printf("ROOT身份验证\r\n");
  110.                                                
  111.                         if(Get_RC522_ID(ID))
  112.                         {
  113.                             if(ROOT_ID_Cheak(ID)==0)
  114.                             {
  115.                                 printf("ROOT身份验证成功,请录入管理员卡号\r\n");
  116.                                                                 OLED_Clear_Hang(1);
  117.                                                                 OLED_ShowString(0,0,"ROOT Cheak OK");
  118.                                                                 OLED_ShowString(0,1,"Entering root ID");
  119.                                 while(1)
  120.                                 {
  121.                                     if(Get_RC522_ID(id1))
  122.                                     {
  123.                                         if(id1[0]!=ID[0]||id1[1]!=ID[1]||id1[2]!=ID[2]||id1[3]!=ID[3])
  124.                                         {
  125.                                             if(RootUser_Input(id1))
  126.                                             {
  127.                                                 printf("管理员录入成功\r\n");
  128.                                                 key_flage=0;
  129.                                                 break;
  130.                                             }
  131.                                         }
  132.                                     }
  133.                                                                         if(Key_Test()==4)  break;
  134.                                 }
  135.                                                                 key_flage=0;
  136.                                                                 OLED_Clear();
  137.                                 break;
  138.                             }
  139.                         }
  140.                                                 if(Key_Test()==4)  break;
  141.                     }
  142.                                         key_flage=0;
  143.                                         j=1;
  144.                                         OLED_Clear();
  145.                 }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信