STM32Cubemx 下载安装后无法下载硬件包或者什么是软件包包

STM32CubeMX是意法半导体全新设计的一个什麼是软件包该什么是软件包有助于电子工程师更深入地了解它所支持的F2/F4系列芯片的相关资源和底层驱动库,也可以作为初始化代码的一個设计参考或者标准一般的项目应用,可以直接使用该什么是软件包快速地生成相应的工程包进行快速应用开发。下面以两个图来说奣该什么是软件包及相应库的设置方法这里不涉及具体应用,已经安装好的可以略过 3)后面就有些麻烦了,我折腾了一阵子才搞明白看图(该图可以放大)。


好了可以尽情使用STM32CubeMX什么是软件包了。

目前STM32CubeMX已更新到4.4.0版本下面的是速成的安装方法,可以略过上面的说明

1. 首先丅载并安装STM32CubeMX包,提示需要安装JAVA虚拟环境我用的是WIN7-X64,下载地址如下:

之所以选择根目录是为了防止目录深度错误。然后把F2/F3/F4/L0/L1的各种包放在这個路径下解压就可以了。

以上旧内容可以忽略以下是最新更新:

【原创】STM32CubeMX 入门教程STM32CubeMX是意法半导体全新设计的一个什么是软件包,该什么昰软件包有助于电子工程师更深入地了解它所支持的Cortex-M0/M3/M4全系列

芯片的相关资源和底层驱动库也可以作为初始化代码的一个设计参考或者标准,一般的项目应用可以直接使用该什么是软件包生成相应的工程包,进行快速应用开发下面以两个图来说明该什么是软件包及F1、F4库嘚设置方法1) 文件准备工作下载re-8u25-windows.7z

注意:  ST官方是单线程下载,不支持断点续传一旦断线必须重来,什么是软件包没有压缩3倍以上的大小,下载奇慢无比    

STM32CubeMX目前最新版本是 4.7.1如下图所示未来会增加对F7和L4的支持F4的库已升级为 4.10.1如下图所示F4的库已升级为 1.8版本建议单獨下载库文件,手动解压库文件到库所在路径即可完成固件库升级

目前的4.11.0版本,修改过的管脚标签会自动生成宏定义,宏定义和管脚標签名称类似这样增强了所写程序
的可读性。F4的库升级为1.9版本大家可以去官网下载,
利用迅雷可以加速下载目前STM32CubeMX升级为4.12.0版本,F4的库升级为1.10.0版本
目前的4.13.0版本,增加了汇编初始化文件的设置项工程输出

添加了其它工具链,可以只生成源代码总体来说改动比较小。对於MDK-ARM环境希望能生成两个独立的工程文件夹,分别对应MDK-ARM V4版本和MDK-ARM V5版本但只是希望了。自STM32CubeMX V4.15.0起ST官方不再直接提供相关下载,必须注册才能获嘚该什么是软件包由于ARM GCC 每季度更新一次,跟着该节奏符合主流名称为en.stsw-stm32095.zip的文件可以集成

ARM编译工具,开发比较方便STM32F4xx的HAL库已升级为V1.12.0版本,洏标准外设驱动库更新为V1.7.0版本在Eclipse Ac6中都可以使用。标准外设驱动库不会消失和HAL库将会长期并存。

STM32CubeMX V4.15.1是当前最新版本其最大用途也就是硬件设计时查看管脚功能是否和其它外设有冲突


2 CAN模块增加状态机,修复bug
3 串口模块,增加新的功能函数主要是终止收发方面,串口中斷代码中缺少对空闲帧中断的处理

STM32CubeMX 在2017年1月份升级为V4.19.0版本,主要是STM32F7xx系列SD卡固件库的改进ST官方不直接提供下载链接,需要注册才能进入







此什么是软件包调用的是 windows 标准嘚 HID 类驱动,所以无需安装任何驱动程序及可运行
点击“保存”后直接生成工程。我们这里以生成 IAR 工程为例项目名叫做 HID

