Ai8051U学习之旅打卡心得
<table><thead>
<tr>
<th>之前在打卡在冲哥视频课的回复里了,现在重新开一个帖子记录一下</th>
</tr>
</thead>
</table>
<table>
<thead>
<tr>
<th>哪怕梦想让我们拼的遍体鳞伤,这一次我们也要勇往直前---www.STCAIMCU.com</th>
</tr>
</thead>
</table>
<table>
<thead>
<tr>
<th>好好学习,支持我们国产MCU产品</th>
</tr>
</thead>
</table>
<p>第一集序言心得</p>
<p>8051U强在哪里?</p>
<p>1.屏幕显示和视频播放(Flash编程器),因为优化了一些QSPI的一些Flash芯片读写的一个功能,所以说对一些大容量视频的播放他有了一些质的提升</p>
<p>2.IIS录放音(频率要改为32.864)</p>
<p>3.PWM DMA,之前的之前的pwm没办法更好的兼容DMA,现在可以了</p>
<p>4.可以实现频谱分析仪(上位机),因为它有了一些硬件的浮点乘除单元,他就可以更好的实现</p>
<p>5.手写计算器</p>
<p>6.QSPI,PWM移相,硬件乘除,单精度浮点,这些功能是AI8051强在这些功能</p>
<p>7.实例演示</p>
<p>屏幕显示屏可以实现各种界面的刷新而且帧率不低,包括一些汉字,英文,图片,旋转显示,屏幕用的是8080的一个并口<br />
<img src="data/attachment/forum/202412/10/093438ww5nxhnfnnnmmnht.png" alt="图片1.png" title="图片1.png" /></p>
<p>IIS录放音</p>
<p><img src="data/attachment/forum/202412/10/093437cv5entbmppselyvb.png" alt="图片2.png" title="图片2.png" /></p>
<p>PWM+DMA功能</p>
<p><img src="data/attachment/forum/202412/10/093437fi90aix4vb770f8f.png" alt="图片3.png" title="图片3.png" /></p>
<p>在一个点阵屏上实现数字显示,它可实现一千多颗灯进行显示,而且不会有任何干扰</p>
<p><img src="data/attachment/forum/202412/10/093437vdhzb2vpaffrfta5.png" alt="image.png" title="image.png" /></p>
<p>把图片存入Flash进行图片显示</p>
<p><img src="data/attachment/forum/202412/10/093438i11pr58fquuqun5l.png" alt="图片4.png" title="图片4.png" /></p>
<p>本节课主要是介绍8051U的强大之处可以实现多种功能并展示,8051U还支持32位指令集,并且有丰富的外设接口Ai8051U-LQFP48 比普通 M0/M3,比 32F103C8T6 强太多的地方:<br />
1,Ai8051U有TFPU@120MHz, 算力比他强, uS级硬件三角函数/浮点运算器;<br />
2,Ai8051U的抗干扰比他强;<br />
3, Ai8051U的内部复位是专业级的复位电路,彻底省外部复位;<br />
4, Ai8051U的内部时钟完全满足串口通信要求,4组串口;<br />
5,Ai8051U-LQFP48有 QSPI, i8080/M6800-TFT 接口,32F103C8T6没有;<br />
6, Ai8051U的PWM支持硬件移相@120MHz<br />
7,Ai8051U是 34K SRAM, DMA 支持 外设直接到外设,P2P<br />
8,Ai8051U是 自带硬件USB, 1个芯片就能直接USB连接电脑仿真/下载<br />
<img src="data/attachment/forum/202412/10/093437s6s4c44v6y0bv4yu.png" alt="图片5.png" title="图片5.png" /></p>
<p>第二集硬件工具介绍</p>
<p>本结课主要是介绍Ai8051U实验箱的功能</p>
<p>1.本实验箱有着丰富的扩展资源和外设资源,如TF卡座,示波器输入,耳机输出,录音,OLED(IIC和SPI),流水灯,数码管,TFT彩屏,红外接收发射,矩阵键盘,ADC键盘,USBTYPEA和C的接口,还有USB转双串口接口等丰富的外设功能</p>
<p>2.矩阵键盘和ADC键盘区别:矩阵是横向用了4个,纵向用了2个的引脚,可以控制八个,ADC键盘16个按键都是用一个引脚去控制</p>
<p>2.电源按键:按下断电<img src="data/attachment/forum/" alt="image.png" title="image.png" />,用于强制下载使用</p>
<p>3.软件介绍</p>
<pre><code class="language-html">1.安装keil2.下载ISP软件3.使用ISP添加头文件4.下载插件5.下载代码包和手册
</code></pre>
<p>4.阅读实验箱手册<img src="data/attachment/forum/" alt="image.png" title="image.png" /></p>
<p>5.下载程序1.按下P32(左下角第一颗),此时按OFF,松开OFF后松开P32就可以找到设备了</p>
<p>6.选择合适的时钟频率</p>
<p><img src="data/attachment/forum/202412/10/093501chfiiiil7uih9hbh.png" alt="image.png" title="image.png" /></p>
<p>第三集点亮一颗LED</p>
<p>1.新建工程</p>
<p><img src="data/attachment/forum/202412/10/093526jvjehvwhwnzlbcgh.png" alt="image.png" title="image.png" /></p>
<p>2.选项配置</p>
<p><img src="data/attachment/forum/202412/10/093526vonjypzfjbr6gru8.png" alt="image.png" title="image.png" /></p>
<p>3.生成HEX文件,不勾选则不能下载到开发板</p>
<p><img src="data/attachment/forum/202412/10/093526obdjjbjd0opov4jl.png" alt="image.png" title="image.png" /></p>
<p>4.添加头文件</p>
<p><img src="data/attachment/forum/202412/10/093526y9rsexpgnu1r24dj.png" alt="image.png" title="image.png" /></p>
<p>5.端口模式配置</p>
<p><img src="data/attachment/forum/202412/10/093527x3bhbh77sqzcdags.png" alt="image.png" title="image.png" /></p>
<p>也可以使用ISP软件自动配置</p>
<p><img src="data/attachment/forum/202412/10/093526x9v4kv4mxh7bav4h.png" alt="image.png" title="image.png" /></p>
<p>6.代码展示</p>
<p><img src="data/attachment/forum/202412/10/093527vzg5xzd035p9g9zd.png" alt="image.png" title="image.png" /></p>
<p>第四集USB不停电下载</p>
<p>本节课实现不停电自动下载</p>
<p>1.每次下载都需要手动按下断电按钮才能下载程序</p>
<ol start="2">
<li>在STC官网下载USB库文件<img src="data/attachment/forum/202412/10/093654q9p4zhprw0h85aja.png" alt="image.png" title="image.png" /></li>
<li>添加库文件为什么是lib文件的,因为它包含许多C文件,lib不能被打开,所以可以保证代码的可靠性和安全性</li>
<li></li>
<li><img src="data/attachment/forum/202412/10/093654hkedzkkgzdzukukn.png" alt="image.png" title="image.png" /></li>
<li>使能XFR<br />
<img src="data/attachment/forum/202412/10/093654d6zouumu8289d989.png" alt="image.png" title="image.png" /></li>
</ol>
<ul>
<li>USB初始化<br />
<img src="data/attachment/forum/202412/10/093654hgf8q3qfdffcfnff.png" alt="image.png" title="image.png" /></li>
<li>7.屏蔽警告57,不然无法编译<br />
<img src="data/attachment/forum/202412/10/093654rua08xlxl9xa5k5l.png" alt="image.png" title="image.png" /></li>
<li>8.程序代码<br />
<img src="data/attachment/forum/202412/10/093654u84gz4hv1j5ei79e.png" alt="image.png" title="image.png" /></li>
<li>【USB 下载方法 一,P3.2 按键,再结合停电上电 进自带USB直接下载】<br />
1、按下板子上的 P3.2/INT0 按键,就是 P3.2 接地<br />
2、给目标芯片重新上电,不管之前是否已通电。<br />
---电子开关是按下停电后, 再松开就是上电<br />
等待电脑端 ISP 下载软件中自动识别出“(HID1) USB Writer”后,<br />
就与 P3.2 状态无关了,这时可以松开 P3.2 按键<br />
(P3.2 在用户程序区可做其它任意用途)<br />
---传统的机械自锁紧开关是按上来停电,按下去是上电<br />
3,点击电脑端下载软件中的【下载/编程】按钮<br />
(注意:USB 下载与串口下载的操作顺序不同)</li>
</ul>
<p>下载进行中,几秒钟后,提示下载成功!<br />
【USB 下载方法 二,复位管脚低电平复位,** 进自带USB直接下载**】<br />
USB 连接好并已上电的情况下,外部按键复位也可进入 USB 下载模式,<br />
注意:P4.7-nRST 出厂时默认是 P4.7-I/0 功能,<br />
要改为复位功能,需 ISP 烧录时取消 设置复位脚用作 I/0口,停电一次再上电才生效,<br />
程序区中用户程序也可改为复位脚或 I/0,这个立即生效。<br />
1,按下 P4.7-nRST 外接的低电平复位按键复位 MCU,松开复位键,<br />
MCU从系统程序区启动,判断是否要下载用户程序,<br />
等待电脑端 ISP 下载软件中自动识别出“(HID1)USB writer”后<br />
2,点击电脑端下载软件中的【下载/编程】按钮下载进行中,</p>
<p>几秒钟后,提示下载成功!<br />
【USB 下载方法 三,从用户程序区软复位到系统区下载】<br />
USB 连接好并已上电的情况下,<br />
从用户程序区软复位到系统区也可进入 USB 下载模式<br />
1,在用户程序区运行软复位到系统区的程序,<br />
就是IAP CONTR 寄存器送 60H。<br />
等待电脑端 ISP 下载软件中自动识别出“(HID1) USB Writer”后<br />
2,点击电脑端下载软件中的【下载/编程】按钮</p>
<p>下载进行中,几秒钟后,提示下载成功!</p>
<p>第五集C语言基础</p>
<p>本节课主要有以下四个重点</p>
<p>1.C语言USB-CDC串口之printf函数的实现</p>
<p>2.数的进制,2进制,10进制,16进制</p>
<p>3.数据的基本类型</p>
<p>4.C语言的常用运算符</p>
<p>1.算术运算符<br />
加(+)减(-)乘(*) 除(/)<br />
模(余)运算符(%): 不允许出现浮点型,余数正负取决于被除数正负<br />
自增(++i,i++) 自减(--i,i--)<br />
2.位运算符<br />
右移(>>) 左移(<<)<br />
按位与(&)<br />
按位或(|)<br />
按位与或(^)<br />
取反(~)<br />
3.赋值运算符<br />
+=加赋值<br />
-=减赋值<br />
*=乘赋值<br />
/=除赋值<br />
%=求余赋值<br />
&=按位与赋值<br />
|=按位或赋值<br />
^=按位与或赋值<br />
<<=左移位赋值</p>
<p>首先第一个printf函数可以帮助我们快速实现打印出变量的类型等,可以帮助我们快速开发</p>
<p>使用方法<br />
1.打开USB库中的PRINTF_HID宏定义<br />
2.理解PRINTF的原型的定义<br />
参数FMT是格式控制字符串<br />
\r\n的作用是换行<br />
转换说明,不直接输出,用于控制printf中参数的转换和打印,每个转换说明都有由一个%开始,以转换说明符结束,从而说明输出数据的宽度,精度,类型等<br />
printf("AI8051U入门%s\r\n",你好);%s是打印字符串的意思,后面你好是参数</p>
<p><img src="data/attachment/forum/202412/10/093711qm71nc7mhd4ivbi4.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/093711vixibffivglingvi.png" alt="image.png" title="image.png" /></p>
<p>比如pintf("今天是%d年%d月%d日",2024,12,8);就可以显示日期</p>
<p><img src="data/attachment/forum/202412/10/093711ea3pxax232xg3wdm.png" alt="image.png" title="image.png" /></p>
<p>这是各种参数对应的类型</p>
<p><img src="data/attachment/forum/202412/10/093711w7749mb76a5b5ch2.png" alt="image.png" title="image.png" /></p>
<p>2.数据的基本类型</p>
<p>想要使用64位变量,需在程序文件里添加申明#program float64</p>
<p>unsigned是无符号整型数,就是没有负数</p>
<p>signed是有符号整型数,有负数</p>
<p><img src="data/attachment/forum/202412/10/093711ht9f9z8tppn5u329.png" alt="image.png" title="image.png" /></p>
<p>4.C语言的常用运算符</p>
<p><img src="data/attachment/forum/202412/10/093711q66a26wwwz0whk9z.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/093712pri5nrr0csf5x0c8.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/093713lmwpjyyjfw2rfprp.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/093712ymnmdbmn21nnm214.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/093712fw3i3lulyjcydcqi.png" alt="image.png" title="image.png" /></p>
<table>
<thead>
<tr>
<th><br/>第六集IO输入输出<br/><img src="data/attachment/forum/202412/10/093749vrqiszp3izscniv3.png" alt="image.png" title="image.png" /><br/>要注意的是芯片和IO的电平是有标准要求的,VDD不能超过5.5V,IO电压不能大于VDD0.3v以上IO端口配置,一般情况用准双向口就可以<br/><br/><img src="data/attachment/forum/202412/10/093751r92j1ck2iy539nci.png" alt="image.png" title="image.png" /><br/><br/>然后是按键,因为设置的是准双向口默认是高电平,按钮按下为低电平<br/><img src="data/attachment/forum/202412/10/093749shpd4yyycdpdxycn.png" alt="image.png" title="image.png" /><br/>注意要开启控制LED的三极管,否则灯不会亮<br/><img src="data/attachment/forum/202412/10/093749w0ikicbdfbmwu0i7.png" alt="image.png" title="image.png" /><br/>可以利用while死循环来松手检测<br/><img src="data/attachment/forum/202412/10/093749xibdyzosijii5otb.png" alt="image.png" title="image.png" /><br/><img src="data/attachment/forum/202412/10/093749hi4t988sjz9po448.png" alt="image.png" title="image.png" /><br/>使用Delay需要添加头文件并设置这三个<br/><img src="data/attachment/forum/202412/10/093749rlkqk000klj58qgo.png" alt="image.png" title="image.png" /><br/></th>
</tr>
</thead>
</table>
<p>第七集定时器中断</p>
<p><img src="data/attachment/forum/202412/10/094426ygjdz1j1wjgwxm13.png" alt="image.png" title="image.png" /></p>
<p>由于Delay属于阻塞延时,执行期间CPU不能执行其他事,直到计时结束,这样会大大浪费CPU资源,我们可以利用定时器中断来节省CPU资源</p>
<p>定时器作用:<br />
(1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作<br />
(2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)</p>
<p><img src="data/attachment/forum/202412/10/094425ld2e4jjjgzt4tjmz.png" alt="image.png" title="image.png" /></p>
<p>这样使用按键和LED三秒状态取反就不冲突了,就可以同时执行,使用定时器前需要初始化</p>
<p><img src="data/attachment/forum/202412/10/094426t6i8avtbghv3krb6.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/10/094426orudxkh8rktdxhun.png" alt="image.png" title="image.png" /><br />
<img src="data/attachment/forum/202412/10/094426u6dt3434wnzw4yo4.png" alt="image.png" title="image.png" /></p>
<p>关于串口打印乱码的问题</p>
<p><img src="data/attachment/forum/202412/10/094426pgn7x0rjhk38f3f3.png" alt="image.png" title="image.png" /></p>
<p>Keil软件编译时,字符串中不能含有带 OxFD 编码的汉字,否则会出现乱码。<br />
解决方法:在带有 Oxfd 编码的汉字后增加一个 Oxfd 即可。例如:printf("数学");printf("数\xfd 学");<br />
包含Oxfd编码的汉字如下:<br />
褒饼昌除待谍洱俘庚过糊积箭烬君魁例笼慢谬凝琵讫驱三升数她听妄锡淆旋妖引育札正铸 佚冽邶埤荦蔟摭啐帻猃恺泯潺妪纨琮椠辇挲臊忑睚铨稞瘕颀螨筋酏觚鳊鼾</p>
<p>另外, Keil项目路径名的字符中也不能含有带0xFD编码的汉字,否则Keil软件会无法正确编译此项目</p>
<p>定时器基本框架介绍</p>
<p><img src="data/attachment/forum/202412/10/094426j2fwef6ik6fwgen1.png" alt="image.png" title="image.png" /></p>
<p>定时时间计算</p>
<p><img src="data/attachment/forum/202412/10/094427mhm49nn7hbm3qqzr.png" alt="image.png" title="image.png" /></p>
<p>早上好</p>
<p>大家好,上周收到试验箱了,这几天比较忙所以忘记发了,以后会努力学习的,不能浪费这么好的学习资源<br />
<img src="data/attachment/forum/202412/17/200631co6008o1r3r18000.jpg" alt="82d2a68edf68e5c966acf1260f8804f.jpg" title="82d2a68edf68e5c966acf1260f8804f.jpg" /></p>
<p><img src="data/attachment/forum/202412/17/200633cxhmlpm0lgflmjef.jpg" alt="972887b81c4409e1cf822e93775beda.jpg" title="972887b81c4409e1cf822e93775beda.jpg" /></p>
页:
[1]