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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32 USB讀卡器源碼資料分享一下

[復制鏈接]
跳轉到指定樓層
樓主
ID:274717 發表于 2018-6-9 13:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一點資料拿份

單片機源程序如下:
  1. /*
  2. *******************************************************************************
  3. * Copyright (c) 2008,       
  4. * All rights reserved.
  5. *
  6. * File Name                        : Main.c
  7. * Project                          :  
  8. * Author                        :
  9. * Version                          : 1.0.0
  10. * Date                                : 12/11/2008
  11. * Description                :
  12. *******************************************************************************
  13. */

  14. /*
  15. *************************************修改日志**********************************

  16. *******************************************************************************
  17. */

  18. #include "Includes.h"

  19. /*
  20. *******************************************************************************
  21. * 常量定義
  22. *******************************************************************************
  23. */
  24. #define     PROC_CNT                             0x09
  25. #define                MODEM_TEST                                0

  26. /*
  27. *******************************************************************************
  28. * 類型定義
  29. *******************************************************************************
  30. */
  31. typedef struct
  32. {
  33.     void (*proc)(void);     //處理程序//
  34.     s8 TaskTick;            //時間片大小//
  35. }sTask;

  36. /*
  37. *******************************************************************************
  38. * 變量定義
  39. *******************************************************************************
  40. */
  41. s32 SoftDog = 0;
  42. static u8 Task_Cnt;
  43. bool        LicenseOK = FALSE;
  44. const u8 Version[]=" [Version 1.0.0]";
  45. u8 time_val[PROC_CNT]={10, 1000, 10, 10, 10, 100, 10, 100};    //設置時間片初始值//
  46. const sTask Task[PROC_CNT] = {
  47.                                           {APP_Task, 2},
  48.                       {FILE_Monitor, 1000},
  49.                       {NULL, 10},
  50.                       {NULL, 10},
  51.                       {NULL, 10},
  52.                       {NULL, 100},
  53.                       {NULL, 10},
  54.                       {NULL, 100},
  55.                       };                          //任務棧初始化//

  56. /*
  57. *******************************************************************************
  58. * 函數原型定義
  59. *******************************************************************************
  60. */

  61. u16 DetectResetReason(void)
  62. {
  63.         u16 ResetFlag = 0;
  64.        
  65.           if (SET == RCC_GetFlagStatus(RCC_FLAG_HSIRDY))
  66.           {
  67.                   ResetFlag |= 0x0001;
  68.           }
  69.           if (SET == RCC_GetFlagStatus(RCC_FLAG_HSERDY))
  70.           {
  71.                   ResetFlag |= 0x0002;
  72.           }
  73.           if (SET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY))
  74.           {
  75.                   ResetFlag |= 0x0004;
  76.           }
  77.           if (SET == RCC_GetFlagStatus(RCC_FLAG_LSERDY))
  78.           {
  79.                   ResetFlag |= 0x0008;
  80.           }
  81.           if (SET == RCC_GetFlagStatus(RCC_FLAG_LSIRDY))
  82.           {
  83.                   ResetFlag |= 0x0010;
  84.           }
  85.           if (SET == RCC_GetFlagStatus(RCC_FLAG_PINRST))
  86.           {
  87.                   ResetFlag |= 0x0020;
  88.           }
  89.           if (SET == RCC_GetFlagStatus(RCC_FLAG_PORRST))
  90.           {
  91.                 ResetFlag |= 0x0040;
  92.           }
  93.           if (SET == RCC_GetFlagStatus(RCC_FLAG_SFTRST))
  94.           {
  95.                   ResetFlag |= 0x0080;
  96.           }
  97.           if (SET == RCC_GetFlagStatus(RCC_FLAG_IWDGRST))
  98.           {
  99.                   ResetFlag |= 0x0100;
  100.           }
  101.           if (SET == RCC_GetFlagStatus(RCC_FLAG_WWDGRST))
  102.           {
  103.                   ResetFlag |= 0x0200;
  104.           }
  105.           if (SET == RCC_GetFlagStatus(RCC_FLAG_LPWRRST))
  106.           {
  107.                   ResetFlag |= 0x0400;
  108.           }

  109.         return ResetFlag;
  110. }

  111. void DisplayResetReason(u16 Reason)
  112. {
  113.         if ((Reason & 0x0001) == 0x0001)
  114.         {
  115.                 Trace("RCC_FLAG_HSIRDY\r\n");
  116.         }
  117.         if ((Reason & 0x0002) == 0x0002)
  118.         {
  119.                 Trace("RCC_FLAG_HSERDY\r\n");
  120.         }
  121.         if ((Reason & 0x0004) == 0x0004)
  122.         {
  123.                 Trace("RCC_FLAG_PLLRDY\r\n");
  124.         }
  125.         if ((Reason & 0x0008) == 0x0008)
  126.         {
  127.                 Trace("RCC_FLAG_LSERDY\r\n");
  128.         }
  129.         if ((Reason & 0x0010) == 0x0010)
  130.         {
  131.                 Trace("RCC_FLAG_LSIRDY\r\n");
  132.         }
  133.         if ((Reason & 0x0020) == 0x0020)
  134.         {
  135.                 Trace("RCC_FLAG_PINRST\r\n");
  136.         }
  137.         if ((Reason & 0x0040) == 0x0040)
  138.         {
  139.                 Trace("RCC_FLAG_PORRST\r\n");
  140.         }
  141.         if ((Reason & 0x0080) == 0x0080)
  142.         {
  143.                 Trace("RCC_FLAG_SFTRST\r\n");
  144.         }
  145.         if ((Reason & 0x0100) == 0x0100)
  146.         {
  147.                 Trace("RCC_FLAG_IWDGRST\r\n");
  148.         }
  149.         if ((Reason & 0x0200) == 0x0200)
  150.         {
  151.                 Trace("RCC_FLAG_WWDGRST\r\n");
  152.         }
  153.         if ((Reason & 0x0400) == 0x0400)
  154.         {
  155.                 Trace("RCC_FLAG_LPWRRST\r\n");
  156.         }
  157. }

  158. /*
  159. *******************************************************************************
  160. * 函數描述:任務調度鉤子
  161. * 輸入參數:無
  162. * 輸出參數:無
  163. * 返回參數:無
  164. *******************************************************************************
  165. */
  166. s16 TaskTimerHook(void)
  167. {
  168.     u8 i;

  169.     for (i=0;i<PROC_CNT;i++)
  170.     {
  171.         if (time_val[i] > 0)
  172.         {
  173.             time_val[i]--;
  174.         }
  175.     }
  176.     if (SoftDog > 0)
  177.     {
  178.             SoftDog--;
  179.     }
  180.     else
  181.     {
  182.             i = 0;
  183.         BSP_UartPollSend(USART1, "SoftDog!\r\n\0");       
  184.             BSP_SysReset();
  185.     }

  186.         return 0;
  187. }

  188. FATFS fs;            // Work area (file system object) for logical drive
  189. int main(void)
  190. {
  191.         u16 reason = 0;

  192.         reason = DetectResetReason();
  193.           /* Initialize the Demo */
  194.     SoftDog = 60 * OS_TICKS_PER_SEC;                                //喂軟狗//
  195.           BSP_SysInit();

  196.           USB_DetectInit(ENABLE);

  197.         DisplayResetReason(reason);

  198.         Timer_Register(TaskTimerHook, 1);
  199.         Timer_Register(SYS_Timer, 1);

  200.     // Register a work area for logical drive 0
  201.     f_mount(0, &fs);

  202.         CFG_Init();

  203.         //FILE_Scan("/");
  204.        
  205.         FILE_List("/linedata");
  206.        
  207.         FILE_Append("/linedata/rec.txt", "test write data!\r\n", strlen("test write data!\r\n"));

  208.     while (1)
  209.     {
  210.         for (Task_Cnt=0;Task_Cnt<PROC_CNT;Task_Cnt++)
  211.         {
  212.             if (0 == time_val[Task_Cnt])
  213.             {
  214.                 time_val[Task_Cnt] = Task[Task_Cnt].TaskTick;
  215.                 if (Task[Task_Cnt].proc != NULL)
  216.                 {
  217.                                          if (LicenseOK)
  218.                                         {
  219.                                 Task[Task_Cnt].proc();
  220.                         }
  221.                 }
  222.             }
  223.                         USB_DiskProbe();
  224.             BSP_RESET_DOG();                        
  225.             SoftDog = 60 * OS_TICKS_PER_SEC;                                //喂軟狗//
  226.         }
  227.     }
  228.        
  229. }

