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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f103單片機USB程序 64字節發送

[復制鏈接]
跳轉到指定樓層
樓主
本例程在正點原子Mini開發板上測試通過,應用非常方便,提供出來給有需要的朋友使用。



stm32f103下位機程序:
  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : main.c
  3. * Author             : MCD Application Team
  4. * Version            : V2.2.0
  5. * Description        : Custom HID demo main file
  6. ********************************************************************************
  7. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  8. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  9. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  10. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  11. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  12. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  13. *******************************************************************************/

  14. /* Includes ------------------------------------------------------------------*/
  15. #include "stm32f10x_lib.h"
  16. #include "usb_lib.h"
  17. #include "hw_config.h"

  18. #define GPIO(a,b,c) a->ODR=(a->ODR&(~(1<<b)))|(c ? (1<<b):0)   //GPIO(GPIOA,0,1);
  19. #define IOSET1(a,b) a->BSRR = (1<<b)                           //IOSET1(GPIOA,0);
  20. #define IOSET0(a,b) a->BRR = (1<<b)                                                           //IOSET0(GPIOA,0);
  21. #define GETIO(a,b)  a->IDR & (1<<b)                                                           //x=GETIO(GPIOA,0);

  22. /* Private typedef -----------------------------------------------------------*/
  23. /* Private define ------------------------------------------------------------*/
  24. /* Private macro -------------------------------------------------------------*/
  25. /* Private variables ---------------------------------------------------------*/
  26. /* Extern variables ----------------------------------------------------------*/
  27. /* Private function prototypes -----------------------------------------------*/
  28. void Delay(vu32 nCount);
  29. u8 keydown;

  30. /* Private functions ---------------------------------------------------------*/
  31. u8 Receive_Buffer[64];
  32. u8 InBuffer[0x40];
  33. u32 kc;

  34. /* Private function prototypes -----------------------------------------------*/
  35. /* Private functions ---------------------------------------------------------*/
  36. /*******************************************************************************
  37. * Function Name  : EP1_OUT_Callback.
  38. * Description    : EP1 OUT Callback Routine.
  39. * Input          : None.
  40. * Output         : None.
  41. * Return         : None.
  42. *******************************************************************************/
  43. void EP1_OUT_Callback(void)
  44. {
  45.         u8 DataLen;
  46.         DataLen = GetEPRxCount(ENDP1);
  47.         PMAToUserBufferCopy(Receive_Buffer, ENDP1_RXADDR, DataLen);
  48.         SetEPRxValid(ENDP1);
  49.         IOSET1(GPIOB,6);
  50.         kc=0xffff;

  51. }
  52. /*******************************************************************************
  53. * Function Name  : main.
  54. * Description    : main routine.
  55. * Input          : None.
  56. * Output         : None.
  57. * Return         : None.
  58. *******************************************************************************/
  59. int main(void)
  60. {
  61.        
  62.         u8 i;
  63.         static u8 c=0;
  64.         #ifdef DEBUG
  65.         debug();
  66.         #endif
  67.        
  68.         Set_System();
  69.        
  70.         USB_Interrupts_Config();
  71.        
  72.         Set_USBClock();
  73.        
  74.         USB_Init();
  75.        
  76.         RCC->APB2ENR|=1<<3;    //使能PORTB時鐘
  77.         GPIOB->CRL&=0XF00FFF0F;
  78.         GPIOB->CRL|=0X03300080;
  79.         IOSET1(GPIOB,1);

  80.         while (1)
  81.         {
  82.                 if((GETIO(GPIOB,1))==0)
  83.                 {
  84.                         Delay(100000);
  85.                         if((GETIO(GPIOB,1))==0 && keydown==1)
  86.                         {
  87.                                 keydown=0;
  88.                               c++;
  89.                               //Delay(1000000);
  90.                               for(i=0;i<64;i++)InBuffer[i]=c;
  91.                               /*copy InBuffer to ENDP1 Tx Packet Memory Area*/
  92.                               UserToPMABufferCopy(InBuffer, GetEPTxAddr(ENDP1), 64);
  93.                               SetEPTxCount(ENDP1, 64);
  94.                               /* enable endpoint for transmission */
  95.                               SetEPTxValid(ENDP1);
  96.                                   IOSET1(GPIOB,5);
  97.                         }
  98.                 }
  99.                 else
  100.                 {
  101.                          //IOSET0(GPIOD,2);
  102.                         IOSET0(GPIOB,5);
  103.                         keydown=1;
  104.                 }
  105.                 if(kc!=0)
  106.                 {
  107.                         kc--;
  108.                         Delay(5);
  109.                            if(kc==0)
  110.                         {
  111.                                 IOSET0(GPIOB,6);       
  112.                         }
  113.                 }       
  114.         }
  115. }

  116. /*******************************************************************************
  117. * Function Name  : Delay
  118. * Description    : Inserts a delay time.
  119. * Input          : nCount: specifies the delay time length.
  120. * Output         : None
  121. * Return         : None
  122. *******************************************************************************/
  123. void Delay(vu32 nCount)
  124. {
  125.   for(; nCount!= 0;nCount--);
  126. }

  127. #ifdef  DEBUG
  128. /*******************************************************************************
  129. * Function Name  : assert_failed
  130. * Description    : Reports the name of the source file and the source line number
  131. *                  where the assert_param error has occurred.
  132. ……………………

  133. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
MYCustom_HID.rar (1.24 MB, 下載次數: 48)




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

使用道具 舉報

沙發
ID:156860 發表于 2019-3-30 17:54 | 只看該作者
學習,了解!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品无码网站 | 嫩草一区二区三区 | 欧美日韩国产在线 | 97超碰人人草| 伊人在线 | 国产日韩精品一区 | 久久精品亚洲 | 精品1区 | 婷婷色婷婷 | 中文字幕一页二页 | 天堂中文在线观看 | 二区在线观看 | 国产97视频在线观看 | 日韩电影一区 | 黄色一级免费看 | 国产一区91精品张津瑜 | 都市激情亚洲 | 久草网站| 日本天堂一区二区 | 精品一区二区三区在线观看国产 | 成人免费日韩 | 日韩欧美一级片 | 久久综合一区二区三区 | 亚洲成人在线免费 | aaaaa毛片 | 国产精品99久久久久久www | 欧美精品中文字幕久久二区 | 91精品国产乱码久久蜜臀 | 久久久高清| 久久综合一区 | 国产成人99久久亚洲综合精品 | 久久机热 | 99久久久国产精品 | 四虎影院美女 | 99热在线免费| 视频一区中文字幕 | 国产一区免费 | 九九热这里只有精品在线观看 | 伊人超碰 | www久久国产 | 在线免费观看黄色 |