找回密码
 立即注册
楼主: 阿巴拉契亚

《8051U深度入门到32位51大型实战教学视频》学习心路历程

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-1-13 10:37:09 | 显示全部楼层
第十二集 复位系统,已手敲代码,测试通过。


任务一:编写看门狗程序
1、学习截图

  P33按住0.5s以上系统复位



2、主要代码
#include "config.h"
#include "task.h"
#include "io.h"


u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";


void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化        
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)


            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();  //执行功能函数        
       if( P33 !=0)        
                WDT_CONTR = 0X34;
        }
   
}   


void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}




任务二:软件复位
1、学习截图
(1)复位后进入下载模式 IAP_CONTR = 0X60;
51900aca3a0bddbeafafed5f52208ab2.png


(2)复位后从头开始运行用户程序 IAP_CONTR = 0X20;
5aee0177bebe2a3921d82ef953deb364.png

2、主要代码


#include "config.h"
#include "task.h"
#include "io.h"

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化        
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();  //执行功能函数        
      
                WDT_CONTR = 0X34;
        }
   
}   

void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}


附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】



AI8051U教学视频第十二集-复位系统1.zip (162.88 KB, 下载次数: 28)
AI8051U教学视频第十二集-复位系统2.zip (162.85 KB, 下载次数: 19)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-1-21 16:15:17 | 显示全部楼层
第十三集 外部中断,已手敲代码,测试通过。



任务:编写外部中断1的程序
1、学习截图
P00三秒取反,P01随着P33按一下,取反一次

2、主要代码
#include "config.h"
#include "task.h"
#include "io.h"


u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";




void Delay3000ms(void)        //@24.000MHz
{
        unsigned long edata i;


        _nop_();
        _nop_();
        i = 17999998UL;
        while (i) i--;
}


void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化       
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        INT1_Init();//外部中断1初始化
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
// WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)


            usb_OUT_done();              
        }
//      Task_Pro_Handler_Callback();  //执行功能函数       
//      if(P33 != 0)
//                WDT_CONTR = 0X34;
         
                P00 = !P00;
                Delay3000ms();
               
        }
   
}   


void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}


附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】



AI8051U教学视频第13集-外部中断.zip (164.3 KB, 下载次数: 13)




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-1-23 11:18:16 | 显示全部楼层
第十四集 IO中断,已手敲代码,测试通过。

任务1:编写IO中断程序
1、学习截图

2、主要代码
#include "config.h"
#include "task.h"
#include "io.h"


u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay3000ms(void)        //@24.000MHz
{
        unsigned long edata i;
        _nop_();
        _nop_();
        i = 17999998UL;
        while (i) i--;
}


void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化        
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        //INT1_Init();//外部中断1初始化
        P3_IO_Init();//IO中断初始化
        
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
// WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)


            usb_OUT_done();              
        }
//      Task_Pro_Handler_Callback();  //执行功能函数        
//      if(P33 != 0)
//                WDT_CONTR = 0X34;
         
                P00 = !P00;
                Delay3000ms();
               
        }
   
}   


void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}



任务2:编写P4端口的I0中断 打断 P3低电平中断的的程序
1、设置P3优先级比P4高
  (1)学习截图
     按下P3显示1,按下P4显示2,优先级可以打断低优先级中断
      
  (2)主要代码
void P3_IO_Init(void)
{
        P3IM0 = 0X00; //IO中断模式设置为了下降沿
        P3IM1 = 0Xff;
        
        P3INTE = 0X08;//打开中断
}


void P3_IO_ISR(void)   interrupt 40
{
        u8 intf;
        
        intf = P3INTF;
        if(intf)//判断有没有IO触发了中断
        {
                P3INTF = 0;
               
                if(intf & 0X08)//判断是否是P33按钮按下
                {
                        passward[0] = 1;
                        //P01 = !P01;
                }
        }
}

void P4_IO_Init(void)
{
        P4IM0 = 0X00; //IO中断模式设置为了下降沿
        P4IM1 = 0Xff;
        
        P4INTE = 0X80;//打开中断                  
        
}

