找回密码
 立即注册
查看: 158|回复: 9

AI8051U之温故学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-8 18:24:33 | 显示全部楼层 |阅读模式
第一集


关于“USB不停电下载”的功能,着实方便了日常调试,集成的USBLIB库文件,大大方便了USB初学者直接调用。

针对USBLIB集成库文件,可否增加外部修改USB描述符的接口,
这是USB的精华所在之一,完全屏蔽不让修改,似乎也不太好,半开放为宜!



截图202507081824264024.jpg
回复

使用道具 举报 送花

3

主题

252

回帖

-785

积分

等待验证会员

积分
-785
发表于 2025-7-8 18:28:00 | 显示全部楼层
【国芯人工智能官方回复】  

尊敬的用户,您好!  

感谢您对AI8051系列芯片的关注与支持,也感谢您在“温故学习打卡”系列中的积极参与。关于您提到的“USB不停电下载”功能以及USBLIB库文件的相关建议,我们高度重视,并在此作出专业回应。  

首先,“USB不停电下载”功能是AI8051系列芯片在开发调试过程中的一项重要优化,旨在提升开发效率、减少调试时间。该功能通过集成USBLIB库文件,实现了无需外接电源即可完成固件更新与调试操作,极大地方便了开发者,尤其是初学者快速上手USB通信模块。  

关于您提出的“是否可增加外部修改USB描述符的接口”的问题,我们非常认同您的观点。USB描述符是USB设备的核心配置信息之一,它决定了设备在主机端的识别方式和行为表现。在实际应用中,不同场景下往往需要对描述符进行定制化配置,以适配不同的硬件环境或应用场景。因此,完全屏蔽对USB描述符的修改确实可能限制了产品的灵活性与适用性。  

针对这一问题,我们已将您的建议纳入后续产品优化规划中。未来版本的USBLIB库文件中,我们将考虑提供更开放的接口机制,允许开发者在一定范围内对USB描述符进行自定义配置,同时确保系统的稳定性和兼容性。具体实现方式将结合SDK文档进行详细说明,以便开发者能够安全、高效地使用该功能。  

此外,我们也建议开发者在使用USBLIB库时,充分理解USB协议的基本原理,包括设备描述符、配置描述符、接口描述符等结构,这将有助于更好地掌握USB通信机制,并在实际开发中灵活运用。  

再次感谢您的宝贵意见,我们会持续关注用户需求,不断优化产品功能,提升用户体验。如您在使用过程中遇到其他问题或有更多建议,欢迎随时与我们联系。  

国芯人工智能团队  
2025年4月

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:46
  • 最近打卡:2025-07-30 10:54:49

24

主题

436

回帖

2843

积分

版主

积分
2843
QQ
发表于 2025-7-9 08:37:08 | 显示全部楼层
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-10 15:10:03 | 显示全部楼层
第二集
定时器中断



关于12T和1T的速度选择:
stc单片机已支持1T高速模式,要注意配置AUXR辅助寄存器,

[B7]T0x12: 定时器0速度控制位
0, 定时器0是传统8051速度,12分频;
1, 定时器0的速度是传统8051的12倍,不分频
[B6]T1x12: 定时器1速度控制位
0, 定时器1是传统8051速度,12分频;
1, 定时器1的速度是传统8051的12倍,不分频
[B2]T2x12: 定时器2速度控制位
0, 定时器2是传统8051速度,12分频;
1, 定时器2的速度是传统8051的12倍,不分频


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-14 11:59:12 | 显示全部楼层
第三集  定时器周期性调度任务

定时器周期性调度任务是个好东西,可以实现类似 freertos 的嵌入式实时操作系统效果


