[GD32F4]基于GD32固件库移植cherryusb[STM32F4]

这篇具有很好参考价值的文章主要介绍了[GD32F4]基于GD32固件库移植cherryusb[STM32F4]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[GD32F4]基于GD32固件库移植cherryusb[STM32F4]

基础环境

使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。
使用的cherryusb版本是0.9.0版本。
使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4

大神速通

cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断函数名称 usb外设的基地址 使用的io口就行。
本文实现了gd32f4模拟usb fs hid设备作为鼠标。

具体步骤

首先准备参考cherryusb的如下教程
gd32 usb,USB,stm32,单片机,嵌入式硬件
先放松一点 ,别管usb,老老实实准备一个可以使用串口printf打印的基础工程。这个工程里面不需要包含任何GD32提供的usb库。
(1)准备串口基础工程的要点-使用微库:
gd32 usb,USB,stm32,单片机,嵌入式硬件
(2)准备串口基础工程的要点-重定向函数:重定向函数放在main.c或者什么地方即可

int fputc(int ch, FILE *f)
{
    usart_data_transmit(USART0, (uint8_t)ch);
    while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
    return ch;
}

请先完成上面步骤后烧录试试,确保printf正常。

之后开始移植cherryusb:
值得一提的概念在于:cherryusb库厉害的地方在于他是基于ip的。市场上芯片型号千千万,但是使用的ip型号并不多,cherry对于主流的ip型号都做了适配。GD32F4与STM32F4一样,使用的是DWC2
gd32所有的usb都可以无视。
首先拉一份cherryusb的代码:
gd32 usb,USB,stm32,单片机,嵌入式硬件
简单粗暴的裁剪一下,熟练以后可以不裁剪保留第三方库的完整。现在裁剪是为了明白哪些是有必要的。
必要的移植之后
gd32 usb,USB,stm32,单片机,嵌入式硬件
gd32 usb,USB,stm32,单片机,嵌入式硬件
gd32 usb,USB,stm32,单片机,嵌入式硬件
gd32 usb,USB,stm32,单片机,嵌入式硬件gd32 usb,USB,stm32,单片机,嵌入式硬件

gd32 usb,USB,stm32,单片机,嵌入式硬件
最后一个图里面的四个文件夹里面就是前四个截图的内容。
usb_config.h就是cherryusb源码下的cherryusb_config_template.h文件 这一点在cherryusb的官方移植教程中也提到了。hid_mouse_template.c文件在源码的demo文件夹下

文件夹中添加好文件后在keil中也要加入对应的头文件地址和c文件
gd32 usb,USB,stm32,单片机,嵌入式硬件
gd32 usb,USB,stm32,单片机,嵌入式硬件
实现代码:
在main.c中实现void usb_dc_low_level_init (void)函数 开启了usb中断使能 这是外设使能的一部分。
gd32 usb,USB,stm32,单片机,嵌入式硬件
usb外设使用的gpio也要配置好,从代码层面而言,这些与usb外设初始化设置的函数都可以放在usb_dc_low_level_init 中,不过笔者在移植cherryusb之前首先使用gd32的usb库做硬件的验证,所以这里写在main函数开头,其实效果是一样的。
这些初始化函数包括:
gd32 usb,USB,stm32,单片机,嵌入式硬件
之后修改usb_config.h:
gd32 usb,USB,stm32,单片机,嵌入式硬件
这个配置文件是为STM32编写的 GD32使用的中断函数与之不同,所以这里要进行修改。

之后在主函数中调用hid_mouse_init即可,插上usb后可以枚举成功
gd32 usb,USB,stm32,单片机,嵌入式硬件
这里我还写了一个函数可以左右横跳鼠标
gd32 usb,USB,stm32,单片机,嵌入式硬件
在死循环中1s调用一次很有趣。
如果需要代码可以留下邮箱,看到会发的。
参考:
https://cherryusb.readthedocs.io/zh_CN/latest/index.html文章来源地址https://www.toymoban.com/news/detail-736610.html

