todd7xhu 发表于 2025-2-25 09:44:46

AI8051U学习打卡 |已送实验箱

第一课认识AI8051U开发系统


视频开头的的口号真是戳中人心:哪怕梦想让我们拼得遍体鳞伤,这一次我们也要勇往直前!
勇往直前!
勇往直前!
勇往直前!

硬件结构:
除主芯片不同外,硬件模块构成大致和手头的C51开发系统差不多,包含一下部分:
输入:IR接收、2X4矩阵键盘、16位ADC键盘、Mic、温湿度传感器、
输出:IR发射、示波器BNC、双声道音频输出、SPI/I2C OLED显示屏、8位数码管、TFT彩屏、8位LED、蜂鸣器;
通讯:USB双串口、Link 1D接口、485、
存储:TF卡槽、FLASH、EEPROM、



Ai8051u特点:
1,Ai8051U-LQFP48封装结构
2,Ai8051U有TFPU@120MHz,uS级硬件三角函数/浮点运算器;
3,Ai8051U的抗干扰强;
4,Ai8051U自带高性能复位电路,无需外部复位;
5,Ai8051U的内部时钟完全满足串口通信要求,包含4组串口;
6,Ai8051U-LQFP48有 QSPI, i8080/M6800-TFT 接口;
7,Ai8051U的PWM支持硬件移相@120MHz,DMA 支持 外设直接到外设,P2P
8,Ai8051U自带 34K SRAM,64K Flash
9,Ai8051U自带硬件USB, 无需外部USB转换芯片
10,兼容89C52RC、12C5A60S2
11,16位PWM、12位ADC

todd7xhu 发表于 2025-2-25 10:01:29

第二课 开发环境搭建以及LED控制代码编写

开发工具:
视频建议的Keil Arm软件已经安装,为了代码编辑的便利性自己还搭配了VS CODE提供效率


1. 教学起始讲解了程序的主要结构 加载了专属的ai8051u.h的头文件,并生动的讲解了while循环语句的工作原理。


2. 了解了IO口的配置,通过手册了解了IO口的工作模式,如何建立双向、推挽、高阻、开漏模式


3. 编写LED0的点亮代码,和C51以及STM32类似,先定义端口状态再调用端口;

4 探究:
如果想要LED0闪烁,可否按传统51的写法:P00=~P00配合延时函数 ?

todd7xhu 发表于 2025-2-25 10:37:35

第三课 USB不停电下载

话说这个不停电下载是太香了,C51的开发板每次下载必须开关机一次才行,拨动开关都让我拨烂两个了。
以前学习STM32时还必须借助J-LINK才能做到不断电下载。

学习中。。。。


理解main.c文件:
1. 加载stc32g和CDC模式的USB库文件;
2. 定义字符型的指针变量并分别赋值,第三个字符型变量USER_STCISPCMD赋值STC的内部命令;
3. main函数中,首先定义P_SW2寄存器进行位或运算并赋值可以访问XFR,定义P0-P7端口的状态为双向模式;
3. 调用库函数usb_init(),然后设定中断;
4. 通过while循环配置USB环境;


代码练习:


总结:
初步了解了中断地址、寄存器类型,通过官方的库文件实现了USB下载不需要开关机的操作。

todd7xhu 发表于 2025-2-25 11:35:27

第四课 C语言基础

之前有学过C语言,只是学过,还记得多少我自己都不清楚了,本节课重新温习了不同进制的数据结构和相互转换。
了解了数据基本类型和常用运算符。

收获的知识点:
1. 了解了STC自有函数printf_usb,并将C语言自带的函数printf替换为串口打印函数,使用方法大致和C语言函数printf类似;
2. 数据类型int、char、float、double、sfr等 所占用的字节长度、数值范围;
3. 算数运算符+、-、*、/、%、++、--的特点和用法;
4. 关系运算符==、!=、>、<、等用法;
5. 逻辑运算符&&、||、!用法;
6. 赋值运算符=、+=、-=、%=、<<=、&=、|=的用法;

todd7xhu 发表于 2025-2-25 12:25:43

第五课 GPIO

GPIO这四个字非常熟悉,英文构成只记得前面一个General,中间的P一直记为PROT{:touxiao:},Purpose记住了

关于IO口的电压匹配问题,3.3V供电时外接5V的CMOS端口在一般情况下可以使用电平转换器件作为桥接缓冲时钟,如果涉及到通讯口还不太清楚。

GPIO的模式配置,如果是使用开漏模式,记得外加上拉电阻,上拉,切记。


IO口设置为双向时,灌电流最大为20mA/io,外接电路时尽量利用低电平触发,如果一定要用高电平输出则需要使用推挽模式。
限流电阻尽量大于1K欧姆


IO口的具体参数,比较常用的是红框内的配置,注意高低电平的限制要求。


关于IO默认电平状态,以及上电、复位时IO口的一个状态全部都是为1,因此要避免使用高电平驱动的外设,否则开机瞬间会有动作。


关于按键的配置,需要留意按键的机械抖动,一般需要在按键触发判断时加一个延时动作去除抖动然后再判断按键的状态
例如:
if(sw==0)
{
    delay(20);
    if(sw==0)
    {
      执行命令
      while(sw==0);
    }
}


todd7xhu 发表于 2025-2-25 13:12:30

第六课,定时器和中断


全部都支持8+16位的定时中断,这个挺好,比C51强大了很多。


主要目的是学中断,但意外的收获是特殊汉字的乱码问题解决办法,这个好评。


定时器0的模型认识


关于定时器计数器内部运行逻辑讲得非常详细,结合程序实例讲解如何进行分频处理,比其他作者的教学视频更容易理解其原理




复习函数的基础知识,问题来了,在单片机开发中函数入口参数的使用技巧还是没搞太懂。


todd7xhu 发表于 2025-2-25 14:01:59

第七课,定时器周期性任务调度


巩固定时器相关的知识,讲得很细致。


虽然是学定时器,但是把C语言的基本用法if语句、for语句、数组等全部讲解清楚了。


IO口轮询计数竟然还能这样使用,学到了。特意颠倒方便编写,后面调用时取反就实现了0X01到0XFE的转变,秒啊!


解决了我设计闹钟时按键按下导致的显示中断问题


不是一般的细致,学到这相当于入门了,接下来就是代码效率优化和具体功能实现了

页: [1]
查看完整版本: AI8051U学习打卡 |已送实验箱