这样我们的工程僦基本成功了,但是还缺少最最关键的一步就是 USB 主机和从机的通讯“协议”,
这个协议在那里实现呢因为我们 Host 端什么是软件包已经是 Usb Hid Demonstrator,那么这边的协议就已经
固定了(其实在实际的开发中大多是主机端和从机相互沟通后什么是软件包自行修改的),从机只需要对应

注意:这里一定要覆盖“同名”数组千万不要覆盖错了。

为什么这样修改呢? 简单说一下其中关键值的含义这个 HID 的报文描述符其实定义了 8 個部分(条
目)的功能定义,分为 LED1LED2,LED3LED4,按键输入篡改按键输入和 ADC 输入。每一个
部分基本的格式都是固定的以 LED1 为例(其他条目可自荇对照文档解析):
这个 ID 号是每次报文发送的时候最先被发送出去的(USB 都是 LSB)字节,之后跟着的才是我们实际
有效的数据/指令到底是数據还是指令,就看你的应用程序如何去解析这个数据了

0x09, 0x01, 这个功能序号为 1,后边的序号依次递加没什么好说的
上边的这两条语句规定了哏在报文 ID 后边的数据范围,最大值是 1最小值是 0.(因为我们的 LED 也
就只有灭和亮两种状态)
0x75, 0x08, 这个是报文的大小为 8,只要别写错就行了
即这个功能的数量是 1 个
0xB1, 0x82, 这个是规定能够发送给从机设备的数据信息
0x91, 0x82, 这个规定了这个功能的数据方向是输出(USB 的方向都是针对主机来说的)

总结一丅通过这个报文描述符,我们就告诉了主机在 HID 中有一个功能 ID 为 1 的功能,其方向是
从主机到从机每次发送 1 个有效数据(前边的 ID 是都要含有的),这个数据可以是 0 或者是 1.
HID》的文档来参考

这样基本的程序框架就已经成功了。此时我们可以先编译一下看看是否有任何遗漏嘚或者笔误。如
果编译是正确的那么我们就可以先下载到硬件开发板上,连接到 PC 端看看是否可以枚举出设备。
如果您前边的修改都是囸确的那么在 PC 的设备管理器中会看到如下图所示的内容。

载代码的时候用 USB ST-Link连接电脑运行程序的时候要用 USB USER。
此时我们的 USB 枚举就完成了這个是 USB 通讯的关键步骤,之后的应用通讯内容都是通过
这个枚举工程来进行“规划”的

就类似串口通讯,我们首先做一个数据的发送工莋
在 Main.c 文件中,我们在 while(1)的主循环中增加我们的发送函数主要就是调用发送报文的 API:

//解析后边的数据含义 sendbuffer[1]=0x01; //这个是实际发送的数据,可以自甴定义只要不超过报文描述符的限制

编译后下载到 MCU 内,连接上位机什么是软件包即可看到如下所示的进度条在不断的增长


这个就是我們上传到的数据在上位机的图形显示,你也可以看 Input/output transfer 里的数据变化

这样看起来是不是更像是串口调试助手了?嘿嘿 本来机制就差不多的

MCU 嘚 USB 数据是如何接收的呢?是不调用一个类似于串口接收的 API 呢
不是的!USB 的数据接收都是在中断中完成的,在新建的工程中我们在函数

过勾选右下角的图形界面来实现控制开发板上的 LED 电量或者关闭。


当然这个是通过图像化的界面来进行控制,你也可以通过 Input/output transfer 中的写入对话框來完
成这个操作注意,写入的第一个字节是 ID表示你想控制的是哪个 LED;第二个字节是 0 或者是 1,表示你想让这个 LDE 的状态变成灭还是亮

本范例程序是为了快速实现 USB 从机设备与主句设备双向通讯目的,其初始化代码是用STM32CubeMX 来生成的大大降低了工程师开发 USB 设备的难度(尤其是是叺门阶段的难度)。从这个工程的基础上工程师可以比较方便的建立好框架工程并,对其中的代码进行研究进而移植或增加自己的应鼡代码。

我要回帖

更多关于 软件包 的文章

 

随机推荐