基于AT32_Work_Bench和AT32F425C8T7搭建USB设备的Keil工程
以雅特力的图形化代码配置工具AT32_Work_Bench和MCU芯片AT32F425C8T7为例与大家分享一下如何搭建一个USB设备的Keil开发工程。这里的USB设备我们以USB键盘KeyBoard为例因为前段时间正好用AT32F425C8T7这款芯片开发过一款客户定制的USB键盘1.png(171.79 KB, 下载次数: 0)下载附件2026-5-29 16:47 上传打开AT32_Work_Bench软件我使用的版本是V1.2.02搜索MCU选择AT32F425C8T7然后在MCU型号位置双击即可进入下一步接下来就可以开始正式的配置了。一、进行Pin布局和配置在“外设”选项下面勾选“USB_OTGFS1”进行USB外设的相关引脚功能配置选择“设备”模式引脚的具体配置在你操作模式和勾选相关功能后工具已为我们自动配置不需要我们配置对于USB的SOF、VBUS、OE和ID四个功能选项根据自身的项目需要进行配置其详细功能介绍可以去查阅芯片用户手册下面就截图简要说明一下USBFS外设的功能引脚说明ID引脚的主要功能识别为USB设备还是USB主机SOF和OE引脚的主要功能脉冲功能VBUS引脚的主要功能总线供电功能在“中间件”选项下面勾选“USB_DEVICE”进行USB相关的固件库代码配置OTGFS1设备类选择“KeyBorad”下面的FS1设备描述配置会体现在USB设备的描述符数据里面和FS1端点FIFO大小配置体现在USB通信交互数据量里面可以先用默认值后期再根据需要进行代码修改对于USB键盘其中FS1设备描述配置信息主要定义在keyborad_desc.h里面复制/*** [url/u/brief]brief[/url] usb vendor id and product id define*/#define USBD_KEYBOARD_VENDOR_ID 0x2E3C#define USBD_KEYBOARD_PRODUCT_ID 0x6040/*** brief usb string define(vendor, product configuration, interface)*/#define USBD_KEYBOARD_DESC_MANUFACTURER_STRINGArtery#define USBD_KEYBOARD_DESC_PRODUCT_STRINGKeyboard#define USBD_KEYBOARD_DESC_CONFIGURATION_STRINGKeyboard Config#define USBD_KEYBOARD_DESC_INTERFACE_STRINGKeyboard Interface其中FS1端点FIFO大小配置信息主要定义在usb_conf.h里面复制/*** brief usb device mode fifo*//* otg1 device fifo */#define USBD_RX_SIZE 128#define USBD_EP0_TX_SIZE 24#define USBD_EP1_TX_SIZE 20#define USBD_EP2_TX_SIZE 20#define USBD_EP3_TX_SIZE 0#define USBD_EP4_TX_SIZE 0#define USBD_EP5_TX_SIZE 0#define USBD_EP6_TX_SIZE 0#define USBD_EP7_TX_SIZE 0二、进行时钟配置对于USB外设的时钟我们选择精度更高的外部高速时钟HEXT但这里默认是HICK而且为什么不能选择HEXT呢查看HEXT位置的问号原来是需要先在CRM那里配置一下才行那就是再回到步骤一勾选“CRM”高速外部晶振HEXT选择“时钟振荡器”对应的引脚是PF0和PF1就和下面原理图一致的外部8M晶振配置OK以后再回到时钟配置页面这个时候USB外设时钟也自动好了96M主频时钟经过2分频后为48M三、代码预览这个时候当我们直接点击“代码预览”会提示错误需要固件包的支持才行我研究了一下然后走通了点击菜单栏的“固件包管理”按如下方法二选一安装可以从本地导入也可以从网络安装我用了后者点击“网络安装”下载成功后在选中芯片的下面会有固件包名称包括版本号勾选一下然后点击“关闭”即可。如果你是从“本地安装”点击打开直接导入即可我们再点击“代码预览”就可以正常进入页面可以看到头文件、源文件和详细代码四、导入工程代码预览成功后下一步就是要生成代码并把它们导入工程点击代码生成按钮在下面配置页面里面按照自身需求进行配置我使用的是MDK Keil5所以我选择了MDK_V5配置如下图所示成功后会有弹窗提醒然后去工程目录看下大概是下面这样的框架与USB相关的文件夹和文件主要包括下面这些其中两个比较核心的文件说一下keyboard_class.c主要是和键盘设备类相关的代码keyboard_desc.c主要是和键盘描述符相关的代码然后usb应用层初始化主要就是下面这个接口调用其中otg_core_struct_fs1是一个全局结构体使用频繁复制/*fs1 device keyboard*/usbd_init(otg_core_struct_fs1,USB_FULL_SPEED_CORE_ID,USB_OTG1_ID,keyboard_class_handler,keyboard_desc_handler);具体代码就先不展开说了。五、编译工程打开工程文件编译成功工程目录结构如下所示Main主代码如下可以自己再调整一下复制int main(void){/* add user code begin1*//* add user codeend1*//* systemclockconfig. */wk_system_clock_config();/*configperiphclock. */wk_periph_clock_config();/* nvicconfig. */wk_nvic_config();/* timebaseconfig. */wk_timebase_init();/* init accfunction. */wk_acc_init();/* init usb_otgfs1function. */wk_usb_otgfs1_init();/* init usb appfunction. */wk_usb_app_init();/* add user code begin2*//* add user codeend2*/while(1){wk_usb_app_task();/* add user code begin3*//* add user codeend3*/}}接下来我们就可以在这个工程上面开始发挥了无限可能……对于USB主机配置或者其他USB设备类的配置大同小异有一点需要注意“USB_OTGFS1”里面需要选择为“主机”模式然后“USB_HOST”里面才能进行主机类的配置我们可以看到有两种主机类可以配置即CDC和HID说句实在话雅特力的图形化代码配置工具AT32_Work_Bench简单易用确实蛮好的事半功倍的效果而且还免安装对于比较喜欢手撸代码的我来说我都尝试使用了。---------------------作者dffzh链接https://bbs.21ic.com/icview-3518970-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。

