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

標題: 這是一個使用stm32使用mtr4048 讀取UID的代碼,有點亂,但是肯定調(diào)試好了 [打印本頁]

作者: LFC_SOCKET    時間: 2019-9-30 13:32
標題: 這是一個使用stm32使用mtr4048 讀取UID的代碼,有點亂,但是肯定調(diào)試好了
這是一個使用stm32使用mtr4048 讀取身份證UID的代碼,有點亂,但是肯定沒問題

單片機源程序如下:
  1. //頭文件調(diào)用
  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. //函數(shù)申明
  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. ** 函數(shù)名稱: main
  64. ** 功能

  65. 描述: 主函數(shù)入口
  66. ** 參數(shù)描述:無
  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();                                //系統(tǒng)時鐘配置
  81.         Init_NVIC();                                //中斷向量表注冊函數(shù)
  82.         //Init_Usart();                                //串口引腳配置
  83.         //Usart_Configure(115200);        //串口配置 設置波特率為115200
  84.         Init_LED();                                        //LED初始化
  85.         SPI_FLASH_Init();

  86.         #if 1
  87.         //Init_RTC();                                        //內(nèi)部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. ** 函數(shù)名稱: LED_Init
  167. ** 功能描述: LED IO引腳配置
  168. ** 參數(shù)描述:無
  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. ** 函數(shù)名稱: NVIC_Configuration
  182. ** 功能描述: 系統(tǒng)中斷配置
  183. ** 參數(shù)描述:無
  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);                //先占優(yōu)先級1位,從優(yōu)先級3位

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


作者: LFC_SOCKET    時間: 2019-9-30 13:32
有問題可以@我




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本在线免费 | 在线播放中文字幕 | 欧美亚洲综合久久 | 国产精品一区在线观看 | 精品久久久久久久久久久院品网 | 欧美午夜一区 | 国产精品一区一区三区 | 三极网站 | 成人在线播放 | 亚洲成在线观看 | 成人福利在线视频 | 在线看片国产精品 | 午夜精品一区二区三区在线观看 | 欧美日产国产成人免费图片 | 亚洲综合首页 | 亚洲天堂久久 | 羞羞免费网站 | 精品在线| 一级视频黄色 | 免费看的av | 欧美激情亚洲激情 | 九九久久久 | 国产精品永久免费视频 | 成人黄色a| 久久99蜜桃综合影院免费观看 | 久草免费电影 | 国产黄色在线 | 91福利网址 | 国产日韩精品视频 | www.亚洲精品 | 免费国产视频在线观看 | 欧美中文字幕一区二区三区 | 国产精品毛片一区二区三区 | 国产精品区二区三区日本 | 欧美一级www片免费观看 | www.成人.com | 日日骚av | 亚洲欧美日韩精品久久亚洲区 | 999久久精品| 一级片免费视频 | 成人亚洲精品 |