找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 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)
回复

使用道具 举报

ID:470070 发表于 2019-11-6 22:50 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表