void P4_IO_ISR(void)   interrupt 41
{
        u8 intf;
        
        intf = P4INTF;
        if(intf)//判断有没有IO触发了中断
        {
                P4INTF = 0;
               
                if(intf & 0X80)//判断是否是P33按钮按下
                {
                        passward[0] = 2;
                }
        }
}


2、设置P4优先级比P3高
  (1)学习截图  
     按下P3显示1,按下P4显示2,优先级可以打断低优先级中断


  (2)主要代码
void P3_IO_Init(void)
{
        P3IM0 = 0X00; //IO中断模式设置为了下降沿
        P3IM1 = 0Xff;
        
        P3INTE = 0X08;//打开中断
}


void P3_IO_ISR(void)   interrupt 40
{
        u8 intf;
        
        intf = P3INTF;
        if(intf)//判断有没有IO触发了中断
        {
                P3INTF = 0;
               
                if(intf & 0X08)//判断是否是P33按钮按下
                {
                        passward[0] = 1;
                        //P01 = !P01;
                }
        }
}

void P4_IO_Init(void)
{
        P4IM0 = 0X00; //IO中断模式设置为了下降沿
        P4IM1 = 0Xff;
        
        P4INTE = 0X80;//打开中断
        
        PINIPH |=(1<<4);//写入最高优先级
        PINIPL |=(1<<4);
                  
        
}

void P4_IO_ISR(void)   interrupt 41
{
        u8 intf;
        
        intf = P4INTF;
        if(intf)//判断有没有IO触发了中断
        {
                P4INTF = 0;
               
                if(intf & 0X80)//判断是否是P33按钮按下
                {
                        passward[0] = 2;
                }
        }
}




附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】


AI8051U教学视频第14集-IO中断1.zip (164.76 KB, 下载次数: 8)
AI8051U教学视频第14集-IO中断2.zip (166.2 KB, 下载次数: 10)





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-1-24 14:33:07 | 显示全部楼层
第十五集 定时器做计数器,已手敲代码,测试通过。


任务1:编写定时器1计数的的程序
1、学习截图

   10个脉冲中断一次,按下P35实现计数

2、主要代码
#include "tim.h"
u32 Count_T1 = 0;
void TIM1_Count_Init(void)
{
        T1_CT = 1;//设置为外部计数
        T1_M1 = 0;//设置为16位自动重载
        T1_M0 = 0;
        T1_GATE = 0;
        
        TH1 = (65536-Count_num)>>8;  //65526
        TL1 = (65536-Count_num);
        
        P3PU |= 0x20;


        TR1 = 1;//启动定时器1
        ET1 = 1;//打开定时器1外部中断
}


void Timer1_Isr(void) interrupt 3        //3秒执行一次
{
        Count_T1 ++; //T1引脚检测到十个脉冲就会溢出一次
}

void T1_RunTask(void)
{
        u32 count_th_tl = 0;
        count_th_tl = ((u16)TH1 << 8)+(u16)TL1;
        count_th_tl -=65526;
        
        SEG7_ShowLong(Count_T1*Count_num+count_th_tl,10);
}



任务2:编写INT1测量低电平时间
1、学习截图

  由按键模拟信号,按下P33,实现100us的计数周期计数

2、主要代码
#include "tim.h"
u32 Count_T1 = 0;
void Timer1_Isr(void) interrupt 3
{
        static u32 count_p33 = 0;
        
        if(P33 == 0)//按键按下开始计数
        {
                count_p33 ++;
        }
        else
        {
                if(count_p33 > 0)
                {
                        Count_T1 = count_p33;
                }
                count_p33 = 0;
        }
        
}


void Timer1_Init(void)                //100微秒@24.000MHz
{
        AUXR &= 0xBF;                        //定时器时钟12T模式
        TMOD &= 0x0F;                        //设置定时器模式
        TL1 = 0x38;                                //设置定时初始值
        TH1 = 0xFF;                                //设置定时初始值
        TF1 = 0;                                //清除TF1标志
        TR1 = 1;                                //定时器1开始计时
        ET1 = 1;                                //使能定时器1中断
}

