xhljs 发表于 2025-9-12 16:14:14

实验一:PRINTF_USB 直接输出数据

那怕遍体鳞伤,也要勇往直前。
实验一:PRINTF_USB 直接输出数据1. 去官网WWW.STCAI.COM,下载软件工具中的:1.1. 工具软件:Aicube-isp-v6.96A软件、keil中断拓展插件、工具使用说明、触摸按键套件。1.2. 库函数:USB库函数(适用于所有带USB模块的芯片,如AI8051U及其他STC 8位、32位芯片)。1.3. AI8051U系列32位硬件乘除运算MDU32库函数。1.4. 8系列MDU:16位硬件16位MDU16、32位MDU32C乘除库函数。1.5. 8G-8H系列通用库函数。1.6. 8A8K64D3通用库函数。1.7. 32位MDU库函数。1.8. 32位TFPU库函数。1.9. 32G12k128主控库函数。1.10. 32F系列TFPU库函数。1.11. AI8051U创新、传统风格库函数。1.12. AI8051U、32位硬件三角函数和浮点运算的TFPU库函数。2. 打开USB库函数:2.1. 范例程序“2.1.1. STC-CDC查询、STCCDC中断、STC-hid查询、STC-hid中断(今天用到的是STC-CDC)。2.2. Usb库函数:2.2.1. stc_usb_cdc_8h_data.lib2.2.2. stc_usb_cdc_data_8h_b151.lib2.2.3. stc_usb_cdc_8h_xdata.lib2.2.4. stc_usb_cdc_xdata_8h_b151.lib2.2.5. stc_usb_cdc_32g_data.lib(<64kB)2.2.6. stc_usb_cdc_data_32g_huge.lib(>64KB)2.2.7. ai_usb.h2.2.8. keilkill中断拓展2.2.9. Stc32_stc8_usb.h2.2.10. 库文件使用说明。3. AICUBE 项目助手设置界面:3.1. 项目设置:3.1.1. 单片机型号:AI8051U-32Bit3.1.2. 项目名称:test13.1.3. 项目路径:E:\AI8051U3.1.4. 项目类型:单文件类型3.1.5. 自动打开项目:是3.1.6. 自动备份keil项目文件:是3.1.7. 备份深度:23.1.8. 编码格:GB2312(新增UTF-8)3.1.9. Cpu模式:源模式(sourse)3.1.10. 存储器模式:xsmall模式3.1.11. 代码等等小模式:large模式3.1.12. 4字节中断帧:是3.1.13. 使能REMOVEUNUSED:是3.1.14. 创建HEX格式:是3.1.15. HEX格式:HEX-80(代码>64kB,用HEX-386)3.2. 图形化I/O设置3.2.1. 如右图:芯片管脚功能:3.2.2. 左键选择管脚功能,右键配置管脚模式3.2.3. 可以看到右下输出窗口,显示配置3.3. 点击左侧窗口“PERIPHERAL,外设”下拉的相应端口必须勾选后,才能生效。3.4. 图形化时钟配置(一般默认,不需要设置):3.4.1. 主时钟源:内部PLL输出3.4.2. 系统时钟分频:33.4.3. 主时钟输出:否3.4.4. 选择内部高速IRC频率:内部预置频率3.4.5. 内部预置频率:40MHZ3.4.6. 启动外部高速晶振:否3.4.7. 启动内部低速IRC:否3.4.8. 启动内部48MHZ高速IRC:否3.4.9. PLL时钟源:内部高速IRC3.4.10. PLL输出时钟分频:4分频3.4.11. PLL输出:8倍频(96MHZ)3.4.12. 高速外设时钟预分频:13.4.13. I2S时钟分频:13.4.14. PWMA时钟分频:13.4.15. PWMB时钟分频:13.4.16. TFPU时钟分频:13.4.17. 设置是否正确,检查有无黄色文本(报错),报错必重新修改设置。黄色报错,蓝色可配置。3.5. SYS,系统:3.5.1. GLK 时钟:一定要勾选,保障上一章节“图形化时钟配置”对时钟的所有配置生效。3.5.2. 除时钟配置外,其他如外部中断、定时器/计数器、TFT、总线等,根据电路要求需要设置。3.6. USB通用串口总线设置:3.6.1. USB协议:CDC通信设备协议3.6.2. 数据处理方式:查询方式3.6.3. USB不停电下载:是3.6.4. ISP下载命令:@STCISP#3.6.5. 等USB主机检测到DEVICE并配置完成:否3.6.6. 中断优先级:最低优先级。4. 保存以上所有设置。5. 实际操作:5.1. 重新打开AIcube项目5.2. 首先勾选“USB通用串行总线”:5.3. USB具体设置:5.3.1. USB协议:CDC通信设备协议5.3.2. USB端口:D-(P3.0),D+(P3.1)5.3.3. 数据处理方式:查询方式5.3.4. USB不停电下载:是5.3.5. ISP下载命令:@STCISP#5.3.6. 等USB主机检测到DEVICE并配置完成:否5.3.7. 中断优先级:最低优先级。5.4. 本实操对其他配置暂时不需要用到,不做设置5.5. 保存上述设置。5.6. 生成并打开keil项目5.7. 打开main.c5.8. 先编译一下,0 error,0 warning5.9. 添加头文件和主函数5.10. 必须在对应的begin与end之间添加5.11. 从keil范例程序中:深圳大学上机试验有编好的PRINTF_USB 直接打印数据程序中的C语言打开,在main函数段,找到并复制”printf_usb(“hello world!\r\n”);粘贴到本实验对应主函数位置。5.12. 将不需要的有关查询语句注释掉(不要册除,保证原程序的完整性)。5.13. 在相应头文件位置复制粘贴:5.13.1. #include”ai8051u.h”5.13.2. #include”ai_usb.h”5.13.3. 用TAB键将代码对齐,规范代码风格5.13.4. 如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。5.13.5. 编译程序显示:0 error,0 warning,表示编译成功。5.14. 回到AiCube 界面:进行设置:5.14.1. 单片机型号:AI8051U-32K645.14.2. 通信方式:USB-CDC5.14.3. 最低波特率:24005.14.4. 最高波特率:1152005.14.5. 起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区”5.14.6. 硬件配置:5.14.6.1. IRC调节模式:勾选“不调节,使用内部预置频率”5.14.6.2. IRC 预置频率:40MHZ5.14.6.3. 勾选:振荡器放大增益>(12MHZ以上建议选择)。5.14.6.4. 勾选:上电复位使用较长延时5.14.6.5. 勾选:允许低电压复位(禁止低电压中断)5.14.7. 打开程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb.hex5.15. 先用普通USB下载5.15.1. 参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分)5.15.2. 硬件连接:用USB线将PC与实验箱连接上5.15.3. 先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。5.15.4. 出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。5.15.5. 此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。5.15.6. 打开程序:找到objects->printf_usb.hex5.15.7. 点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手5.15.8. 1秒后,软件右上方USB-CDC串口助手打开,且不停下载显示“hello world!”。5.15.9. 在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。5.16. USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载):5.17. ISP下载软件里,除了硬件设置外,还要在软件项目进行设置:5.17.1. 在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区”5.17.1.1. 勾选:USB-CDC(串口模式)5.17.1.2. 勾选:使用默认的内部自定”@STCISP#”5.17.1.3. 勾选:下次下载使用HID接口进行ISP下载5.17.1.4. 勾选:每次下载前先发送自定义命令。5.17.1.5. 勾选:每次下载前都重新装载目标文件5.17.1.6. 勾选:当目标文件变化时自动装载并发送下载命令。5.17.2. 软件设置后,USB连线连接PC与硬件实验箱。5.17.3. 按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。5.17.4. 出现:(HID1)usb-writer(串行接口通信了)5.17.5. 此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式5.17.6. 下面操作与USB普通下载相同。5.18. 不停电下载与普通下载的区别:5.18.1. 当源代码发生改变,软件仍然可以等待并下载。5.18.2. 点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。谢谢老师们。

