標(biāo)題:
stm32f103單片機(jī)USB程序 64字節(jié)發(fā)送
[打印本頁(yè)]
作者:
lussby
時(shí)間:
2017-7-3 19:48
標(biāo)題:
stm32f103單片機(jī)USB程序 64字節(jié)發(fā)送
本例程在正點(diǎn)原子Mini開發(fā)板上測(cè)試通過,應(yīng)用非常方便,提供出來(lái)給有需要的朋友使用。
0.png
(57.8 KB, 下載次數(shù): 53)
下載附件
2017-7-3 23:12 上傳
stm32f103下位機(jī)程序:
/******************** (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時(shí)鐘
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.
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
MYCustom_HID.rar
(1.24 MB, 下載次數(shù): 48)
2017-7-3 19:47 上傳
點(diǎn)擊文件名下載附件
STM32F103C8T6芯片USB驅(qū)動(dòng)代碼
下載積分: 黑幣 -5
作者:
my_name_wyl
時(shí)間:
2019-3-30 17:54
學(xué)習(xí),了解!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1