復制代碼

所有資料51hei提供下載:
USB讀卡器.rar (1.3 MB, 下載次數: 15)


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

使用道具 舉報

沙發
ID:470070 發表于 2019-11-6 22:50 | 只看該作者
此帖僅作者可見

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日夜夜天天综合 | 久久久久九九九女人毛片 | 在线视频a | 久久免费精品 | 亚洲一区欧美 | 国产a视频 | 91精品在线观看入口 | 久久精品小视频 | 岛国视频 | 日韩在线观看中文字幕 | 成年免费大片黄在线观看一级 | 亚洲国产一区视频 | 一区二区中文字幕 | 午夜不卡一区二区 | 免费观看的av毛片的网站 | www国产亚洲精品久久网站 | 中文字幕日韩欧美一区二区三区 | 亚洲第一区久久 | 欧美一区 | 亚洲国产精品网站 | 亚洲日日夜夜 | 免费在线播放黄色 | 欧美中文字幕在线观看 | 国产成人精品一区二区三区四区 | 91五月婷蜜桃综合 | 成人精品一区二区三区四区 | 最新一级毛片 | 一区二区三区国产精品 | 91精品国产一区二区三区动漫 | 成人欧美一区二区三区1314 | 国产精品亚洲视频 | 狠狠操你 | 亚洲精彩免费视频 | 国产91久久精品一区二区 | a亚洲精品 | 欧美大片一区二区 | 亚洲国产精品日韩av不卡在线 | 日韩免费高清视频 | 中文字幕免费视频 | 精品国产乱码久久久久久a丨 | 亚洲国产欧美一区 |