找回密码
 立即注册
查看: 172|回复: 2

一起学 AiCube之8H8K64U应用, printf_usb("Hello World !\r\n");

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-06-14 12:40:19

25

主题

407

回帖

2525

积分

超级版主

积分
2525
发表于 7 天前 | 显示全部楼层 |阅读模式
8H8K64U 三个实验
实验一:printf_usb-使用USB-CDC的printf_usb
             直接打印数据 ("Hello World !\r\n")
实验二: 使用USB-CDC的printf_usb打印接收到的数据(查询方式)
             查询到电脑命令后,printf_usb("Hello World !\r\n")或其他
实验三: 使用USB-CDC的printf_usb打印接收到的数据(中断方式)
            单片机USB中断接收服务函数收到命令后,printf_usb("Hello World !\r\n")或其他


部分手敲代码可从下面直接拷贝
截图202506091010358096.jpg
截图202506091016153990.jpg
#include  "ai8051u.h"        //头文件不分大小写,但关键字分大小写
#include  "ai_usb.h"        //USB库和USB虚拟设备的头文件

void  main(void)
{
        EAXFR = 1;       //允许访问扩展的特殊寄存器,XFR
        WTST = 0;       //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
        CKCON = 0;     //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

        P0M0 = 0x00; P0M1 = 0x00;        //初始化P0口为准双向口模式
        P1M0 = 0x00; P1M1 = 0x00;         //初始化P1口为准双向口模式
        P2M0 = 0x00; P2M1 = 0x00;         //初始化P2口为准双向口模式
        P3M0 = 0x00; P3M1 = 0x00;         //初始化P3口为准双向口模式
        P4M0 = 0x00; P4M1 = 0x00;         //初始化P4口为准双向口模式
        P5M0 = 0x00; P5M1 = 0x00;         //初始化P5口为准双向口模式

        usb_init();
        //初始化USB模块,并且会将【P3.0,P3.1】初始化为高阻输入,不影响USB【D-,D+】通讯
        EA = 1;                //使能总中断

        while (1)
        {
                printf_usb("Hello World !\r\n");
                //  \r是回车,并跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
        }
}
截图202506091017091565.jpg
#include "ai8051u.h"
#include "ai_usb.h"

void main(void)
{
        EAXFR = 1;               //允许访问扩展的特殊寄存器,XFR
        WTST = 0;                //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
        CKCON = 0;              //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

    P0M0 = 0x00; P0M1 = 0x00;           //初始化P0口为准双向口模式
    P1M0 = 0x00; P1M1 = 0x00;           //初始化P1口为准双向口模式
    P2M0 = 0x00; P2M1 = 0x00;           //初始化P2口为准双向口模式
    P3M0 = 0x00; P3M1 = 0x00;           //初始化P3口为准双向口模式
    P4M0 = 0x00; P4M1 = 0x00;           //初始化P4口为准双向口模式
    P5M0 = 0x00; P5M1 = 0x00;           //初始化P5口为准双向口模式
    P6M0 = 0x00; P6M1 = 0x00;           //初始化P6口为准双向口模式
    P7M0 = 0x00; P7M1 = 0x00;           //初始化P7口为准双向口模式
   
    usb_init();                         //初始化USB模块
    EA = 1;                             //使能全局中断

    while (1)
    {
        if (bUsbOutReady)               //查询是否有接收到数据
        {
                        if (UsbOutBuffer[0] == 6)
                                printf_usb("Hello World !\r\n");
                        else if (UsbOutBuffer[0] == 7)
                                printf_usb("China !\r\n");
                        

                        usb_OUT_done();             //当前包的数据处理完成
        }
    }
}
截图202506091009559487.jpg
#include "ai8051u.h"
#include "ai_usb.h"
////////////////////////////////////////
// USB设备接收数据中断回调程序
////////////////////////////////////////
void USBLIB_OUT_Callback(void)
{
    if (UsbOutBuffer[0] == 6)
        printf_usb("Hello World !\r\n");        //接收到数据6后打印“Hello World !”
    else if (UsbOutBuffer[0] == 7)
        printf_usb("China !\r\n");                //接收到数据7后打印“China !”
}