国芯人工智能 发表于 2025-9-12 17:08:00

实验一:PRINTFUSB 直接输出数据

一、实验目的
本实验旨在通过使用 STC 系列芯片(如 AI8051U)的 USB 模块,实现基于 PRINTFUSB 的数据直接输出功能。通过该实验,开发者可以掌握如何在嵌入式系统中配置 USB 接口,并实现与上位机之间的数据通信。

二、实验平台与工具
1. 开发软件与工具
下载地址:www.stcaic.com(注意网址大小写及格式应为 www.stcaic.com)
工具软件:
AiCube-ISP-V696A:用于芯片烧录和调试
Keil 中断扩展插件:提升 Keil 编译器在中断处理方面的兼容性与功能性
工具使用说明文档:提供软件操作指南
触摸按键套件:用于拓展实验功能(可选)

2. 库函数支持
USB 库函数:适用于所有具备 USB 模块的芯片,包括 AI8051U 及其他 STC 8 位、32 位芯片
功能说明:
提供 USB 设备枚举、端点配置、数据收发等基础功能
支持 PRINTFUSB 输出方式,实现类似标准 C 语言中 printf 函数的串口输出功能,但通过 USB 接口进行数据传输

三、实验步骤

1. 硬件准备
使用 AI8051U 芯片或具备 USB 接口的 STC 系列芯片
连接 USB 数据线至 PC 端口,确保芯片供电及通信正常