相关新闻

《魔女嘉莉》:恐怖片外壳下的成长痛与反抗力量解析

《魔女嘉莉》:恐怖片外壳下的成长痛与反抗力量解析

1. 为什么一部恐怖片会让人感觉“硬核”而不是害怕《魔女嘉莉》这部片子,很多人小时候看的时候,第一反应不是害怕,而是觉得“硬”——这个“硬”不是指画面血腥,而是故事内核里有种压不垮的韧劲。恐怖片通常靠突然惊吓或诡异氛围让…

2026/7/18 2:40:55阅读更多 →
嵌入式网络协议栈RL-TCPnet架构与开发实践

嵌入式网络协议栈RL-TCPnet架构与开发实践

1. 嵌入式网络协议栈基础概述在嵌入式系统开发中,网络功能已成为不可或缺的核心能力。RL-TCPnet作为一款专为嵌入式设备设计的轻量级网络协议栈,其重要性不言而喻。本章将系统性地介绍嵌入式网络协议栈的基础知识,为后续深入RL-TCPnet的学习奠…

2026/7/18 2:40:55阅读更多 →
Ubuntu系统升级全攻略:从准备到故障处理

Ubuntu系统升级全攻略:从准备到故障处理

1. 升级前的准备工作升级Ubuntu系统前,做好充分准备能避免90%的意外情况。我经历过多次跨版本升级,总结出以下关键步骤:首先检查当前系统版本:lsb_release -a确认输出中显示"Ubuntu 24.04"。如果是其他版本,…

2026/7/18 2:40:55阅读更多 →
紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

更多请点击: https://intelliparadigm.com 第一章:Cursor v4.5.2环境变量缓存Bug的根源与影响分析 Cursor v4.5.2 在启动时对环境变量(如 PATH、 NODE_ENV、 CURSOR_PROJECT_ROOT)执行了一次性快照式缓存,该机制未监…

2026/7/18 5:51:13阅读更多 →
Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

在近日举行的汽车电子大会上,Imagination 公司产品总监Rob Fisher出席大会并发表主题演讲,分享了公司在智能汽车GPU领域的最新技术进展与应用实践。荣获“汽车电子金芯奖创新企业奖”大会同期公布了“汽车电子金芯奖”评选结果,Imagination凭…

2026/7/18 5:51:13阅读更多 →
MyBatis初阶

MyBatis初阶

概述mybatis就是使用注释就能够完成JDBC需要大量做的事情但终归会有不能SQL语句,参数赋值,结果映射Mapper public interface UserInfoMapper {Select("select * from user_info")List<UserInfo> selectAll(); }此时需要测试一下是否成功只要有mybatis依赖,就需…

2026/7/18 5:51:13阅读更多 →
iceberge分区特性

iceberge分区特性

1.4 Iceberg 特点详述 1.4.1 Iceberg 分区与隐藏分区&#xff08;Hidden Partition&#xff09; 这部分介绍了 Iceberg 的分区机制及其带来的便利。 基本功能&#xff1a;Iceberg 支持分区来加速查询。写入数据时&#xff0c;相似的数据行会被分组&#xff1b;查询时&#xff0…

2026/7/18 5:51:13阅读更多 →
Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

1. 项目概述&#xff1a;为什么VideoPlayer.Play()只是起点&#xff1f;如果你在Unity里处理视频&#xff0c;大概率用过VideoPlayer.Play()。点一下&#xff0c;视频开始播放&#xff0c;看起来一切顺利。但当你需要实现“视频播完自动跳转场景”、“根据播放进度更新UI进度条…

2026/7/18 5:51:13阅读更多 →
AI Skills:大语言模型的能力扩展包

AI Skills:大语言模型的能力扩展包

1. 为什么说Skills是AI时代的APP&#xff1f;十年前我们下载APP是为了让手机具备新功能&#xff0c;如今给AI安装Skills也是同样的逻辑。Skills本质上是一组预设的工作流和知识模板&#xff0c;它们教会大语言模型如何完成特定任务。就像APP扩展了智能手机的能力边界一样&#…

2026/7/18 5:46:13阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比&#xff1a;全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时&#xff0c;第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/17 10:42:55阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件&#xff1a;5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL&#xff1a;跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;从模糊意图到可执行指令&#xff1a;Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档&#xff08;PRD&#xff09;生成实践中&#xff0c;原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Cursor配置生成失效&#xff1f;3大隐藏陷阱4行修复代码&#xff0c;资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效&#xff0c;是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者&#xff1a;钟声编辑&#xff1a;Mark出品&#xff1a;红色星际头图&#xff1a;智能驾驶图片据悉&#xff0c;国内某头部智驾公司端到端模型技术大牛Z投身创业&#xff0c;并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈&#xff0c;更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/17 17:26:50阅读更多 →