//========================================================================
// 函数: Task_Handler_Callback
// 描述: 任务标记回调函数.
// 参数: None.
// 返回: None.
// 版本: V1.0, 2012-10-22
//========================================================================
void Task_Marks_Handler_Callback(void)
{
    u8 i;
    for(i=0; i<Tasks_Max; i++)
    {
        if(Task_Comps[i].TIMCount)      /* If the time is not 0 */
        {
            Task_Comps[i].TIMCount--;   /* Time counter decrement */
            if(Task_Comps[i].TIMCount == 0) /* If time arrives */
            {
                /*Resume the timer value and try again */
                Task_Comps[i].TIMCount = Task_Comps[i].TRITime;  
                Task_Comps[i].Run = 1;      /* The task can be run */
            }
        }
    }
}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-15 20:28:24 | 显示全部楼层
第四集  IO中断


所有普通IO口都支持外部中断,不是传统中断,支持下降沿、上升沿、低电平、高电平四种中断模式,极大丰富了中断应用场景


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;
                }
        }
}



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-17 17:49:47 | 显示全部楼层
第五集  串口的高级应用


奇偶校验

在一般应用场景下,通常无校验,但在电磁环境复杂的工业场景下,还是需要设置校验位的,再结合起始符、结束符等措施,可以将误码率控制在一个较低的水平。


void Uart2_Init(void)        //9600bps@24.000MHz
{
       
        P_SW2 |= 0x01;                                                //UART2/USART2: RxD2(P4.6), TxD2
       
        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;
        B_RX2_OK = 0;
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-19 16:23:16 | 显示全部楼层
第六集  ADC_NTC测温


采用NTC电阻测量温度,可通过内部ADC通道进行电压采集,12位的ADC精度,能够满足大多数场景的需求,非常实用,相较以前的stc芯片,提高了ADC的精度和稳定性。

结合恰当的数据滤波、温度查询算法(查表法),能够轻松的获取测量的温度。


截图202507191623093431.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-21 15:32:27 | 显示全部楼层
第七集  比较器


视频老师说的有点简单,这里补充几点:

单片机比较器是单片机内部集成的一种模拟信号处理模块,核心功能是对两个输入电压信号(或一个输入电压与一个参考电压)进行实时比较,并输出高低电平表示比较结果(如 “A 信号电压高于 B 信号电压” 则输出高电平)。

例如可用于:电压阈值检测、信号快速比较与响应、波形整形与转换等

实际意义:简化设计、提升性能、拓展应用

相对于用ADC采集电压,省略了很多步骤。与采用运算放大器的效果是一样的,实时输出比较结果。



截图202507211532216680.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-07-24 00:20:40
已绑定手机

7

主题

26

回帖

177

积分

注册会员

积分
177
发表于 2025-7-22 14:13:12 | 显示全部楼层
还是从 printf_usb("Hello World !\r\n") 开始,《单片机原理及应用》入门@Ai8051U
https://www.stcaimcu.com/thread-16731-1-1.html

第八集 printf_usb

1.采用stcisp的AiCube创建项目
截图202507221407132432.jpg

2.配置外设
按照右侧配置usb-cdc外设,不要太方便,可以勾选“与printf_usb函数关联”,使用更加方便,其他自定。usb-cdc功能允许单片机直接连接电脑串口,无需再经过串口转换芯片,极大方便了数据传输、调试,简直是工程师的福音,大爱!
截图202507221407514228.jpg
记得配置引脚!
截图202507221409095721.jpg


3.打开项目
打开自动生成的项目文件,基础代码已全部自动生成并且配置完毕,无需另外移植、修改底层驱动代码,可以将时间更多的留给项目使用。

截图202507221411089871.jpg

4.添加代码
按图,在main函数的while循环中,添加如下测试代码并编译:
  printf_usb("Hello STC\r\n");
  delay_ms(1000);
截图202507221412573222.jpg
打开STC-ISP软件,下载编译好的HEX文件程序,观察CDC/HID-串口助手,此时单片机已循环上传“Hello STC”字符串。至此首个printf_usb输出项目完成,就是这么简单、高效!

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-7-31 06:35 , Processed in 0.129627 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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