2. 软件配置
安装 AiCube-ISP-V696A 编程软件,用于烧录固件
安装 Keil 编译器及中断扩展插件,搭建开发环境
引入 USB 库函数至工程中,确保头文件路径正确

3. 程序开发
初始化 USB 模块
   c
   USBInit();
配置 PRINTFUSB 输出方式
   c
   PRINTFUSBInit();
实现数据输出功能
   c
   PRINTFUSB("Hello, World!\r\n");

4. 烧录与调试
使用 AiCube-ISP-V696A 将程序烧录至芯片
通过串口调试助手或 USB 虚拟串口工具(如 XCOM、SSCOM)查看输出结果

四、实验结果与验证
在 PC 端打开串口调试工具,设置正确的 COM 口及波特率(若为虚拟串口,波特率可设为 115200),应能看到如下输出:
Hello, World!

若输出正常,说明 USB 通信已成功建立,且 PRINTFUSB 函数能够正确发送数据。

五、注意事项
1. 确保芯片 USB 接口供电稳定,避免因电压不稳导致设备枚举失败
2. 若使用 Keil 编译器,请确认已安装中断扩展插件,否则可能导致中断服务函数无法正常运行
3. PRINTFUSB 函数内部依赖 USB 的中断机制,需确保中断使能及优先级设置合理
4. 在调试过程中,如遇到设备无法识别问题,建议检查 USB 描述符配置是否正确

六、拓展应用
本实验为基础通信实验,后续可拓展如下功能:
实现 USB 键盘或鼠标设备功能
结合触摸按键套件,实现人机交互界面
利用 USB 进行高速数据采集与传输

七、结语
通过本次实验,开发者能够掌握 STC 系列芯片中 USB 模块的配置方法,并实现基于 PRINTFUSB 的数据输出。该技术在嵌入式开发中具有广泛的应用价值,为后续开发更复杂的 USB 设备功能奠定了基础。

国芯人工智能 敬上

[本文内容由国芯人工智能辅助生成,仅供参考]

西西研究员 发表于 2025-9-13 08:33:41

推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4

西西研究员 发表于 2025-9-13 08:36:57

辛苦您学习打卡时开一个帖子,然后逐级在下面回复打卡即可,感谢配合与支持!!!

西西研究员 发表于 2025-9-13 08:37:24

