STM32 HAL库,使用USB, 扩大输入暂存区的方法
- 使用STM32的USB通讯
- CubeMX建立配置
- Serial Wire
- 时钟配置
- USB配置
- 时钟频率设置
- 代码编写
- 运行效果
- 总结
使用STM32的USB通讯
STM32可以不用使用串口转换直接和USB通讯。这给串口调试提供了极大的方便。编程,我使用了STM32CubeIDE编程。这个编程软件是免费的。不存在版权问题。
CubeMX建立配置
建立一个新的项目,选择要使用的MCU型号。我使用了STM32F103C8T6,会出现一个这样的画面:
在这里选择要使用的MCU,再输入项目名称。开始对应用的参数进行配置。
Serial Wire
这一步非常重要,没有这一步,可能会使MCU无法下载程序。需要切记。
选择System Core - Sys:
在Debug中选择Serial Wire。这时的Pinout View的PA13和PA14会变绿。表明:
PA13 - SWDIO,数据端
PA14 - SWCLK,时钟端
时钟配置
我使用的Blue Pill的板子,配备了两个晶振,一个是32.768KHz的晶振和一个8MHz的晶振。先在SYS CORE中选择使能HSE,如下:
看到PD0和PD1端子都会变绿。
USB配置
- 选择使能USB端口
在Connecting下选择USB,出现了如下画面:
勾选Device (FS), 这个(FS)是全速的意思。这时的PA11和PA12端子变成了绿色。
下面还要进一步选择,增加一个中间件。Middleware and Software Package. 选择USB Device. 这里的选项比较多,
在这里选择Communication Device Class (Virtual COM Port)
时钟频率设置
在大的标题栏上选择:Clock Configuration
在这个著名的画面上可以对时钟频率进行配置,我们现在关心的时钟频率是USB的频率。
因为是使用了外部时钟,可以不使用内部的时钟了。在左下角选择外部时钟。PLL Source选择外部时钟。Pull Mul选择9,如下:
如果配置的参数不合适,会变成红色。把USB Prosclaer选择1/1.5. 变成48MHz,APB1的Prescaler选择1/2,时钟频率选择一切正常。最终如图:
点击保存,这时就会自动生成一个应用了。
生成的应用的代码在项目中。注意,这个过程需要注册,注册一般要有一个邮箱。注册完成就可以生成代码了。生成代码时会询问:
回答是。