AiCube 试用 - USB 打印 Hello World

本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具实现 USB 打印 Hello World 的主要流程。
项目介绍
该项目通过定时器中断实现硬件 USB-CDC 直接打印字符串,同时翻转 P20 的输出电平。
程序流程图


硬件平台
硬件测试平台为基于 AI8051U-34K64 主控的 擎天柱 开发板


下载软件
下载 最新版 AIapp-ISP
软件;
解压并打开该软件,右侧操作界面选择并进入 Keil 仿真设置
标签项;
仿真设置
选择目标单片机型号 - 添加型号和头文件到 Keil - 选择 Keil 安装目录文件夹 - 确定,提示添加成功;


创建项目
菜单栏点击 AiCube
标签,进入 项目创建助手
选择目标单片机型号 - 填写项目名称 - 设置保存路径 - 点击 下一步
参数配置
进入参数配置界面
取消勾选 CLK 时钟
项
勾选 外设
- USB 通用串行总线
项,并进行相关配置

勾选 TIMER 定时器
- TIMER0
,并进行相关配置,打开定时器0


注意 定时器周期
需根据实际情况设置合适的数值和单位。
生成工程
点击 创建项目
即可获得预先配置参数的 Keil 工程。
此时查看目标路径发现 AiCube 工具创建的工程文件,包括 Keil 文件、库文件夹等标准工程格式;
双击打开生成的 Keil 文件,进入 main.c
主函数文件
可见代码已根据 AiCube 工具的配置,提前配置完成定时器和中断初始化等函数。
编译一下直接生成的工程,确保无误。
代码添加
根据项目流程图,在主循环中增加中断标志判断语句,当满足中断条件时,进入中断并执行 USB 打印指令;

bit t0_flag = 0;
////////////////////////////////////////
// 项目主函数
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void main(void)
{
SYS_Init();
while (1)
{
if(t0_flag)
{
t0_flag = 0;
printf_usb("Hello World! \r\n");
}
USBLIB_OUT_Done(); //查询方式处理USB接收的数据
}
}
之后在定时器中断函数中添加 GPIO 输出电平的控制语句,实现 LED 状态翻转,用以提示 USB 消息发送状态

////////////////////////////////////////
// 定时器0中断服务程序
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void TIMER0_ISR(void) interrupt TMR0_VECTOR
{
P20 = ~P20;
t0_flag = 1;
}
之后保存并重新编译工程。
完整工程见附件。
固件烧录
生成的 HEX 烧录固件位于 Objects
文件夹下,
使用 Type-C 数据线连接开发板和电脑,按住 P32
按键的同时,短按 POWER
按键,
此时 Aiapp-ISP 软件自动识别 HID
设备


点击 下载/编程
按钮,待烧录结束,程序自动运行。
效果演示
进入 CDC/HID-串口助手
标签,选择目标 USB-CDC
设备,波特率 115200 bps
,打开串口即可接收硬件 USB 打印的消息

动态效果

同时 P20 输出翻转电平,对应的板载 LED 闪烁,间隔为 1 个定时器周期


总结
本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具实现硬件 USB 打印 Hello World 的主要流程,为 STC 系列单片机的快速开发和应用提供了参考。
附件:printf_usb_hello.zip