实验二:PRINTF_USB_query 打印接收到的数据( 查询方式)
1. 去官网WWW.STCAI.COM,下载软件工具中的:
1.1. 工具软件:Aicube-isp-v6.96A软件、keil中断拓展插件、工具使用说明、触摸按键套件。
1.2. 库函数:USB库函数(适用于所有带USB模块的芯片,如AI8051U及其他STC 8位、32位芯片)。
1.3. AI8051U系列32位硬件乘除运算MDU32库函数。
1.4. 8系列MDU:16位硬件16位MDU16、32位MDU32C乘除库函数。
1.5. 8G-8H系列通用库函数。
1.6. 8A8K64D3通用库函数。
1.7. 32位MDU库函数。
1.8. 32位TFPU库函数。
1.9. 32G12k128主控库函数。
1.10. 32F系列TFPU库函数。
1.11. AI8051U创新、传统风格库函数。
1.12. AI8051U、32位硬件三角函数和浮点运算的TFPU库函数。
2. 打开USB库函数:
2.1. 范例程序“
2.1.1. STC-CDC查询、STCCDC中断、STC-hid查询、STC-hid中断(今天用到的是STC-CDC)。
2.2. Usb库函数:
2.2.1. stc_usb_cdc_8h_data.lib
2.2.2. stc_usb_cdc_data_8h_b151.lib
2.2.3. stc_usb_cdc_8h_xdata.lib
2.2.4. stc_usb_cdc_xdata_8h_b151.lib
2.2.5. stc_usb_cdc_32g_data.lib(<64kB)
2.2.6. stc_usb_cdc_data_32g_huge.lib(>64KB)
2.2.7. ai_usb.h
2.2.8. keilkill中断拓展
2.2.9. Stc32_stc8_usb.h
2.2.10. 库文件使用说明。
3. AICUBE 项目助手设置界面:
3.1. 项目设置:
3.1.1. 单片机型号:AI8051U-32Bit
3.1.2. 项目名称:test1
3.1.3. 项目路径:E:\AI8051U
3.1.4. 项目类型:单文件类型
3.1.5. 自动打开项目:是
3.1.6. 自动备份keil项目文件:是
3.1.7. 备份深度:2
3.1.8. 编码格:GB2312(新增UTF-8)
3.1.9. Cpu模式:源模式(sourse)
3.1.10. 存储器模式:xsmall模式
3.1.11. 代码等等小模式:large模式
3.1.12. 4字节中断帧:是
3.1.13. 使能REMOVEUNUSED:是
3.1.14. 创建HEX格式:是
3.1.15. HEX格式:HEX-80(代码>64kB,用HEX-386)
3.2. 图形化I/O设置
3.2.1. 如右图:芯片管脚功能:
3.2.2. 左键选择管脚功能,右键配置管脚模式
3.2.3. 可以看到右下输出窗口,显示配置
3.3. 点击左侧窗口“PERIPHERAL,外设”下拉的相应端口必须勾选后,才能生效。
3.4. 图形化时钟配置(一般默认,不需要设置):
3.4.1. 主时钟源:内部PLL输出
3.4.2. 系统时钟分频:3
3.4.3. 主时钟输出:否
3.4.4. 选择内部高速IRC频率:内部预置频率
3.4.5. 内部预置频率:40MHZ
3.4.6. 启动外部高速晶振:否
3.4.7. 启动内部低速IRC:否
3.4.8. 启动内部48MHZ高速IRC:否
3.4.9. PLL时钟源:内部高速IRC
3.4.10. PLL输出时钟分频:4分频
3.4.11. PLL输出:8倍频(96MHZ)
3.4.12. 高速外设时钟预分频:1
3.4.13. I2S时钟分频:1
3.4.14. PWMA时钟分频:1
3.4.15. PWMB时钟分频:1
3.4.16. TFPU时钟分频:1
3.4.17. 设置是否正确,检查有无黄色文本(报错),报错必重新修改设置。黄色报错,蓝色可配置。
3.5. SYS,系统:
3.5.1. GLK 时钟:一定要勾选,保障上一章节“图形化时钟配置”对时钟的所有配置生效。
3.5.2. 除时钟配置外,其他如外部中断、定时器/计数器、TFT、总线等,根据电路要求需要设置。
3.6. USB通用串口总线设置:
3.6.1. USB协议:CDC通信设备协议
3.6.2. 数据处理方式:查询方式
3.6.3. USB不停电下载:是
3.6.4. ISP下载命令:@STCISP#
3.6.5. 等USB主机检测到DEVICE并配置完成:否
3.6.6. 中断优先级:最低优先级。
4. 保存以上所有设置。
5. 实际操作:
5.1. 重新打开AIcube项目
5.2. 首先勾选“USB通用串行总线”:
5.3. USB具体设置:
5.3.1. USB协议:CDC通信设备协议
5.3.2. USB端口:D-(P3.0),D+(P3.1)
5.3.3. 数据处理方式:查询方式
5.3.4. USB不停电下载:是
5.3.5. ISP下载命令:@STCISP#
5.3.6. 等USB主机检测到DEVICE并配置完成:否
5.3.7. 中断优先级:最低优先级。
5.4. 本实操对其他配置暂时不需要用到,不做设置
5.5. 保存上述设置。
5.6. 生成并打开keil项目
5.7. 打开main.c
5.8. 先编译一下,0 error,0 warning
5.9. 添加头文件和主函数
5.10. 必须在对应的begin与end之间添加
5.11. 从keil范例程序中:深圳大学上机试验有编好的PRINTF_USB_query 程序中的C语言打开,在main函数段,找到并复制程序段
5.11.1. “if (UsbOutBuffer == 6)
   printf_usb("Hello World !\r\n");
      else if (UsbOutBuffer == 7)
   printf_usb("China !\r\n");”粘贴到本实验对应主函数位置。