到了这里,关于[GD32F4]基于GD32固件库移植cherryusb[STM32F4]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32或gd32移植libcanard实现UAVCAN协议

    点击我下载 自己上传的点击下载 我自己是使用rt-thread操作系统移植的。但是不局限与操作系统,裸机也可以。 canard.node_id 设置本机id canardTxInit(1536, CANARD_MTU_CAN_CLASSIC); 初始化发送队列,1536为大小。 CANARD_MTU_CAN_CLASSIC 表示使用的是普通的can,数据最大为8个字节, CANARD_MTU_CA

    2024年02月09日
    浏览(25)
  • 关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus,实现modbus tcp

    关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus 这里使用了大佬 小灰灰搞电子 的代码,文章看 STM32F407+LAN8720移植Lwip和freeModbus实现MODBUS TCP 代码看 STM32F407+LAN8720+LWIP移植freemodbus TCP.zip 他的代码是基于正点原子F407的板子开发的,如果是别的板子,需要修改引脚 小灰灰的代码里,没

    2024年02月14日
    浏览(16)
  • 单片机移植freemodbus主机(STM32、GD32、瑞萨、国民技术等)

    从github下载:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32 无法下载或者下载太慢可以用资源下载,无需积分。freeModbus主机源码下载 示例代码 参考从机代码创建 将FreeModbus主机源代码拷贝到工程中间件-第三方库-freemodbus源码库:即MiddlewaresThird_PartyFreeModbusMaster文件夹中。

    2024年02月11日
    浏览(18)
  • GD32F470 移植STM32F429工程 Keil调试笔记

    keil版本:5.25 安装 GigaDevice.GD32F4xx_DFP.3.0.4.pack Keil.STM32F4xx_DFP.2.15.0.pack 1、原项目为STM32F429 工程,切换到GD32F470 只需在 Options for Target\\\"“对话框的Device菜单中选中“GD32F470II”,重新编译即可,一般不会有编译错误。 2、将项目工程在切换回STM32F429,在 Options for Target”\\\"对话框的D

    2024年02月09日
    浏览(23)
  • 基于gd32f103移植freemodbus master 主栈

    1.移植freemodbus master需要先移植RT-Thread操作系统 GD32F103C8T6移植 RTT Nano 教程-CSDN博客 2.移植freemodbus master协议栈 在移植了RTT以后,我们需要移植就只有串口相关的函数 移植freemodbus master协议栈具体步骤 下载移植freemodbus master协议栈 源码 添加协议栈文件 向mdk添加头文件路径 修改

    2024年01月18日
    浏览(19)
  • 调试STM32F4 USB3300 USB_HS虚拟串口

    参考了csdn上面的几篇文章,经历了一个多小时的调试排除找bug,终于成功了! 通过STM32cubeMx配置USB phy芯片 1. 2. 3. 4. 5.生成代码出来,打开工程,编译下载通过。 在上电之前,电脑得先安装ST的USB 虚拟串口驱动 点击前往下载--STSW-STM32102 - STM32虚拟COM端口驱动程序 - STMicroelect

    2024年02月02日
    浏览(18)
  • GD32F4(9):GD32f4出现上电不工作,必须按复位程序才能跑起来

    绘制一个gd32450的pcb板子,结果烧录程序后发生下面事情: 上电程序不能正常启动或者偶尔可以正常启动一次,很随机。 当上电后程序不启动的时候,我再按一下mcu的reset按键,程序就能正常启动了。 当我debug调试的时候,回回都能正常启动,根本定位不到问题 首先在板子里

    2023年04月08日
    浏览(29)
  • 【STM32】STM32F4中USB的CDC虚拟串口(VCP)使用方法

    最近在学习STM32的USB功能,主要是想要使用虚拟串口(VCP)功能,来解决串口传输速率较低的问题,达到于上位机高效通信的目的。 使用芯片:STM32F407ZGT6 使用函数:HAL库 使用工具:STM32CubeMX + Keil uVision5 串口工具:VOFA 主要配置内容: 调试模式为Serial; 使用外部时钟 设置为

    2024年02月21日
    浏览(21)
  • STM32 USB DFU固件升级的设计与实现

    STM32微控制器支持通过USB DFU(Device Firmware Upgrade)协议进行固件升级,这使得设备可以在不需要特殊的调试工具或编程器的情况下,通过USB接口实现固件的更新。 在本文中,我们将介绍如何设计和实现STM32 USB DFU固件升级功能,并提供相关的代码示例。 ✅作者简介:热爱科研

    2024年01月25日
    浏览(19)
  • GD32F4XX IAP升级

    这里使用的是GD32F405RG,flash 为1M(0x08000000 - 0x080FFFFF),具体参考官方手册 因为每个芯片的falsh大小不一样,地址划分根据实际flash大小和自己的设计去分配就好, 自己的址划分如下 : BOOT_ADDRESS:0x08000000 - 0x08003FFF     16k(扇区0) APP_ADDRESS:0x08004000 - 0x0807FFFF     512k-16

    2024年02月12日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包