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

西西研究员推荐先看的视频

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-8-30 23:00:41 | 显示全部楼层 |阅读模式
把推荐的视频看了几遍,没有实际的操作体验,理解不深。网上买来Ai8051U芯片,转接板和其他的零配件,做了一个精简版的单片机最小系统,跟着视频一步一步学着做:
1.打开 AiCube-ISP-v6.96A 点击菜单栏的 AiCube
新建项目,勾选 USB,通用串行总线 选项,点击 创建 按钮,生成项目。
成功实现了   “printf_usb("Hello World !\r\n")及usb不停电下载” 的功能。
无标题1.png 无标题2.png 无标题3.png 无标题4.png 无标题5.png


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-10 14:30:18

16

主题

133

回帖

1170

积分

版主

积分
1170
发表于 2025-9-2 08:48:20 | 显示全部楼层
请您后续打卡发在同一条帖子,不同楼层下,谢谢
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-10 14:30:18

16

主题

133

回帖

1170

积分

版主

积分
1170
发表于 2025-9-2 08:50:34 | 显示全部楼层
“第三集 点亮第一颗LED”的学习
今天学习了冲哥的视频“第三集 点亮第一颗LED”,因申请的“擎天柱”还没有拿到,试验箱的申请还需要用自己焊接的简配版最小系统板(简称小板)跟着视频照着做了一遍,顺利通过。
焊接的小板:
截图202509020848558407.jpg 截图202509020849119745.jpg
截图202509020849258047.jpg
在这个过程中有一个发现:当在电脑上插入连着小板USB线后电脑居然自动识别出了"USB-CDC,CDC"串口(电源是接通的但是没有按下P3.2按键)。这是不是因为前次下载的“printf_usb("Hello World !\r\n")usb不停电下载”的原因呢?此时点击“下载”还是不能下载,必须把3个全部勾选上,才可以实现“usb不停电下载”!
截图202509020849457033.jpg
但是下载“点亮第一颗LED”项目后,"USB-CDC,CDC"串口就没有了,必须按下P32键接通电源才行!看来"USB-CDC,CDC"串口有“继承性”!
于是把前次的程序进行修改,增加点亮LED部分,
截图202509020850044142.jpg
编译下载一次后,就又可以实现“usb不停电下载”了。看来“usb不停电下载”这个方便的功能还需好好理解应用!
截图202509020850255556.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-2 11:24:58 | 显示全部楼层
好的。就是以后的帖子就在“西西研究员推荐先看的视频”的帖子下,点击“发表回复”进行发帖,是吗?
另外:昨天的帖子有一个关于“usb不停电下载”的回复,还没理解,可以把这段重发一下吗?或在哪里可以找到适合初学者通俗易懂的材料。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-10 14:30:18

16

主题

133

回帖

1170

积分

版主

积分
1170
发表于 2025-9-2 16:53:30 | 显示全部楼层
OK可以的,参考以下视频,后续您的打卡回复都只要在本帖下面发表回复就行
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-4 19:01:32 | 显示全部楼层
第四集 USB不停电下载
官方 免费+包邮 的 “擎天柱”核心板收到了,十分感谢!

截图202509041840473318.jpg     截图202509041841579989.jpg

小板子挺精致的,与电脑的连接使用的是Type C”接口,板上焊接了四个按键开关,旁边分别标注了“POWER,nRESET,P32 INT0,P33 INT1,其中“POWER,P32 INT0”两个按键开关配合,可以实现USB下载(先按下“P32 INT0”按键并保持按下,再按下“POWER”按键然后松开,再松开“P32 INT0”按键);还有两个贴片LED标注了“POWER”和“VCC,分别指示电源接通和系统电源接通(按下“POWER”按键可以断开系统电源!),P2口焊接了8个贴片LED小灯,有了这个“擎天柱”核心板学习Ai8051U单片机就要比用自己手搓的小板方便许多,也要安全许多,避免了插针时出错。
找来Type C数据线,插入电脑,板子程序就跑起来了,板子出厂预装了跑马灯程序。
截图202509041852254940.jpg
试着 按下P32 INT0”按键,再按下“POWER”按键,AiCube-ISP-v6.96A软件可以扫描到 (HID1)USB-Writer
然后按照冲哥视频,先新建了一个目录No_PWR_Off”,然后下载USB库文件,找到需要的文件拷贝到No_PWR_Off”目录下,然后启动keil软件,打开工程,修改LED灯地址以适应擎天柱核心板,编译不通过,显示如下图:
截图202509041853261805.jpg
根据编译信息,在程序中,注释掉如下图所示语句,
截图202509041855015295.jpg
重新编译通过,下载运行成功,测试不停电下载功能都正常!
后比较视频程序的文件和自己按照视频一步一步操作后的程序文件,发现视频中的库文件是旧版,而我下载的是最新版本,于是把视频的整个项目文件都原封不动的拷贝到另外的目录,再打开编译,没有问题,看来问题是出在库文件与main.c中的语句有冲突,那么使用新的库文件要如何修改呢?是不是把有冲突的语句注释掉就可以了?简单这样处理会不会有后遗症?