void T1_RunTask(void)
{
        //SEG7_ShowLong(Count_T1,10);//显示整数
        SEG7_ShowString("%07.01f",((float)Count_T1)/10);
}


附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】



AI8051U教学视频第15集-定时器做计shu器1.zip (187.19 KB, 下载次数: 7)
AI8051U教学视频第15集-定时器做计shu器2.zip (375.37 KB, 下载次数: 13)



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-2-5 11:37:12 | 显示全部楼层
第十七集 串口的简单应用,已手敲代码,测试通过

1、学习截图
截图202502141038256319.jpg


2、主要代码


#include "config.h"
#include "task.h"
#include "io.h"
#include "time.h"
#include "usart.h"

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
//State[0]

u8 Run_State = 0;    //运行状态
u8 num = 0;


u16 Count_ms[3] = {0,0,0};         //3个计时变量


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

        void Delay3000ms(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 17999998UL;
        while (i) i--;
}


void main(void)
{
        int count = 1;
        Sys_init();   //函数调用  系统初始化
        
        usb_init();
        
        IE2 |= 0x80;   
        Timer0_Init();
        EA = 1;
        
        
//        init_595();
        P40 = 0;
        Timer1_Init();
        Uart2_Init();
        //TIM1_Count_Init();
        T1_RunTask();
        
//        P3_IO_Init();
//        P4_IO_Init();
//        INT1_Init();
        
        while (DeviceState != DEVSTATE_CONFIGURED);
//        WDT_CONTR = 0X24;
        
        while(1)               
        {        
                if (bUsbOutReady)
                        
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                        
            usb_OUT_done();
        }
                Task_Pro_Handler_Callback();
               
        }
}

void Timer0_Isr(void) interrupt 1

{

         Task_Marks_Handler_Callback();
}

        


附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】


AI8051U教学视频第17集-串口的简单应用.zip (222.29 KB, 下载次数: 3)






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-10 13:37:48

3

主题

32

回帖

357

积分

版主

积分
357
发表于 2025-3-10 13:37:48 | 显示全部楼层
第十八集 串口的高级应用,已手敲代码,测试通过

任务1:使用奇校验,8位数据位,1位停止位的数据,发送"OPEN\r\n"

1、学习截图
截图202503101333115834.jpg

2、主要代码

#include "usart.h"
#include "io.h"


bit B_TX2_Busy=0;


u8 Rec_Dat[50];
u8 Rec_Num = 0;


void Uart2_Isr(void) interrupt 8
{
        u8 dat;
        if (S2CON & 0x02)        //检测串口2发送中断
        {
                S2CON &= ~0x02;
                B_TX2_Busy = 0;        //清除串口2发送中断请求位
        }
        if (S2CON & 0x01)        //检测串口2接收中断
        {
                S2CON &= ~0x01;        //清除串口2接收中断请求位
               
                dat = S2BUF;
                ACC = dat;
               
                if( S2RB8 == (!P)  )//奇校验
                Rec_Dat[Rec_Num++] = dat;
               
        }
}


void Uart2_Init(void)        //9600bps@24.000MHz
{
        P_SW2 |= 0x01;                                                //UART2/USART2: RxD2(P4.6), TxD2(P4.7)
        
        S2CON = 0xD0;                //9位数据,可变波特率
        AUXR |= 0x04;                //定时器时钟1T模式
        T2L = 0x8F;                        //设置定时初始值
        T2H = 0xFD;                        //设置定时初始值
        AUXR |= 0x10;                //定时器2开始计时
        IE2 |= 0x01;                //使能串口2中断
        
        Rec_Num = 0;
        B_TX2_Busy = 0;
}


void Uart2_SendStr(u8 *puts)   //串口数据发送函数
{
        u8 dat;
        for(; *puts !=0;  puts++)     //遇到停止符0结束
        {
                dat = *puts;
                ACC = dat;
                if( P )
                        S2TB8 = 0;
                else
                        S2TB8 = 1;
               
                S2BUF = dat;
                B_TX2_Busy=1;
                while(B_TX2_Busy);
        }
}


