├── STM32_USB_Device_Library USB從設備庫
│ │ ├── Class
│ │ │ └── hid
│ │ │ ├── inc
│ │ │ │ └── usbd_hid_core.h
│ │ │ └── src
│ │ │ └── usbd_hid_core.c
│ │ └── Core
│ │ ├── inc
│ │ │ ├── usbd_core.h
│ │ │ ├── usbd_def.h
│ │ │ ├── usbd_ioreq.h
│ │ │ ├── usbd_req.h
│ │ │ └── usbd_usr.h
│ │ └── src
│ │ ├── usbd_core.c
│ │ ├── usbd_ioreq.c
│ │ └── usbd_req.c
│ ├── STM32_USB_OTG_Driver USB OTG 庫
│ │ ├── inc
│ │ │ ├── usb_bsp.h
│ │ │ ├── usb_core.h
│ │ │ ├── usb_dcd.h
│ │ │ ├── usb_dcd_int.h
│ │ │ ├── usb_defines.h
│ │ │ └── usb_regs.h
│ │ └── src
│ │ ├── usb_core.c
│ │ ├── usb_dcd.c
│ │ └── usb_dcd_int.c
從層級上分析,OTG是更加底層的,USBD的文件依賴于USB的文件,從對庫的使用來講,這些文件我們都不需要改動。
我們需要改動的有可能是下面的文件
├── usb_bsp.c
├── usb_conf.h
├── usbd_conf.h
├── usbd_desc.c
├── usbd_desc.h
└── usbd_usr.c
一些邏輯在main.c中操作,考慮如何發數據到主機端
對于一個工程來講
├── stm32f4xx_conf.h
├── stm32f4xx_it.c
├── stm32f4xx_it.h
├── system_stm32f4xx.c
這幾個文件也是從庫里提取出來的,有可能會改動的
STM32F4xx_StdPeriph_Driver 這部分的內容基本上從來沒有動過,是相當底層的驅動文件了
│ ├── CMSIS
│ │ ├── Include
│ │ │ ├── core_cm4.h
│ │ │ ├── core_cm4_simd.h
│ │ │ ├── core_cmFunc.h
│ │ │ └── core_cmInstr.h
│ │ └── ST
│ │ └── STM32F4xx
│ │ ├── Include
│ │ │ ├── stm32f4xx.h
│ │ │ └── system_stm32f4xx.h
│ │ └── Source
│ │ └── Templates
│ │ └── arm
│ │ └── startup_stm32f4xx.s
這些文件也是一般不會去動的,.s文件的名字可能有些區別
下面給出一個修改過的main.c 內容很精簡了
/**
******************************************************************************
* @file main.c
* @author MCD Application Team
* @version V1.0.0
* @date 19-September-2011
* @brief Main program body
******************************************************************************
* @attention
*
* 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.
*
*
? COPYRIGHT 2011 STMicroelectronics
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usbd_hid_core.h"
#include "usbd_usr.h"
#include "usbd_desc.h"
/** @addtogroup STM32F4-Discovery_Demo
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
#if defined ( __ICCARM__ ) /*!< IAR Compiler */
#pragma data_alignment = 4
#endif
#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */
__ALIGN_BEGIN USB_OTG_CORE_HANDLE USB_OTG_dev __ALIGN_END;
__IO uint32_t TimingDelay;
/* Private function prototypes -----------------------------------------------*/
static uint32_t Demo_USBConfig(void);
static void Demo_Exec(void);
/* Private functions ---------------------------------------------------------*/
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
RCC_ClocksTypeDef RCC_Clocks;
/* SysTick end of count event each 10ms */
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);
Demo_Exec();
}
/**
* @brief Execute the demo application.
* @param None
* @retval None
*/
static void Demo_Exec(void)
{
uint8_t buf[4];
buf[0]=0;
buf[1]=7;
buf[2]=7;
buf[3]=0;
/* USB configuration */
Demo_USBConfig();
while(1) {
Delay(5);
USBD_HID_SendReport (&USB_OTG_dev,
buf,
4);
}
}
/**
* @brief Initializes the USB for the demonstration application.
* @param None
* @retval None
*/
static uint32_t Demo_USBConfig(void)
{
USBD_Init(&USB_OTG_dev,
USB_OTG_FS_CORE_ID,
&USR_desc,
&USBD_HID_cb,
&USR_cb);
return 0;
}
/**
* @brief Inserts a delay time.
* @param nTime: specifies the delay time length, in 10 ms.
* @retval None
*/
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/**
* @brief Decrements the TimingDelay variable.
* @param None
* @retval None
*/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
/**
* @brief This function handles the test program fail.
* @param None
* @retval None
*/
void Fail_Handler(void)
{
while(1)
{
Delay(5);
}
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
上一篇:STM32 延時函數高級用法分析
下一篇:stm32f4使用Systick實現延時
推薦閱讀
史海拾趣
隨著市場競爭的加劇和消費者需求的多樣化,啟英泰倫不斷調整和創新其市場策略。為了解決“裝得起”這一問題,公司選擇了將智能語音識別技術集成到智能插座上的新路徑。這一策略不僅降低了功耗的嚴格約束,還對方案的尺寸和成本進行了優化。此外,啟英泰倫還針對不同應用場景進行細分,如照明、風扇等產品交互比較簡單的領域,開發了相應的芯片和解決方案。這些創新策略使啟英泰倫能夠更好地滿足市場需求,保持了在行業內的領先地位。
啟英泰倫(Chiplntelli)公司成立于2015年,專注于人工智能語音芯片及配套應用解決方案的研發。在公司創立初期,團隊面臨了眾多技術挑戰和市場競爭。然而,他們憑借對技術的深刻理解和不懈追求,成功推出了第一代深度神經網絡語音AI芯片CI1006,這款芯片在行業內被認定為首創。這一重要里程碑為啟英泰倫的發展奠定了堅實的基礎,也標志著公司在人工智能語音芯片領域的正式起步。
啟英泰倫(Chiplntelli)公司成立于2015年,專注于人工智能語音芯片及配套應用解決方案的研發。在公司創立初期,團隊面臨了眾多技術挑戰和市場競爭。然而,他們憑借對技術的深刻理解和不懈追求,成功推出了第一代深度神經網絡語音AI芯片CI1006,這款芯片在行業內被認定為首創。這一重要里程碑為啟英泰倫的發展奠定了堅實的基礎,也標志著公司在人工智能語音芯片領域的正式起步。
EUPEC一直致力于技術創新和研發,不斷推動電力半導體技術的進步。在多個關鍵領域,EUPEC都取得了重要的技術突破,如提高電力轉換效率、降低能耗等。這些技術突破不僅提升了EUPEC產品的競爭力,也為客戶帶來了實實在在的經濟效益。同時,EUPEC還積極拓展國際市場,產品廣泛應用于電解鋁、高壓直流輸電、軟啟動、直流傳動、高壓無功補償設備等領域。
1999年,EUPEC從西門子獨立出來,形成了Infineon(英飛凌)公司。作為Infineon的全資子公司,EUPEC繼續專注于電力半導體器件的研發和生產。在這個階段,EUPEC不斷推出創新產品,如IGBT模塊、晶閘管、整流二極管等,憑借其卓越的品質和技術,贏得了客戶的廣泛認可。
隨著產品技術的不斷成熟,Base Two (2) Systems開始積極拓展市場。公司通過與各大電子廠商、分銷商建立緊密的合作關系,將產品推向更廣闊的市場。同時,公司還積極參加各類行業展會和交流活動,與業內同行深入交流,共同探討行業發展趨勢,為公司的長遠發展奠定了堅實的基礎。
測試了個拆板1.5轉3.3的DC-DC的板看驅動能力很不錯主芯片不知道是什么.請大家幫幫忙,看是什么型號小弟在此謝謝了 我這個是外掛MOS的,畫出它的電路圖你們幫我看一下是什么IC, 量了一下反饋電壓 FB的電壓為1.06V 輸出驅動單個大功率LED ...… 查看全部問答∨ |
|
一臺主機怎么才能控制多臺光端機的球機轉動?我試過一臺主機控制一臺光端機的球機能轉動,但是并聯另外一臺光端機 球機都不能轉動了,這是怎么回事?單獨能控制轉動,并聯就不能控制轉動了????請高手指點…………… 查看全部問答∨ |
目前醫療設備的發展正在徹底變革家庭醫療保健市場,人們無需離開家門就能診斷出各種健康狀況。技術的發展使得便攜式自助護理保健系統成為現實,這些系統可以幫助人們監視諸如血壓、血糖和體溫等重要指標。 家庭醫療 ...… 查看全部問答∨ |
我是從事電力行業產品工作的,電力系統現在要搞數字化變電站,要求產品具備IEC61850規約要求的功能,不知有哪位大俠能給提供一些相關的資料(IEC61850的規約我有)。謝謝!… 查看全部問答∨ |
|
用WINDOWS MOBILE 5.0 SDK FOR POCKET PC 開發 2003的程序,大家來討論一下,發言者皆有分!!! MOBILE 5.0 SDK的庫函數非常豐富,但基于WM5.0 SDK開發的程序沒法在PPC2003上。大家一起討論一下辦法,能讓其在PPC2003上也能用?!… 查看全部問答∨ |
|
打算用DSP做圖像采集處理系統,請問用TI的那個型號的DSP較好啊,我想用TMS320C6000系列,但不知道那個具體型號好些那,麻煩各位幫助解答一下,謝謝!… 查看全部問答∨ |
串口查詢方式:單片機通信最常用的方式,也是與PC機通信最多的方式。 心得:主要熟悉串口寄存器的設置,本人遇到一個問題,通信方式的設置,例如采用11.0592M晶振,UBRR=71,正常模式下,波特率是9600;倍速模式是19200.提醒大家看手冊的時候注意U ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 試用Vishay新型“IHLP磁芯損耗計算器”,搶樓贏好禮
- LPC4370重磅來襲 有獎問答贏好禮!
- 電子工程師,如何更好地擁抱GaN?參與問卷有好禮!
- 報名贏京東卡 | 國產FPGA安路科技2024線上新品發布會
- 兆易GD32450I-EVAL免費測評試用
- 追更有驚喜:解救被FSM折磨過的你,justd0解析LSM6DSOX有限狀態機官方例程
- 電路圖站2.0版上線,公開征集網友建議,填寫調查問卷贏積分!
- 全球首款Cortex-M23內核物聯網芯片SAML10和SAM L11系列 闖關獲取SAML10/SAML11法寶,拆除電子界安全危機,贏好禮!
- 邀請好友體驗WEBENCH,禮品豐厚你有他也有!