截图202509041848159305.jpg
截图202509041848413788.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-8 09:15:18 | 显示全部楼层
这几日在学习Ai8051U单片机USB不停电下载的过程中发现下载了含有“USB不停电下载功能”的程序的单片机,用电池电源供电或者USB充电线(只有电源线)供电时,程序不运行,把程序中的实现“USB不停电下载功能”的代码去掉后,再用电池或者USB充电线(只有电源线)供电,单片机就可以正常运行,不知道是什么原因。这个问题暂且放置,等学习到后面的知识后也许就有答案了。或者有大咖看到后,能为我解疑答惑!十分感谢!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-11 11:59:38 | 显示全部楼层
第五集 C语言基础


先学习USB_CDC串口的printf函数的实现,因为这个printf可以方便快速的帮助我们打印出变量的各种信息,可以帮助我们在开发时进行快速的调试,所以在C语言基础课程开始之前,先把这个printf函数过一下。单片机怎么才能使用printf?我们只要打开USB库中的PRINTF_USB宏定义(去掉//)。
D05_20.png
理解PRINTF的函数原型的定义:
D05_01.png
D05_03.png

D05_02.png

使用的 格式字符,转义字符,和标志:
D05_04.png
ASCII码表:
D05_05.png

关于数的进制,数的基本类型:
D05_06.png
变量的定义,与定义域:
D05_07.png
C语言常用运算符:算术运算符,关系运算符:
D05_08.png
C语言常用运算符:逻辑运算符,赋值运算符:
D05_10.png
C语言常用运算符:位运算符,其他运算符:
D05_11.png
printf的使用:
D05_09.png
C语言的使用,为单片机注入智能,在这个AI的大时代,提供无穷的可能!因此,要努力学好C语言,为更好的使用Ai8051U单片机!


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-12 11:41:10 | 显示全部楼层
第六集 IO输入输出
1. 什么是GPIOGeneral Purpose I/O Ports 通用输入输出端口;是单片机与外界交换信息的一种途径;通过端口引脚上高低电平的变化来传递和交换信息。高低电平是相对于系统的而言的,3.3v供电系统与5v的供电系统,其高低电平的电压值是不同的,需要特别注意,不同供电电压的系统之间在交换信息时,需要进行电平转换。
D06_01.png
D06_03.png
GPIO口的4种工作模式:1.准双向口 2.推挽输出 3.高阻输入 4.开漏模式
要注意各个模式的带负载能力是不同的!
D06_02.png
2. 按键输入检测与按键消抖
单片机通过连接到GPIO口的按键在按下与弹起时IO口电平的变化,来检测按键。由于按键的机械特性决定了按键在按下与弹起时必然会有抖动,这个抖动会引起IO口电平的抖动,从而使得单片机产生错误动作,必须消除此抖动;通过科学的手段,测得这个抖动的时间约为20毫秒,可以通过编程延时来达到消除抖动的目的。
D06_04.png
D06_05.png
3. 课后小练
D06_课后小练.png

练习一 代码如下:

/* 实验板 - 擎天柱  */
#include "ai8051u.h"
#include "ai_usb.h"

void Delay20ms(void)        //@40.000MHz
{
        unsigned long edata i;

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

void main(void)
{
        EAXFR = 1;        WTST = 0;        CKCON = 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();
        EA = 1;
        while(1)
        {
                if(P32==0)
                {
                        Delay20ms();                  //延时20ms按键消抖
                        if(P32==0)
                        {
                                P2=0xa5;                //修改 0xfe 可以控制每次按P32键亮亮灯的方式
                        }
                }
                if(P33==0)
                {
                        Delay20ms();                  //延时20ms按键消抖
                        if(P33==0)
                        {
                                P2=0x5a;                //修改 0xff 可以控制每次按P33键亮灭灯的方式
                        }
                }
        }
}

练习二 代码如下:

/* 实验板 - 擎天柱  */
#include "ai8051u.h"
#include "ai_usb.h"
#include "intrins.h"

unsigned char cc=0xfe;

void Delay20ms(void)        //@40.000MHz
{
        unsigned long edata i;

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

void main(void)
{
        EAXFR = 1;        WTST = 0;        CKCON = 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();
        EA = 1;
        while(1)
        {
                if(P33==0)
                {
                        Delay20ms();                        //延时20ms消抖
                        if(P33==0)
                        {
                                P2=cc;
                                if(cc==0)
                                {
                                        cc=0xff;                //变量cc恢复初始值
                                }
                                while(P33==0);                //等待P33按键松开
                                cc<<=1;                        //变量cc左移一位,最右位补0
                        }
                }
        }
}

KEY_LED1.rar (73.87 KB, 下载次数: 3) KEY_LED2.rar (74.23 KB, 下载次数: 4)

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-10-16 07:45:47
已绑定手机

1

主题

10

回帖

293

积分

中级会员

积分
293
发表于 2025-9-18 09:05:00 | 显示全部楼层
第七集 定时器中断
关于本集视频定时器及函数学习后的理解,欢迎指导:
  视频中为了讲解定时器,举了一个妈妈炒菜,让儿子加木头添火的例子。
D7_00.png
如果把这个让儿子加木头添火改一下是不是更符合单核CPU单片机的实际情况:
“妈妈:宝贝,妈妈要炒菜,你帮妈妈看着火,一分钟提醒妈妈一下,妈妈来看要不要加一根木头,不能让火熄灭了,不然菜就炒不好了。”
这里的“妈妈”相当于单片机里的“单核CPU”,“儿子”相当于单片机里的“定时器”,定时器(儿子)只负责提醒CPU(妈妈),并不执行代码(加木头),代码的执行(加木头)还是要CPU(妈妈)去做。
D7_00_1.png
1. 单核CPU,单次只能执行一个任务,在从100数到0的过程中,如果没有别的特殊情况,不能再去做别的事情了,那么这怎么办呢?这就要引入定时器。利用单片机的一种硬件机制,对系统时钟的某种分频进行计数,一个脉冲计数一次,由于系统时钟的精确稳定性,这种计数就可以对应到相应的时间的间隔,这就是定时器了。定时器干的事情就是计数并当计数到设定值时发出一个信号,由单片机系统根据这个信号来调配程序的执行步骤;这个信号就是定时器的中断信号。
所谓中断,就是打断当前正在做的事情。定时器中断就是CPU接收到定时器完成计数后发出的信号,打断正在执行的代码转而去执行另一段代码的过程。
D7_01.png
D7_02.png
2. printf函数输出某些汉字乱码的消除
Ai8051U.pdf 2025/8/25版本的第60页进行了说明。如下图:
D7_04.png
3. 定时器运行机制详细说明如下列图:
D7_05.png
D7_06.png
D7_07.png
D7_08.png
D7_09.png
D7_10.png
4. 定时器在使用时的定时时间的计算以及初始化程序的编写,AiCube-ISP-v6.96C(目前最新版)软件提供了很好用的工具,使用方法如下图所示:
D7_03.png
5. 函数的使用:包含函数的定义,声明,调用等步骤,参考下列图示说明:
D7_11 函数说明.png
D7_12 函数举例.png
6. 课后小练:
D7_13 课后小练.png
根据练习要求,先使用“AiCube-ISP-v6.96C”软件的“AiCube”工具,生成程序框架,然后在框架程序提示的相应位置编写代码:
1.变量声明 :
截图202509180838599486.jpg
2.使用“AiCube-ISP-v6.96C”软件的“定时器计算器”工具,生成“定时器0”的10ms的初始化程序和“定时器0”的中断程序框架,复制并粘贴到keil程序中:
截图202509180845444327.jpg
截图202509180901394085.jpg
3.编写程序其它部分实现练习要求,完整程序打包如下:
GongDe.rar (174.86 KB, 下载次数: 4)







回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 10:28 , Processed in 0.125867 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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