void Usart2_RunTask(void)
{
        if(Rec_Num >= 6)
        {
        if((Rec_Dat[Rec_Num-1] =='\n')&&(Rec_Dat[Rec_Num-2] =='\r'))
                {
                if((Rec_Dat[Rec_Num-6] =='O')&&(Rec_Dat[Rec_Num-5] =='P')&&(Rec_Dat[Rec_Num-4] =='E')&&(Rec_Dat[Rec_Num-3] =='N'))
                        {
                         password[0]=16;
             password[1]=16;
             password[2]=16;
             password[3]=16;
                         Uart2_SendStr("打开成功!\r\n");
                        }
                        else if((Rec_Dat[Rec_Num-7] =='C')&&(Rec_Dat[Rec_Num-6] =='L')&&(Rec_Dat[Rec_Num-5] =='O')&&(Rec_Dat[Rec_Num-4] =='S')&&(Rec_Dat[Rec_Num-3] =='E'))
                        {
                         password[0]=17;
             password[1]=17;
             password[2]=17;
             password[3]=17;
                         Uart2_SendStr("关闭成功!\r\n");
                        }
                        Rec_Num = 0;
                }
        }
}

任务二:串口超时中断
1、学习截图
截图202503101334444058.jpg

2、主要代码
#include "usart.h"
#include "io.h"


bit B_TX2_Busy=0;
u8 B_RX2_OK = 0;//串口接收完成标志位
u8 Rec_Dat[50];
u8 Rec_Num = 0;


void Uart2_Isr(void) interrupt 8
{
        if (S2CON & 0x02)        //检测串口2发送中断
        {
                S2CON &= ~0x02;
                B_TX2_Busy = 0;        //清除串口2发送中断请求位
        }
        if (S2CON & 0x01)        //检测串口2接收中断
        {
                S2CON &= ~0x01;        //清除串口2接收中断请求位
               
                UR2TOCR = 0xe0; //开启超时中断,使用系统时钟
               
                Rec_Dat[Rec_Num++] = S2BUF;
               
        }
         if(UR2TOSR & 0x01)                              //串口超时中断
    {
        B_RX2_OK = 1;                               //接收完成标志位
        UR2TOSR = 0x00;                             //清除超时标志位
        UR2TOCR = 0x00;                             //关闭超时中断
    }  


}


void Uart2_Init(void)        //9600bps@24.000MHz
{
        P_SW2 |= 0x01;                                                //UART2/USART2: RxD2(P4.6), TxD2(P4.7)
        
        S2CON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //定时器时钟1T模式
        T2L = 0x8F;                        //设置定时初始值
        T2H = 0xFD;                        //设置定时初始值
        AUXR |= 0x10;                //定时器2开始计时
        IE2 |= 0x01;                //使能串口2中断
        
        UR2TOCR = 0x00; //关闭超时中断                           
  UR2TOTL = 0x04;                                 
  UR2TOTH = 0x3b;                              
  UR2TOTE = 0x01;
        
        
        Rec_Num = 0;
        B_TX2_Busy = 0;
}


void Uart2_SendStr(u8 *puts)   //串口数据发送函数
{
        for(; *puts !=0;  puts++)     //遇到停止符0结束
        {
                S2BUF = *puts;
                B_TX2_Busy=1;
                while(B_TX2_Busy);
        }
}


void Usart2_RunTask(void)
{
        if( B_RX2_OK == 1 )
        {
                B_RX2_OK = 0;
                Uart2_SendStr("接收成功!\r\n");
               
        }
}


附学习链接:


https://www.stcaimcu.com/forum.p ... 11902&extra=&page=1
《8051U深度入门到32位51大型实战教学视频》发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪, AI手写计算器100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】



AI8051U教学视频第18集-串口高级应用.zip (433.99 KB, 下载次数: 7)

        


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 04:06 , Processed in 2.844833 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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