学习AI8051U打卡
第1集、
https://www.stcaimcu.com/forum.php?mod=image&aid=76805&size=300x300&key=fdbff6ea44470d78&nocache=yes&type=fixnone
AI8051U增加了较多功能,对于数据处理和音视频播放有巨大提升。
https://www.stcaimcu.com/forum.php?mod=image&aid=76807&size=300x300&key=a0e2876508bd50ad&nocache=yes&type=fixnone
在下载对应的程序后显示的由PWM_DMA控制的灯组,说明功能正常,据视频所说可以控制1000多个灯,在广告领域或者显示领域有不错的应用。
https://www.stcaimcu.com/forum.php?mod=image&aid=76809&size=300x300&key=cdf6a0cac5acf536&nocache=yes&type=fixnone
可以通过flash编程器将视频播放显示,可以看到十分的不错。
其中最让我感到意外的就是FFT的操作,对于一些声音的信号似乎又多了一种可以选择的芯片。
打卡第2集、
在决定学习新的AI8051U的时候我已经将keil251和一些插件和程序下载器下载好,并且昨天申请了一块样板,擎天柱,顺风发货,一天就到了。这样实践起来也很方便。
https://www.stcaimcu.com/forum.php?mod=image&aid=76819&size=300x300&key=49f72c5995fbd7d8&nocache=yes&type=fixnone https://www.stcaimcu.com/forum.php?mod=image&aid=76820&size=300x300&key=dcb694bec6de2690&nocache=yes&type=fixnone软件下载和插件安装还是简单的。
在测试代码发现灯不亮,查找代码将P0引脚改成样板的P2引脚 成功实现跑马灯。
https://www.stcaimcu.com/forum.php?mod=image&aid=76821&size=300x300&key=32487dc9194e348e&nocache=yes&type=fixnone
此外本集还讲到了对应的硬件,我下载了对应的原理图,等到时候查找原理图即可
djplozgh 发表于 2024-12-26 14:05
打卡第2集、
而且这个芯片只要用一个type C连接,即可下载数据,很方便,下载时只要按住P32 INTO,然后按power就能识别了。 第三集打卡、
根据提示创建工程,选择对应的开发环境,这里选择32bit,需要注意的是在target中配置 CPU mode、 memory model、code ROM size、勾选4byte。。
选择 SourceXsmalllarge这是程序代码<64K的 配置情况。output中也要勾选 create HEX file HEX-80
如果>64K则需要选择 largehuge在#1中输入 start:0XFE0000 size0X20000 并且output中勾选 cteate HEX file HEX-386
配置完成后需要完成头文件的地址配置
使用软件添加头文件也可以使用鼠标右键导入
按照编写代码即可实现灯的点亮 P20和P22两个灯。
也可以通过调试软件进行配置
对于16进制来说在单片机的开发中十分常见
简单来说就是 四个二进制数组成一位 16进制数 可以简单理解为8 4 2 1即每4位相加为一个16数据 权位相乘即可
如0X00 ->高位低位都是零0000 0000
0X10->0001 0000 代表的就是0X10
如果是0X40 则是0100 0000->高位:0*8+1*4+0*2+1*0低位:0*0+0*0+0*0+0*0 =0X40
第四集打卡、
本节主要学习自动下载的功能,先下载一下之后就不需要重复的下载对调试十分方便。同时也对一些寄存器的认识得到了提高。
首先是移植CDC查询的例程,将头文件和库文件依次导入,前几集有讲过。
移植好后,由于有些代码没有调用所以可以设置消除警告。
对于一些地址来说,可以进行位选址,有些则不能,可以通过查看数据手册进行查看,本次使用的是IE2寄存器。EA可位寻址,所以可以直接使用EA=1;
或者对数据使用位操作 如IE|=0X80; 其中不仅有| 也有&操作|是或操作,&是与操作,|有1出1&有0出0;实际上就是1|任何数据都是10&任数都是0;根据上节课所学的,既可以给任意寄存控制,而不影响寄存器
原来的数据。
需要注意的是调试软件中的重复下载接收的字符要一致。
可以看到效果,十分方便,本来录了视频但是刚好21.9M就放了一张图片。
https://www.stcaimcu.com/forum.php?mod=image&aid=77247&size=300x300&key=f22b687ca9e1c439&nocache=yes&type=fixnone
第五集打卡、
本节主要学习了一些串口的数据打印和一些转义字符和条件判断与或非操作。
首先就是串口操作,由于我是2024年12月下载的最新代码,和视频里略有区别,但是都是一样的,可以直接通过USB打印数据,这里的波特率任意都可以打印数据。
ASCII表,一些字符都是基于ASCII表的,当调试时可以观察或者通过调试软件的HEX显示功能来实现。
操作符和运算符和判断也是很重要的内容,在进行条件判断和数据处理中都要大量的使用,如上几节课使用的与或非,以及&& || += -= 等。
进制的转换,可以看权重,在接收串口的数据时可以转换,因为常常接收到十六进制的数据,转换为对应的数据。
最重要的还有一些变量的取值范围,有时数组可能会越界,比如一些数据过大,也需要注意变量的长度和变量的作用域。
第六集、GPIO操作。
输入输出引脚的高低电平不是随意添加的,一般和电源匹配。
引脚有不同的作用,比如准双向口,即可以作为输入也可以作为输出,根据不同的需求来配置引脚。
电压引脚有时需要注意,低电平可能有时不是0而是更高,如施密特模式。
电路硬件,因为我手上的是最小系统板,但是我看了丝印都是一样的对应的引脚,
通过编写代码即可通过按键控制LED灯的亮灭。
按键实际上会有抖动这个时候需要进行消抖操作,需要配置一个20ms从而到达稳定时间这个时间是不同的,需要实时调整。
控制灯:使用计算器来辅助。
可观察视频效果:
attach://77308.mp4
attach://77308.mp4
第七集、定时器操作
由于使用软件延时,会产生阻塞,即此时系统就会一直执行延时函数,而不去执行其他代码。
https://www.stcaimcu.com/forum.php?mod=image&aid=77310&size=300x300&key=9fd194f612c98e1d&nocache=yes&type=fixnone
对此,需要使用一个功能那就是定时器中断的功能,即用定时器来替换延时函数,从而其他时间,程序可以执行其他程序,其重点就是在于就是中断功能。
使用调试软件来定时。
将代码复制到main.cz中,即配置成功。
在中断服务函数中编写取反函数,由于需要看见效果,将时间修改为0.5S.
修改后:需要注意的的是EA=1,否则将不会进入中断。
实验现象:
attach://77316.mp4
定时器原理:定时器每一个寄存器都有作用,可以根据数据手册来进行修改,分别能控制时钟计数频率,是否外部计数,还有计数器寄存器,等。
可以通过控制TR0来控制是否来计数,从而是否来进入中断,其他的功能皆是通过控制标志位从而控制,此时程序不会一直等待而是可以继续进行按键操作,
需要注意的是在使用按键的时候注意控制的灯是否和定时器的灯重复,从而影响实验现象。
第八集打卡、定时器任务调度
定时器任务调度主要是通过定时器来进行不同时间的计数,从而在某一时刻,产生效果,一般有个时间基数,如定时器每1ms进入一次中断,即可以通过计数器count来累计,如果累积了300次则代表已经过了300ms了,
然后将count清零,则一直会产生每过300ms能操作某件事的能力。其他类似。
对于数组来说,如u8 buff={1,2,3,4,5}; buff=1 buff=2buff=5;需要注意的是数组索引从0开始到N-1结束 如5 ,则是4就结束了即buff,如果数组越界会出现错误。
如下图所示,可以通过数组存储对于的变量赋值即可,如视频所示: 由于有其他状态 所以灯的状态会互相干扰,反过来说明灯可以独立各自完成任务。
效果:
attach://77328.mp4
可以通过定时器消抖,从而减少系统的等待时间。
头文件创立,通过创建不同的头文件,可以让代码可读性高,并且方便移植,创建方式如下:
首先创建一个文件夹,这个文件夹的名字应该清晰明了。
随后在keil软件中点击分组,创建对应的文件夹,这个名字可以和之创建的文件夹名字不同,只是分类
找到之前创建的文件夹中的.C文件导入
如下:找到对应的.c文件双击即可
头文件地址要包含进来 即创建hardware的文件夹
手动添加包含头文件 #include "task.h"
在头文件中包含你要使用的变量和文件名 如下所示,在头文件引用即可
可以使用结构体,使变量名和任务创建更加方便。
实际使用方法:通过结构体再使用数组既可以将其每个任务的状态赋值.
这样通过任务来实现主程序的最大简化,再main.c中就只有头文件和少量的函数运行了。
因为我最近也在期末,所以刚好看到第八集,先备战考期末,如果试验箱申请到了,我将会更新试验箱系列,并且参考例程,来实现更多的功能。{:ciya:}
页:
[1]