如何利用stm32cubemx usb hid进行STM32开发

51STM32CubeF4使用入门_51cube-牛bb文章网
51STM32CubeF4使用入门 51cube
所属栏目:
UM1730STM32CubeF4使用入门山西大学电子信息工程系王晓峰Wangxiaofeng@引言STMCube是由意法半导体原创倡议,旨在通过减少开发负担,时间和费用来为开发者提供轻松的开发体验。STMCube覆盖了STM32全系列。STM32Cube版本1.x包括:1、STM32CubeMX,一个图形软件配置工具,允许通过图形化向导来生成C初始化代码。2、一个广泛的嵌入式软件平台,按照产品系列提供(例如STM32CubeF4对应STM32F4系列)。此平台包括STM32CubeHAL(一个STM32的硬件抽象层,确保STM32之间最大的可移植性),再加上配套的中间件(RTOS,USB,TCP/IP和图形)。所有嵌入式软件组件都提供完整的例程。本用户手册描述了如何开始使用STM32CubeF4固件包。第一部分,描述了STM32CubeF4固件包的主要特性,STMCube的首创倡议。第二部分和第三部分提供了一个STM32CubeF4架构概览和固件包结构。1STM32CubeF4主要特性STM32CubeF4集合了所有开发STM32F4应用嵌入式软件组件。依照STMCube倡议,这些组件具有高度的可移植性,不止在STM32F4系列中,也包括所有STM32系列。STM32CubeF4高度兼容STM32CubeMX,STM32CubeMX允许用户生成初始化代码。包内包括一个底层硬件抽象层(HAL),HAL覆盖了微控制器硬件,集成了广泛的例程,可运行在意法半导体的开发板上。为了用户便利,硬件抽象层为开源BSD许可协议。STM32CubeF4包含了一套中间件组件,带有对应的例程。它们具有非常自由的许可证条款:1、CMSIS-RTOS贯彻了FreeRTOS的开源解决方案2、TCP/IP协议栈基于开源的LwIP解决方案3、FAT文件系统基于开源的FatFs解决方案,支持NAND闪存访问4、完整的USB主从设备协议栈支持。-主类:HID,MSC,CDC,Audio,MTP-设备类:HID,MSC,CDC,Audio,DFU5、图形-STemWin,一个专业的图形栈解决方案,提供二进制格式支持,并且基于我们伙伴的SEGGERemWin。STM32CubeF4包内提供所有这些中间件的实现示例。-LibJPEG,一个开源的工具,可以再STM32实现JPEG图片的编码和解码。6、SSL/TLS安全层,基于开源的PolarSSLSTM32CubeF4包括在STM32Cube包内。请注意STM32Cube将逐步完善并覆盖STM32系列。第3/14页2STM32CubeF4建构概览STM32CubeF4固件解决方案基于并围绕三个独立的层,这些层可以容易的互动,如图1所示:层0:此层被分为三个子层。1、板级支持包(BSP):此层提供一组硬件硬件上的硬件相关API接口(音频编码,I/O扩展,触摸屏,SRAM驱动,LCD驱动等)和以下两部分:-组件:外部设备相关驱动,但不与STM32相关,组件驱动提供特殊的API接口到BSP驱动的外部组件,并可被接口到任何板上。-BSP驱动:它使能了组件驱动被连接到特定的硬件并提供一组用户友好的API,这些API的命名规则是:BSP_FUNCT_Action():例如BSP_LED_Init(),BSP_LED_On()BSP基于模块化结构,这使得它只需执行底层程序就可以轻松接口到其他硬件上。2、硬件抽象层(HAL):此层提供底层驱动和硬件接口方法,实现与上层互动(应用,库,协议栈)。它提供分类的,多实例和面向功能的API,这些API通过提供随时可用流程来减轻用户开发应用的负担。例如,与外围通信(I2S,UART),它提供的API可以初始化和配置外围设备,基于轮询、终端或DMA流程的管理数据传输,和通信中可能出现的管理通信错误。HAL驱动API被分为2类,普通API提供STM32系列通用和常见功能,扩展API为特殊家族或特殊的部件号提供特殊和定制的功能。3、基本外设常用例程:此层包含了STM32F4外设基本操作的例程,仅使用了HAL和BSP资源。层1:此层被分为两个子层:1、中间件:一组库,覆盖了USB主从设备库,STemWin,LibJPEG,FreeRTOS,FatFS,LwIP,andPolarSSL。此层的组件水平互动可通过调用特定API直接实现,同时可通过特殊的回叫和静态宏实现与底层驱动的垂直互动,回叫和静态宏实现在库系统调用接口中。例如,FatFs通过实现磁盘I/O驱动去访问microSD或USBMassStorage类。每个中间件组件的主要特性如下:USB主从设备库-多个USB类支持(Mass-Storage,HID,CDC,DFU,AUDIO,MTP)-支持多类型包传输特性:允许发送大型数据包而不用将其分成多个包来适应最大包尺寸限制。-使用配置文件来改变内核和库配置,而不用改变库代码(只读)-包括32位校准数据结构来控制DMA高速模式传输-通过配置文件支持来自用户层的多类型USBOTG内核实例-RTOS和独立操作-通过抽象层使用配置文件来实现链接到底层驱动,可以避免任何库和底层驱动之间的从属关系STemWin图形栈-GUI开发专业级解决方案,基于Segger’semWin的解决方案-最优化显示驱动-软件工具,可生产代码和位图编辑的(STemWinBuilder)LibJPEG-开源标准-C实现JPEG图像编解码FreeRTOS-开源标准-CMSIS通用层-低功耗模式下的动态时钟操作-整合进所有的STM32Cube中间件模块FATFilesystem-FATFSFAT开源库-长文件名支持-动态多驱动支持-RTOS和独立操作-提供microSDandUSBhostMass-storage类例程LwIPTCP/IPstack-开源标准-RTOS和独立操作2、基于中间件的例程:每个中间件伴随1个或多个例程(例如Applications),展示了如何使用中间件。也提供了多中间件整合例程。层2:此层为单层,它是一个全局实时和图形示例,基于中间件服务层。基于硬件功能,底层抽象层和应用实现外设的基本使用。51STM32CubeF4使用入门_51cube3STM32CubeF4固件包概览3.1已支持的STM32F4设备和硬件STM32Cube提供一个高度可移植的硬件抽象层(HAL),HAL建立在分类的模块化的结构上,允许上层,中间件和应用去实现它们的功能而不用深度了解MCU。STM32Cube改善了库代码的重利用能力和保证了轻松的移植程序从一个设备到另一个。STM32CubeF4提供了所有的STM32F4系列设备的支持。你只需定义正确的宏在stm32f4xx.h中。下表列出了基于不用的STM32F4设备,需要定义的宏。(这些宏也可以在编译预处理中定义)STM32CubeF4特性的一组丰富的例程和各层示范使得理解和使用HAL驱动和中间件都变的更容易。这些例程可运行在任何的意法半导体开发板上,详见下表。STM32CubeF4固件能运行在任何适配硬件上。这意味你能简单的升级BSP驱动来转移提供的例程到你自己的硬件上,只要它们具有相同的硬件功能。3.2固件包概览STM32CubeF4固件解决方案以单包形式提供,包结构如下图。开发板的BSP驱动包含STM32F4XXCMSIS文件,它定义了外设的寄存器声明,位声明,地址映射。STM32F4XX所有组件的HAL驱动STemWin专家栈,来自SEEGER,可利用的二进制文件USB主设备库,同时支持OTGFS和HS内核,并且支持以下类(HID,MSC,CDC,Audio,MTP)USB设备库,支持OTGFS和HS内核,并且支持以下(HID,MSC,CDC,Audio,DFU)一组例程,按照开发板来组织,以工程形式提供。WIN32目录包含STemWin视窗模拟工程其他组件对每一款开发板,一组例程以EWARM,MDK-ARMandTrueSTUDIO的预工程形式提供。-------下图展示了STM324xG-EVAL评估版的工程结构。此结构与其他板完全相同。此例程根据使用的STM32Cube层做了分类,并命名如下:层0的例程叫做例程,使用了HAL驱动,不包括中间件层1的例程叫做应用,提供了每个中间件典型的使用示例层2的例程叫做范例,它实现了所有的HAL,BSP和中间件为用户提供一个空工程便于快速建立任何固件应用在目标板上。所有例程都有以下结构,\inc文件夹包含所有的头文件\Src包含源文件\EWARM,\MDK-ARMand\TrueSTUDIO文件夹包含对应预配置工程readme.txt描述了例程作用和工作需要的环境要求下表提供了每种开发板的例程,应用,范例的数量51STM32CubeF4使用入门_51cube4使用入门4.1如何运行你的第一个例程此部分解释了运行STM32CubeF4例程是多么的简单。就像展示的那样,让我们仔细思考去在STM32F4-Discoveryboard上运行简单的LED切换例程,1、在下载完STM32CubeF4固件包后,解压到你选择好的目录中,你只需要确保包结构没有被改变(如图3所示)。2、浏览\Projects\STM32F4-Discovery\Examples3、打开\GPIO,然后打开\GPIO_EXTI4、用常用开发工具打开工程5、重建所有并加载你的镜像到目标存储器6、运行例程:每次你按下用户键4,LED将会切换(更多细节,参考readme)你将了解到一个快速概览,关于如何打开,建立和运行例程。MDK-ARM-在文件夹下,打开\MDK-ARM子文件夹-打开工程名.uvproj工作板-重编译所有文件:Project-&Rebuildalltargetfiles-加载工程镜像:Debug-&Start/StopDebugSession-运行程序:Debug-&Run(F5)4.2如何开发你自己的应用此部分描述了建立一个你自己的应用所需要的必要步骤。1、建立你的工程:你可以从每个开发板提供的空工程建立新的工程,路径在\Projects\&STM32xx_xxx&\Templates,或\Projects\&STM32xx_xxx&\Examples和\Projects\&STM32xx_xxx&\Applications下所有可用的工程(&STM32xx_xxx&参考开发板的名字,如STM32F4-Discovery)空工程提供一个空的主循环功能,这是熟悉STM32CubeF4工程设定的一个不错的起点。它有以下特性:A)它包含HAL,CMSISandBSP等源文件,最小系统代码B)它包含include路径,包含所有固件组件路径C)它定义了支持的STM32F4,允许CMSIS和HAL有正确的配置D)它提供了随时可用的用户文件,预配置如下:-HAL被初始化-系统节拍(SysTick)ISR实现,为HAL_Delay()服务-系统时钟被配置为最大频率。如果你复制了已存在的工程到其他位置,需要重新定义include路径。2、添加必要的中间件到你的工程(可选),可用中间件栈有(USB主从设备库,STemWin,LibJPEG,FreeRTOS,FatFS,LwIP,andPolarSSL)。要找到这些你需要添加到工程文件列表中的源文件,参考每个中间件提供的文档,你也能看一看\Projects\STM32xx_xxx\Applications\&MW_Stack&下可用的应用(&MW_Stack&参考中间件名称,如USB_Device),来获知添加源文件和include路径更好的办法。3、设置固件组件:HAL和中间件提供一套编译时间配置选项,使用头文件中的宏定义#define来实现。一个空配置文件在每个组件内提供,你必须拷贝到工程文件夹下(通常配置文件名为xxx_conf_template.h。“_template”需要被移除,当复制该文件到工程文件夹下时)。配置文件提供足够的信息,可以了解每个配置项的影响。更多细节信息在每个组件的文档中提供。4、启动HAL库:在跳转到主程序后,应用代码需要调用HAL_init()API来初始化HAL库,如下所示:A)设置闪存预读,指令和数据缓存(用户配置可在stm32f4xx_hal_conf.h中通过宏定义来实现)B)设置系统节拍,产生每1ms一次终端。系统时钟由HSI定时(复位后的预设配置)C)设置NVIC组优先级到4D)调用用户文件中的HAL_MspInit()回调函数5、设置系统时钟:通过调用2个API完成系统时钟配置。A)HAL_RCC_OscConfig():设置内部或外部振荡器,PLL源及系数。你能选择设置一个振荡器或所有其他的振荡器。如果不需要系统工作在高频下,你也可以跳过PLL设置。B)HAL_RCC_ClockConfig():设置系统时钟源,闪存预读和AHB,APB预分频。6、外设初始化A)开始,写外设HAL_PPP_MspInit函数。这个函数处理如下:-使能外设时钟-设置外设GPIO-设置DMA通道,使能DMA中断(如果需要)-使能外设中断(如果需要)B)编辑stm32f4xx_it.c来调用需要的中断句柄(外设和DMA),如果需要C)如果计划使用外设中断或DMA,写处理完成回调函数D)在你的main.c文件中,初始化外设句柄结构体,然后调用函数HAL_PPP_Init()来初始化你的外设。7、开发你的应用处理程序:在这一步,你的系统已经就绪,你可以开始开发你的应用代码。A)HAL提供直观的,随时可用的API,用来设置外设和支持轮询,中断和DMA编程模块,以便适应任何应用需求,更多如何使用每个外设的细节,参考提供的例程。B)如果你的应用有实时要求,你可以找到大量的例程来展示如何使用FreeRTOS并结合进所有的中间件栈。这是一个不错的开发起点。预设HAL实现中,系统节拍定时器是时基源。系统节拍常用来定时产生中断。如果HAL_Delay()由外设ISR进程调用,系统节拍中断必须有更高的优先级(中断号更小),相比其他外设中断。否则,调用者ISR进程将被阻断。函数影响时基配置,被声明为__Weak,如果用户文件内的其他执行做出撤销的可能(使用通用定时器为例或其他时钟源)。更多细节请参考HAL_TimeBase例程。4.3使用STM32CubeMX来生成初始化C代码4.2部分的步骤1到6还有一个方法可以实现,通过使用STM32CubeMX工具可以轻松的生成系统初始化代码,外设和中间件。步骤如下:1、选取满足需求的意法半导体STM32微控制器。2、设置每一个需要的嵌入式软件组件,引脚冲突解决,时钟设置帮助,功耗计算器,一个多功能MCU外设配置器和中间件栈(USB,TCP/IP)。3、生成的初始化C代码基于可选配置。此代码生成后就用于多种开发环境。用户代码在下一次生成代码是将被保留。更多信息,请参考“STM32CubeMXforSTM32configurationa(ndinitializationCcodegeneration”用户手册(UM1718).。4.4如何得到STM32CubeF4发布的更新STM32CubeF4固件包伴随有更新功能:STM32CubeUpdater,也可在STM32CubeMX工具的菜单找的此功能。此更新解决方案侦测到新的固件发布后,将从官网自动下载并安装补丁。4.4.1如何安装和运行STM32CubeUpdater更新程序1、双击STM32CubeUpdater.exe文件并开始安装2、接收许可证条款并继续安装步骤一旦安装成功,STM32CubeUpdater将自动启动,并可在程序文件夹下找到。STM32CubeUpdater图标将出现在系统托盘中:1、右键点击更新图标并选择更新设定来设置更新链接和手动自动查新判断。(参见STM32CubeMXUserguide-UM1718section3获得更多细节)5常见问答1、STM32CubeF4固件的许可证是什么?答:HAL以无限制BSD许可形式发布。中间件栈伴随的许可模式允许简单的重利用,并运行在ST设备上。中间件基于广为人知的,开源解决方案((FreeRTOS,FatFs,LwIPandPolarSSL),具有用户友好的许可条款。更多细节,参考每个中间件的许可协议。2、什么开发板可被STM32CubeF4firmwarepackage支持?答:STM32CubeF4firmwarepackage固件包为以下开发板提供支持BSP驱动和随时可用例程:STM324x9I_EVAL,STM324xG_EVAL,STM32F4-Discovery,STM32F401-Discovery,STM32F429I-Discovery,STM32F4xx-Nucleo.。3、标准外设库是否有任何链接?答:STM32Cube硬件抽象层代替了标准外设库。HALAPI提供比标准外设库更高级的硬件抽象层。HAL致力于外设通用功能而不是硬件。更高的抽象层允许定义一组用户友好的API,可以更容易的从一个产品转换到另一个产品上。用户目前使用的标准外设库将获得移植帮助,已存在的标准外设库继续被支持,但不推荐用在新设计里。4、是否HAL从中断或DMA中获益?如何实现?答:是的,HAL支持3种API编程模式:轮询,中断和DMA(不论是否生成中断)。5、是否有例程支持随时可用工具组的工程?答:是的。STM32CubeF4提供了一组丰富的例程和应用(STM324x9I_EVAL有140例)。它们伴随在预配置工程中。6、如何实现产品外设特性管理?答:HAL提供扩展的API,例如特殊函数作为普通API的附加来支持一些产品/系列独有的特性。7、STM32CubeMX为什么能生成基于嵌入式软件的代码?答:STM32CubeMX内建了STM32微控制器的所有数据,包括它们的外设和软件。这保证了工具能提供一个图形化的描述提供给用户并按照用户配置生成*.h/*.c文件。8、如何定期获得最新的STM32CubeF4固件发布更新包?答:STM32CubeF4固件包伴随有STM32CubeUpdater更新组件,可被设置为自动或手动检查新的固件包更新或补丁。STM32CubeUpdater内置在STM32CubeMX工具中。在用户使用STM32CubeMX时,可获得STM32CubeMX自身更新和STM32CubeF4固件包更新。细节参见4.4部分。6版本历史日,第一版日,第二版欢迎您转载分享:
更多精彩:STM32CubeF4使用入门_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32CubeF4使用入门
||文档简介
山西大学电子系教师|
总评分4.1|
浏览量28345
&&基​于​意​法​半​导​体​开​源​文​档
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢> STM32CUBEMX
STM32CUBEMX
在电子工程世界为您找到如下关于“STM32CUBEMX”的新闻
STM32CUBEMX资料下载
使用STM32CubeMX实现串口发送数据...
STM32CUBEMX相关帖子
值正常获取,
& && &我的疑惑在于:
& && && && &1、造成AD值不稳定的原因是什么?
& && && && &2、stm32cubemx生成的代码是不是存在问题?
STM32CUBEMX配置软件芯片生成C代码芯片配置BOOTMDK5自建第一个工程源码查看及编辑Source Insight软件使用开始文件分析 .s时钟配置,LED3灯闪烁uarst1串口——调试小技巧系统节拍SYSTICK——10微秒延时蜂鸣器——三极管和蜂鸣器类型芯片唯一ID读取——可以做加密使用循环冗余校验CRC——数据的福音ADC1、3模数转换,1秒钟取值一次RTC超强日历——功能非常强,农历新历...
本帖最后由 newphj 于
15:16 编辑
STM32CuBeMX CAN引脚复用 PB8,PB9..程序不能联调,第二次下载的时候提示找不到MCU。直接引脚PA11,PA12就正常运行。搞不懂了。STM32F103VET6
CAN引脚复用 不懂帮顶
PB8,PB9 可以复用的啊
[url]/content/ccc...
@liu583685
【ufun学习】cadence源文件
[ufun学习] [忙里偷闲学习ufun_1]开发环境搭建
[ufun学习] [忙里偷闲学习ufun_2]STM32CUBEMX配置软件芯片生成C代码
[ufun学习] [忙里偷闲学习ufun_3]芯片配置BOOT
[ufun学习] [忙里偷闲学习ufun_4]MDK5自建第一个工程
【NUCLEO-F767ZI】NUCLEO-F767ZI相关分享
本帖最后由 xxxlzjxxx 于
11:18 编辑
& & 要使用CUBEMX和keil玩F767,需要安装相关的软件包。鉴于官网下载速度超级慢,我把下载好的链接放上来。& & STM32CUBEMX的相关下载:链接:http...
十二。保持默认就好
十三。点OK
关闭。。生成代码。直接使用。可以再次修改。重新生成。
[忙里偷闲学习ufun_2]STM32CUBEMX配置软件芯片生成C代码...
本帖最后由 boming 于
21:49 编辑
一.下载软件:1.)Keil MDK5.14 2.)MDKCM516 3.)Stm32f1支持包 4.)Flash下载软件5.)Stm32Cubemx配置软件。6.)Java运行包,Stm32Cubemx配置软件用。7.)CH341驱动。注:Keil MDK5版本以上,分成两部,基本主体部分和支持包部分,如果要开发别的芯片...
; &&&奖励50E金币& && && && && & [STM32CubeMX]OS环境下安装STM32CubeMX+简单串口例程.cn/forum.php?mod=viewthread&tid=492866&amp...
本帖最后由 huaiqiao 于
10:47 编辑
& && &好像STM32CubeMX在4.12后还是哪个版本以后就支持了OS X和Linux。想想windows的也用过,不知道其他两个系统下,这个STM32CubeMX到底感觉咋样呢?虽然实际中使用标准外设库多一些,但是这个STM32CubeMX还是需要慢慢熟悉的。
raw_queue_create 为什么没有队列中元素的大小?我现在在做USB转CAN。&&打算开一个链表,。链表元素是一个我自己定的结构体,结构体长度为12字节。 打算这个列表容纳元素个数是1000个元素、
另外,STM32CUBEMX的USB协议栈中断协议栈,在中断中使用了由滴答定时器提供的函数,HAL_Delay().由于那时候RAWOS系统还没运行,所以会出错的...
STM32CUBEMX视频
STM32CUBEMX创意
本周热门资源推荐}

我要回帖

更多关于 stm32cubemx下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信