久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2470|回復: 1
打印 上一主題 下一主題
收起左側

這是一個使用stm32使用mtr4048 讀取UID的代碼,有點亂,但是肯定調試好了

[復制鏈接]
跳轉到指定樓層
樓主
ID:618258 發表于 2019-9-30 13:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是一個使用stm32使用mtr4048 讀取身份證UID的代碼,有點亂,但是肯定沒問題

單片機源程序如下:
  1. //頭文件調用
  2. #include "usually.h"
  3. #include "usart.h"
  4. #include "rtc.h"
  5. #include "stm32f10x_spi.h"
  6. //#include "define.h"
  7. #include "iso14443_4.h"
  8. #include "iso14443a.h"
  9. #include "mh523.h"
  10. #include "stdio.h"
  11. #include "mfrc522.h"
  12. //聲明變量
  13. extern struct Data_Time  timer;
  14. void delay_t(int time)
  15. {
  16.         volatile int d = time * 10;
  17.         int i = 0;
  18.         for(;i < time; i++)
  19.                 d = d+1;
  20. }
  21. //函數申明
  22. void Init_LED(void);
  23. void Init_NVIC(void);
  24. void Delay_Ms(uint16_t time);  
  25. void Delay_Us(uint16_t time);


  26. #define SPI_FLASH_CS_HIGH() GPIO_SetBits(GPIOA, GPIO_Pin_4)
  27. #define SPI_FLASH_CS_LOW() GPIO_ResetBits(GPIOA, GPIO_Pin_4)

  28. void SPI_FLASH_Init(void)
  29. {
  30.   SPI_InitTypeDef  SPI_InitStructure;
  31.   GPIO_InitTypeDef GPIO_InitStructure;

  32.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD, ENABLE);
  33.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

  34.   /* SCK */
  35.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  36.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  37.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  38.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  39.   /* MISO */
  40.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  41.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  42.   /* MOS */
  43.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  44.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  45.   /* CS  */
  46.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  47.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  48.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  49.   SPI_FLASH_CS_HIGH();

  50.   SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  51.   SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  52.   SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  53.   SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  54.   SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  55.   SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  56.   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  57.   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  58.   SPI_InitStructure.SPI_CRCPolynomial = 7;
  59.   SPI_Init(SPI1, &SPI_InitStructure);

  60.   SPI_Cmd(SPI1, ENABLE);
  61. }


  62. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  63. ** 函數名稱: main
  64. ** 功能

  65. 描述: 主函數入口
  66. ** 參數描述:無
  67. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  68. int main(void)
  69. {
  70.         uint8_t t=0;       
  71.         int ret = 0;
  72.         int fd;
  73.                 u8 status = 0;       
  74.         int block = 0;
  75.         u8 preaddata[16];
  76.                 int j = 0, i = block - block % 4;
  77.                 u8 pkey[] = {0x20, 0x10, 0x03, 0x22, 0x00, 0x00};
  78.         u8 psak;
  79.         u8  tag_type[16] = {0};

  80.         SystemInit();                                //系統時鐘配置
  81.         Init_NVIC();                                //中斷向量表注冊函數
  82.         //Init_Usart();                                //串口引腳配置
  83.         //Usart_Configure(115200);        //串口配置 設置波特率為115200
  84.         Init_LED();                                        //LED初始化
  85.         SPI_FLASH_Init();

  86.         #if 1
  87.         //Init_RTC();                                        //內部RTC初始化
  88.         //Time_Update(2013,6,26,0,0,0);

  89. //        pcd_lpcd_start();
  90.         //sleep(1);
  91.          i = 0;
  92.         //for(;;)
  93.         //{
  94.         //        ret = ReadRawRC        (0x0 + i++);
  95.         //        status = ret;
  96.         //}
  97.                 PcdReset();
  98.      //PcdAntennaOff();
  99.      //PcdAntennaOn();  
  100.          __loop_mian:       
  101.         M500PcdConfigISOType('B');

  102.                 ///////////////////////////////////////
  103.          //status = PcdRequest(0x52, tag_type);

  104.          status = pcd_request_b(0x52, tag_type);
  105.         if (status != 0)
  106.         {                                       
  107.                 delay_t(100);
  108.                 PcdAntennaOff();
  109.                 goto __loop_mian;
  110.         }
  111.         #if 1

  112.                  status = pcd_attri_b(0x52, tag_type);
  113.         if (status != 0)
  114.         {                                       
  115.                 delay_t(100);
  116.                 goto __loop_mian;
  117.         }
  118.                  status = get_idcard_num(0x52, tag_type);
  119.         if (status != 0)
  120.         {                                       
  121.                 delay_t(100);
  122.                 goto __loop_mian;
  123.         }
  124.                 goto __loop_mian;
  125. /////////////////////////////////
  126.         status = PcdAnticoll(tag_type);
  127.         if(status != 0)
  128.         {
  129.                 delay_t(100);
  130.                 goto __loop_mian;
  131.         }

  132.         #if 1
  133. //        printf("ID %02X%02X%02X%02X\n", tag_type[0], tag_type[1], tag_type[2], tag_type[3]);
  134. ////////////////////////////
  135.         status =  PcdSelect(tag_type);
  136.                 if(status != 0)
  137.                         {
  138.                                 delay_t(100);
  139.                 goto __loop_mian;
  140.                         }

  141. //        printf("psak %02X\n", psak);


  142.         status = PcdAuthState(0x60, 7, pkey,tag_type );
  143.         if(status != 0)
  144.         {
  145.                                        
  146.                                         delay_t(100);
  147.                 goto __loop_mian;
  148.         }


  149.                        
  150.                         PcdRead(4,preaddata);
  151.                         if(status != 0)
  152.                         {
  153.                                
  154.                                         delay_t(100);
  155.                                         goto __loop_mian;
  156.                         }
  157.         LED1 = ~LED1;
  158.                                                 delay_t(10000);
  159.         LED1 = ~LED1;
  160.         #endif
  161.         goto __loop_mian;
  162.         #endif
  163.         #endif
  164. }
  165. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  166. ** 函數名稱: LED_Init
  167. ** 功能描述: LED IO引腳配置
  168. ** 參數描述:無
  169. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  170. void Init_LED(void)
  171. {
  172.         GPIO_InitTypeDef GPIO_InitStructure;                                                                                        //定義一個GPIO結構體變量

  173.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);        //使能各個端口時鐘,重要!!!
  174.        
  175.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;             //配置LED端口掛接到6、12、13端口
  176.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   //通用輸出推挽
  177.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;                   //配置端口速度為50M
  178.           GPIO_Init(GPIOA, &GPIO_InitStructure);                                           //將端口GPIOD進行初始化配置
  179. }
  180. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  181. ** 函數名稱: NVIC_Configuration
  182. ** 功能描述: 系統中斷配置
  183. ** 參數描述:無
  184. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  185. void Init_NVIC(void)
  186. {        
  187.         NVIC_InitTypeDef NVIC_InitStructure;

  188.         #ifdef  VECT_TAB_RAM                                                                          //向量表基地址選擇

  189.           NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);                          //將0x20000000地址作為向量表基地址(RAM)
  190.         #else  

  191.           NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);                 //將0x08000000地址作為向量表基地址(FLASH)  
  192.         #endif
  193.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);                //先占優先級1位,從優先級3位

  194.         NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;                //RTC全局中斷
  195.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //先占優先級1位,從優先級3位
  196.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        //先占優先級0位,從優先級4位
  197.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能該通道中斷
  198.         NVIC_Init(&NVIC_InitStructure);                //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器
  199. }
  200. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  201. ** 函數名稱: Delay_Ms_Ms
  202. ** 功能描述: 延時1MS (可通過仿真來判斷他的準確度)                       
  203. ** 參數描述:time (ms) 注意time<65535
  204. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  205. void Delay_Ms(uint16_t time)  //延時函數
  206. {
  207.         uint16_t i,j;
  208.         for(i=0;i<time;i++)
  209.                   for(j=0;j<10260;j++);
  210. }
  211. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  212. ** 函數名稱: Delay_Ms_Us
  213. ** 功能描述: 延時1us (可通過仿真來判斷他的準確度)
  214. ** 參數描述:time (us) 注意time<65535                                 
  215. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  216. void Delay_Us(uint16_t time)  //延時函數
  217. {
  218.         uint16_t i,j;
  219.         for(i=0;i<time;i++)
  220.                   for(j=0;j<9;j++);
  221. }
  222. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  223. End:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D
  224. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