void main(void)
{
        EAXFR = 1;                                //允许访问扩展的特殊寄存器,XFR
        WTST = 0;                           //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
        CKCON = 0;                          //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间

    P0M0 = 0x00; P0M1 = 0x00;           //初始化P0口为准双向口模式
    P1M0 = 0x00; P1M1 = 0x00;           //初始化P1口为准双向口模式
    P2M0 = 0x00; P2M1 = 0x00;           //初始化P2口为准双向口模式
    P3M0 = 0x00; P3M1 = 0x00;           //初始化P3口为准双向口模式
    P4M0 = 0x00; P4M1 = 0x00;           //初始化P4口为准双向口模式
    P5M0 = 0x00; P5M1 = 0x00;           //初始化P5口为准双向口模式
    P6M0 = 0x00; P6M1 = 0x00;           //初始化P6口为准双向口模式
    P7M0 = 0x00; P7M1 = 0x00;           //初始化P7口为准双向口模式
   
    usb_init();                         //初始化USB模块
    set_usb_OUT_callback(USBLIB_OUT_Callback);  //设置USB中断回调函数
    EA = 1;                             //使能全局中断

    while (1);
}




电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复

使用道具 举报 送花

3

主题

727

回帖

165

积分

等待验证会员

积分
165
发表于 7 天前 | 显示全部楼层
当然可以!以下是关于“AiCube之STC8H8K64U应用、printf 仓库、实验1、2、3”的专业回复:

1. STC8H8K64U应用概述
STC8H8K64U是集成了AI Cube的高性能微控制器,广泛应用于机器人控制、目标检测、目标跟踪等场景。其应用广泛,能够实现高精度、高速度的目标定位与跟踪。

1.1 核心功能
AI Cube核心:支持多任务处理、目标检测、目标跟踪、运动控制等。
printf 仓库:提供高效的内存管理、I/O操作以及信号处理能力,适合高性能应用需求。

1.2 应用场景
机器人控制:用于工业机器人、服务机器人等,实现精确控制和实时响应。
目标检测与跟踪:应用于自动驾驶、物流运输、医疗监控等领域。
运动控制:用于自动化生产线、工业机器人等,实现精准运动控制。

2. printf 仓库的使用与优化
2.1 printf 仓库的特点
高效性:通过多线程和寄存器访问优化,适合多任务处理。
低延迟:通过寄存器访问和多线程实现,减少I/O操作延迟。

2.2 实验1:基础功能测试
目标定位与跟踪:通过简单的目标检测和跟踪实验验证AI Cube的核心功能。
运动控制测试:模拟简单的机器人运动,验证控制算法的响应速度和精度。

2.3 实验2:复杂场景应用
工业机器人控制:在复杂工业环境中测试AI Cube的实时控制能力。
医疗监控应用:模拟医疗场景,测试AI Cube在高精度定位与跟踪中的表现。

2.4 实验3:性能优化与改进
多线程优化:通过多线程技术提升AI Cube的执行效率。
寄存器访问优化:通过优化寄存器访问路径,进一步提高性能。

3. 总结与展望
AI Cube的核心功能:STC8H8K64U作为AI Cube的硬件核心,具备高度的机械设计和性能优化能力。
printf 仓库的作用:在实现AI Cube核心功能时,printf 仓库提供了高效的内存管理与I/O操作支持。
未来展望:随着AI技术的发展,AI Cube和printf 仓库的结合将进一步推动自动化应用的发展。

希望以上内容对您有所帮助!如果需要更详细的内容或进一步的解释,请随时告诉我。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-06-12 09:42:00
已绑定手机

7

主题

17

回帖

191

积分

注册会员

积分
191
发表于 4 天前 | 显示全部楼层
我用的是STC8H实验箱9.6,按照视频,操作到7:25时,手动又按了一下P3.2(INT0)接地,再按了一下 ON/OFF 电源按键,结果不对了,扫描串口处USB Writer (HID1)不见,然后再重来操作,提示“未知USB设备”,驱动不见了,请问我该如何还原?
截图202506120037374846.jpg
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 03:48 , Processed in 0.139115 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表