5.12. 在相应头文件位置复制粘贴:
5.12.1. #include”ai8051u.h”
5.12.2. #include”ai_usb.h”
5.12.3. 用TAB键将代码对齐,规范代码风格
5.12.4. 如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。
5.12.5. 编译程序显示:0 error,0 warning,表示编译成功。
5.13. 回到AiCube 界面:进行设置:
5.13.1. 单片机型号:AI8051U-32K64
5.13.2. 通信方式:USB-CDC
5.13.3. 最低波特率:2400
5.13.4. 最高波特率:115200
5.13.5. 起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区”
5.13.6. 硬件配置:
5.13.6.1. IRC调节模式:勾选“不调节,使用内部预置频率”
5.13.6.2. IRC 预置频率:40MHZ
5.13.6.3. 勾选:振荡器放大增益>(12MHZ以上建议选择)。
5.13.6.4. 勾选:上电复位使用较长延时
5.13.6.5. 勾选:允许低电压复位(禁止低电压中断)
5.13.7. 打开编译好的程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb_query.hex
5.14. 先用普通USB下载
5.14.1. 参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分)
5.14.2. 硬件连接:用USB线将PC与实验箱连接上
5.14.3. 先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。
5.14.4. 出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。
5.14.5. 此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。
5.14.6. 打开程序:找到objects->printf_usb_query.hex
5.14.7. 点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手
5.14.8. 1秒后,软件右上方USB-CDC串口助手打开,在右侧发送区,点击发送”hello world!“,在接收缓冲区,看到“hello world!”,发送一个接收一个。
5.14.9. 在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。
5.15. USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载):
5.16. ISP下载软件里,除了硬件设置外,还要在软件项目进行设置:
5.16.1. 在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区”
5.16.1.1. 勾选:USB-CDC(串口模式)
5.16.1.2. 勾选:使用默认的内部自定”@STCISP#”
5.16.1.3. 勾选:下次下载使用HID接口进行ISP下载
5.16.1.4. 勾选:每次下载前先发送自定义命令。
5.16.1.5. 勾选:每次下载前都重新装载目标文件
5.16.1.6. 勾选:当目标文件变化时自动装载并发送下载命令。
5.16.2. 软件设置后,USB连线连接PC与硬件实验箱。
5.16.3. 按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。
5.16.4. 出现:(HID1)usb-writer(串行接口通信了)
5.16.5. 此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式
5.16.6. 下面操作与USB普通下载相同。
5.17. 不停电下载与普通下载的区别:
5.17.1. 当源代码发生改变,软件仍然可以等待并下载。
5.17.2. 点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。
谢谢老师们。

xhljs 发表于 2025-9-13 10:38:01


xhljs 发表于 2025-9-13 10:41:24


xhljs 发表于 2025-9-13 10:53:06