復制代碼

所有資料51hei提供下載:
測試程序:RTC萬年歷實驗(串口接收 波特率115200).7z (209.35 KB, 下載次數: 7)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:618258 發表于 2019-9-30 13:32 | 只看該作者
有問題可以@我
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清免费 | 久久不射网 | 亚洲成av人片在线观看 | 日韩美女在线看免费观看 | 亚洲免费一区 | 久久久久亚洲 | 国产亚洲网站 | 国内久久精品 | 成人精品毛片 | 日本a视频 | 欧美在线资源 | 久视频在线 | 国产探花在线精品一区二区 | 国产乱码精品一区二区三区五月婷 | 国产91久久久久久久免费 | 久久精品这里精品 | 亚洲成人观看 | 国产成人免费在线 | 国产真实精品久久二三区 | 亚洲一区二区三区视频 | 91精品观看 | 国产欧美日韩视频 | 欧洲精品久久久久毛片完整版 | 久草中文网 | 国产黄色大片在线免费观看 | 四虎影视免费在线 | 日本又色又爽又黄又高潮 | 四虎海外| 美女一级a毛片免费观看97 | 国产精品无码专区在线观看 | 国产一级视频在线观看 | 91久久夜色精品国产网站 | 久久久久久成人网 | 国产高清免费视频 | 亚洲欧美激情国产综合久久久 | 老司机深夜福利网站 | 日本视频一区二区三区 | 在线观看中文字幕视频 | 亚洲男人天堂网 | 真人一级毛片 | 日韩在线视频免费观看 |