本例程在正點原子Mini開發板上測試通過,應用非常方便,提供出來給有需要的朋友使用。
0.png (57.8 KB, 下載次數: 53)
下載附件
2017-7-3 23:12 上傳
stm32f103下位機程序:
- /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
- * File Name : main.c
- * Author : MCD Application Team
- * Version : V2.2.0
- * Description : Custom HID demo main file
- ********************************************************************************
- * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
- * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
- * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
- * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
- * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
- * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
- *******************************************************************************/
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x_lib.h"
- #include "usb_lib.h"
- #include "hw_config.h"
- #define GPIO(a,b,c) a->ODR=(a->ODR&(~(1<<b)))|(c ? (1<<b):0) //GPIO(GPIOA,0,1);
- #define IOSET1(a,b) a->BSRR = (1<<b) //IOSET1(GPIOA,0);
- #define IOSET0(a,b) a->BRR = (1<<b) //IOSET0(GPIOA,0);
- #define GETIO(a,b) a->IDR & (1<<b) //x=GETIO(GPIOA,0);
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Extern variables ----------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- void Delay(vu32 nCount);
- u8 keydown;
- /* Private functions ---------------------------------------------------------*/
- u8 Receive_Buffer[64];
- u8 InBuffer[0x40];
- u32 kc;
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /*******************************************************************************
- * Function Name : EP1_OUT_Callback.
- * Description : EP1 OUT Callback Routine.
- * Input : None.
- * Output : None.
- * Return : None.
- *******************************************************************************/
- void EP1_OUT_Callback(void)
- {
- u8 DataLen;
- DataLen = GetEPRxCount(ENDP1);
- PMAToUserBufferCopy(Receive_Buffer, ENDP1_RXADDR, DataLen);
- SetEPRxValid(ENDP1);
- IOSET1(GPIOB,6);
- kc=0xffff;
-
- }
- /*******************************************************************************
- * Function Name : main.
- * Description : main routine.
- * Input : None.
- * Output : None.
- * Return : None.
- *******************************************************************************/
- int main(void)
- {
-
- u8 i;
- static u8 c=0;
- #ifdef DEBUG
- debug();
- #endif
-
- Set_System();
-
- USB_Interrupts_Config();
-
- Set_USBClock();
-
- USB_Init();
-
- RCC->APB2ENR|=1<<3; //使能PORTB時鐘
- GPIOB->CRL&=0XF00FFF0F;
- GPIOB->CRL|=0X03300080;
- IOSET1(GPIOB,1);
- while (1)
- {
- if((GETIO(GPIOB,1))==0)
- {
- Delay(100000);
- if((GETIO(GPIOB,1))==0 && keydown==1)
- {
- keydown=0;
- c++;
- //Delay(1000000);
- for(i=0;i<64;i++)InBuffer[i]=c;
- /*copy InBuffer to ENDP1 Tx Packet Memory Area*/
- UserToPMABufferCopy(InBuffer, GetEPTxAddr(ENDP1), 64);
- SetEPTxCount(ENDP1, 64);
- /* enable endpoint for transmission */
- SetEPTxValid(ENDP1);
- IOSET1(GPIOB,5);
- }
- }
- else
- {
- //IOSET0(GPIOD,2);
- IOSET0(GPIOB,5);
- keydown=1;
- }
- if(kc!=0)
- {
- kc--;
- Delay(5);
- if(kc==0)
- {
- IOSET0(GPIOB,6);
- }
- }
- }
- }
- /*******************************************************************************
- * Function Name : Delay
- * Description : Inserts a delay time.
- * Input : nCount: specifies the delay time length.
- * Output : None
- * Return : None
- *******************************************************************************/
- void Delay(vu32 nCount)
- {
- for(; nCount!= 0;nCount--);
- }
- #ifdef DEBUG
- /*******************************************************************************
- * Function Name : assert_failed
- * Description : Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
MYCustom_HID.rar
(1.24 MB, 下載次數: 48)
2017-7-3 19:47 上傳
點擊文件名下載附件
STM32F103C8T6芯片USB驅動代碼 下載積分: 黑幣 -5
|