实验三:PRINTF_USB_int 打印接收到的数据(中断方式)1. 去官网WWW.STCAI.COM,下载软件工具中的:1.1. 工具软件:Aicube-isp-v6.96A软件、keil中断拓展插件、工具使用说明、触摸按键套件。1.2. 库函数:USB库函数(适用于所有带USB模块的芯片,如AI8051U及其他STC 8位、32位芯片)。1.3. AI8051U系列32位硬件乘除运算MDU32库函数。1.4. 8系列MDU:16位硬件16位MDU16、32位MDU32C乘除库函数。1.5. 8G-8H系列通用库函数。1.6. 8A8K64D3通用库函数。1.7. 32位MDU库函数。1.8. 32位TFPU库函数。1.9. 32G12k128主控库函数。1.10. 32F系列TFPU库函数。1.11. AI8051U创新、传统风格库函数。1.12. AI8051U、32位硬件三角函数和浮点运算的TFPU库函数。2. 打开USB库函数:2.1. 范例程序“2.1.1. STC-CDC查询、STCCDC中断、STC-hid查询、STC-hid中断(今天用到的是STC-CDC)。2.2. Usb库函数:2.2.1. stc_usb_cdc_8h_data.lib2.2.2. stc_usb_cdc_data_8h_b151.lib2.2.3. stc_usb_cdc_8h_xdata.lib2.2.4. stc_usb_cdc_xdata_8h_b151.lib2.2.5. stc_usb_cdc_32g_data.lib(<64kB)2.2.6. stc_usb_cdc_data_32g_huge.lib(>64KB)2.2.7. ai_usb.h2.2.8. keilkill中断拓展2.2.9. Stc32_stc8_usb.h2.2.10. 库文件使用说明。3. AICUBE 项目助手设置界面:3.1. 项目设置:3.1.1. 单片机型号:AI8051U-32Bit3.1.2. 项目名称:test13.1.3. 项目路径:E:\AI8051U3.1.4. 项目类型:单文件类型3.1.5. 自动打开项目:是3.1.6. 自动备份keil项目文件:是3.1.7. 备份深度:23.1.8. 编码格:GB2312(新增UTF-8)3.1.9. Cpu模式:源模式(sourse)3.1.10. 存储器模式:xsmall模式3.1.11. 代码等等小模式:large模式3.1.12. 4字节中断帧:是3.1.13. 使能REMOVEUNUSED:是3.1.14. 创建HEX格式:是3.1.15. HEX格式:HEX-80(代码>64kB,用HEX-386)3.2. 图形化I/O设置3.2.1. 如右图:芯片管脚功能:3.2.2. 左键选择管脚功能,右键配置管脚模式3.2.3. 可以看到右下输出窗口,显示配置3.3. 点击左侧窗口“PERIPHERAL,外设”下拉的相应端口必须勾选后,才能生效。3.4. 图形化时钟配置(一般默认,不需要设置):3.4.1. 主时钟源:内部PLL输出3.4.2. 系统时钟分频:33.4.3. 主时钟输出:否3.4.4. 选择内部高速IRC频率:内部预置频率3.4.5. 内部预置频率:40MHZ3.4.6. 启动外部高速晶振:否3.4.7. 启动内部低速IRC:否3.4.8. 启动内部48MHZ高速IRC:否3.4.9. PLL时钟源:内部高速IRC3.4.10. PLL输出时钟分频:4分频3.4.11. PLL输出:8倍频(96MHZ)3.4.12. 高速外设时钟预分频:13.4.13. I2S时钟分频:13.4.14. PWMA时钟分频:13.4.15. PWMB时钟分频:13.4.16. TFPU时钟分频:13.4.17. 设置是否正确,检查有无黄色文本(报错),报错必重新修改设置。黄色报错,蓝色可配置。3.5. SYS,系统:3.5.1. GLK 时钟:一定要勾选,保障上一章节“图形化时钟配置”对时钟的所有配置生效。3.5.2. 除时钟配置外,其他如外部中断、定时器/计数器、TFT、总线等,根据电路要求需要设置。3.6. USB通用串口总线设置:3.6.1. USB协议:CDC通信设备协议3.6.2. 数据处理方式:查询方式3.6.3. USB不停电下载:是3.6.4. ISP下载命令:@STCISP#3.6.5. 等USB主机检测到DEVICE并配置完成:否3.6.6. 中断优先级:最低优先级。4. 保存以上所有设置。5. 实际操作:5.1. 重新打开AIcube项目5.2. 首先勾选“USB通用串行总线”:5.3. USB具体设置:5.3.1. USB协议:CDC通信设备协议5.3.2. USB端口:D-(P3.0),D+(P3.1)5.3.3. 数据处理方式:中断方式5.3.4. USB不停电下载:是5.3.5. ISP下载命令:@STCISP#5.3.6. 等USB主机检测到DEVICE并配置完成:否5.3.7. 中断优先级:最高优先级。5.4. 本实操对其他配置暂时不需要用到,不做设置5.5. 保存上述设置。5.6. 生成并打开keil项目5.7. 打开main.c5.8. 先编译一下,0 error,0 warning5.9. 添加头文件和主函数5.10. 必须在对应的begin与end之间添加5.11. 从keil范例程序中:深圳大学上机试验有编好的PRINTF_USB_query 程序中的C语言打开,在main函数段,找到并复制程序段5.11.1.if (UsbOutBuffer == 6)          printf_usb("Hello World !\r\n"); //接收到数据6后打印“Hello World !”      else if (UsbOutBuffer == 7)          printf_usb("China !\r\n");//接收到数据7后打印“China !”粘贴到本实验对应位置。5.12. 在相应头文件位置复制粘贴:5.12.1. #include”ai8051u.h”5.12.2. #include”ai_usb.h”5.12.3. 用TAB键将代码对齐,规范代码风格5.12.4. 如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。5.12.5. 编译程序显示:0 error,0 warning,表示编译成功。5.13. 回到AiCube 界面:进行设置:5.13.1. 单片机型号:AI8051U-32K645.13.2. 通信方式:USB-CDC5.13.3. 最低波特率:24005.13.4. 最高波特率:1152005.13.5. 起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区”5.13.6. 硬件配置:5.13.6.1. IRC调节模式:勾选“不调节,使用内部预置频率”5.13.6.2. IRC 预置频率:40MHZ5.13.6.3. 勾选:振荡器放大增益>(12MHZ以上建议选择)。5.13.6.4. 勾选:上电复位使用较长延时5.13.6.5. 勾选:允许低电压复位(禁止低电压中断)5.13.7. 打开编译好的程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb_int.hex5.14. 先用普通USB下载5.14.1. 参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分)5.14.2. 硬件连接:用USB线将PC与实验箱连接上5.14.3. 先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。5.14.4. 出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。5.14.5. 此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。5.14.6. 打开程序:找到objects->printf_usb_int.hex5.14.7. 点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手5.14.8. 1秒后,软件右上方USB-CDC串口助手打开,在右侧发送区,点击发送”hello world!“,在接收缓冲区,看到“hello world!”,发送一个接收一个。5.14.9. 在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。5.15. USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载):5.16. ISP下载软件里,除了硬件设置外,还要在软件项目进行设置:5.16.1. 在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区”5.16.1.1. 勾选:USB-CDC(串口模式)5.16.1.2. 勾选:使用默认的内部自定”@STCISP#”5.16.1.3. 勾选:下次下载使用HID接口进行ISP下载5.16.1.4. 勾选:每次下载前先发送自定义命令。5.16.1.5. 勾选:每次下载前都重新装载目标文件5.16.1.6. 勾选:当目标文件变化时自动装载并发送下载命令。5.16.2. 软件设置后,USB连线连接PC与硬件实验箱。5.16.3. 按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。5.16.4. 出现:(HID1)usb-writer(串行接口通信了)5.16.5. 此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式5.16.6. 下面操作与USB普通下载相同。5.17. 不停电下载与普通下载的区别:5.17.1. 当源代码发生改变,软件仍然可以等待并下载。5.17.2. 点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。

xhljs 发表于 2025-9-13 10:57:28

西西研究员 发表于 2025-9-13 08:36
辛苦您学习打卡时开一个帖子,然后逐级在下面回复打卡即可,感谢配合与支持!!! ...

谢谢老师指正,提高了我对USB模块功能的认识。

xhljs 发表于 2025-9-13 11:08:15

西西研究员 发表于 2025-9-13 08:33
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

感谢版主推荐与指导,目前仅在PC端学习与实践,等申请到Ai8051U实验箱1.2,就可以进行更全面下载实操了。
页: [1] 2 3 4
查看完整版本: 实验一:PRINTF_USB 直接输出数据