<p><img src="data/attachment/forum/202412/09/213608glotsoou3ozssoxx.png" alt="image.png" title="image.png" /></p>
<p>安装头文件</p>
<p><img src="data/attachment/forum/202412/09/213738twwngcur897wtb27.png" alt="image.png" title="image.png" /></p>
<p>新建工程,选择AI8051</p>
<p><img src="data/attachment/forum/202412/09/214420ktttzrdtekpp7k9t.png" alt="image.png" title="image.png" /></p>
<p>新建并添加main.c文件</p>
<p><img src="data/attachment/forum/202412/09/214323rscsn2stwvxvvjz9.png" alt="image.png" title="image.png" /></p>
<p>勾选设置模式</p>
<p><img src="data/attachment/forum/202412/09/214444gxx6sxxxxtdl2e0t.png" alt="image.png" title="image.png" /></p>
<p>生成HEX文件</p>
<p><img src="data/attachment/forum/202412/09/214830qexenkrw6qpgjw4n.png" alt="image.png" title="image.png" /></p>
<p>添加头文件</p>
<p><img src="data/attachment/forum/202412/09/215633ctt04rldrkry8qzc.png" alt="image.png" title="image.png" /></p>
<p>更改配置</p>
<p><img src="data/attachment/forum/202412/09/215651lp4422gs44p4plsg.png" alt="image.png" title="image.png" /></p>
<p>编写代码</p>
<p><img src="data/attachment/forum/202412/09/215709ufvb3qyoleijelqq.png" alt="image.png" title="image.png" /></p>
<p>编译完成。</p>
<p><img src="data/attachment/forum/202412/09/220506hbzs8i1ak2c91ae4.png" alt="image.png" title="image.png" /></p>
<p>结合手册与程序包就能完成后续实验。</p>
<p><img src="data/attachment/forum/202412/09/220627hm5oj4j8j8jmd48m.png" alt="image.png" title="image.png" /></p>
<p>上电默认高阻输入(新单片机,老的是这个准双向口)</p>
<p>这里我们可以通过<br />
<img src="data/attachment/forum/202412/09/220839p2p1zsqayzl9p11q.png" alt="image.png" title="image.png" /></p>
<p>进行设置</p>
<p><img src="data/attachment/forum/202412/09/221122szr7h2nnt7f4qg2t.png" alt="image.png" title="image.png" /></p>
<p>完成电灯实验</p>
<p>第四集:</p>
<p>第一部分:USB不停电下载</p>
<p><img src="data/attachment/forum/202412/10/124703wl5ejdvqw01lnw5p.png" alt="image.png" title="image.png" /></p>
<p>首先来讲传统的程序下载方式叫冷启动,需要我们将单片机断电后重上电才能实现新程序的下载,这一点来说的话确实会比较麻烦,但是以前呢由于个人经历这块就一直是这么用的,前面听到这个STC这个不停电下载也是比较心动,但是手里没有合适的物料,所以这一块也是没有尝试过。那么希望得到这个STC这个AI试验箱好好用以用这个不停电下载。</p>
<p>结合视频指导不难发现:</p>
<p><img src="data/attachment/forum/202412/10/125202poxnsnuuau1fnwf8.png" alt="image.png" title="image.png" /></p>
<p>如果试验箱在手的话,连接到电脑上我这边也应该和教程显示一致,首先是按照教程将这个USB这个代码下载进入我们的开发板,后面我们只需要编译好我们想要的程序直接就能进行烧录,这比以往的方式便捷便捷太多太多。</p>
<p>当然要使用上面的操作需要我们配合相应的库文件</p>
<p><img src="data/attachment/forum/202412/10/125731otvx5ccvrm6bavkn.png" alt="image.png" title="image.png" /></p>
<p>进入官网,找到库函数</p>
<p><img src="data/attachment/forum/202412/10/125820z84xq3oqdmm3x68m.png" alt="image.png" title="image.png" /></p>
<p>点击下载,并将其解压可以看到</p>
<p><img src="data/attachment/forum/202412/10/130035vwzadx62h5xy5wtq.png" alt="image.png" title="image.png" /></p>
<p>可以发现里面有CDC和这个HID两种模板。这里是推荐了CDC模板</p>
<p><img src="data/attachment/forum/202412/10/130245wpeu5s4f4pkxztug.png" alt="image.png" title="image.png" /></p>
<p>然后复制工程对其进行移植</p>
<p><img src="data/attachment/forum/202412/10/131136jssp7upcuco5646u.png" alt="image.png" title="image.png" /></p>
<p>添加到工程</p>
<p><img src="data/attachment/forum/202412/10/131155kmnhghdm7rxnzigy.png" alt="image.png" title="image.png" /></p>
<p>头文件申明</p>
<p><img src="data/attachment/forum/202412/10/131312gqqc9309wiznd0ds.png" alt="image.png" title="image.png" /></p>
<p>全局查找可以发现,这个USB的库是被封装在库里面的我们是不能修改的。这个也保证了我们代码的安全性。对以后的移植也是有保证的。</p>
<p><img src="data/attachment/forum/202412/10/131615mhqfbfmt57hhahzh.png" alt="image.png" title="image.png" /></p>
<p>将这个重要的东西放在这里。(直接复制)</p>
<p><img src="data/attachment/forum/202412/10/133819lyjh9161s917xkh6.png" alt="image.png" title="image.png" /></p>
<p>当然我们也可以自由的对这个字段进行更改,变成我们想要的字段</p>
<p><img src="data/attachment/forum/202412/10/133934mc43pxcjbfcjlo14.png" alt="image.png" title="image.png" /></p>
<p>在代码移植的时候上述内容就是关键。注意这个官方给的USB文件、然后定义东西不能丢,最后是这个我们USB这个下载用哪一种方式,是采用轮询的方式还是中断的方式,在这里冲哥讲轮询的方式是比较靠谱的,但是我前面有做项目就是他需要干的事情很多,事情多了之后就会非常影响效率,响应的速度,切换的快慢,所以个人感觉似乎中断里面会更好一点(个人感觉,实际情况可能要等以后拿到板子后加上层级菜单后看反应效果)</p>
<p><img src="data/attachment/forum/202412/10/134400l4mzrtm5r5e4h0s0.png" alt="image.png" title="image.png" /></p>
<p>我们单片机很多这个拓展的一些寄存器需要访问,那我们就需要将上面这个切换引脚进行设置。</p>
<p><img src="data/attachment/forum/202412/10/134634dtxmuf4zy4jj2znu.png" alt="image.png" title="image.png" /></p>
<p>手册中可以查看USB中断结构,参考定时器可以理解。</p>
<p><img src="data/attachment/forum/202412/10/134801eikwfdvhwwiggigw.png" alt="image.png" title="image.png" /></p>
<p>对于警告57的类型,我们可以通过设置进行屏蔽,因为这一类的问题是因为我们封装的函数没有被调用所产生的。</p>
<p>是不是我就快要可以得到箱子了</p>
<p>第五集</p>
<p>组成部分:</p>
<p>1.利用串口实现printf函数</p>
<p>2.数的进制</p>
<p>3.数据基本类型</p>
<p>4.c语言常用运算符</p>
<p>首先是第一点:</p>
<p>在以往的单片机中常用的调试方式,;利用CH340将串口转USB利用上位机串口数据接收软件对单片机运行情况进行检测,对程序中所要完成的任务进行跟踪,所以这个手段对于设备的调试是非常重要的手段之一。以往的开发部分是自己根据经验封装编写一个printf函数、也有利用库函数调用。今天我们看到了另一种方式:USB库,通过对宏定义的注释,我们就能够将其进行调用。</p>
<p><img src="data/attachment/forum/202412/25/091649vj2128o59nnc2n1l.png" alt="image.png" title="image.png" /></p>
<p>实际上以往的方式也就是实现printf函数的一个重定向。那这里也是对printf函数原型进行讲解</p>
<p><img src="data/attachment/forum/202412/25/133805zevy1ebypw7bre08.png" alt="image.png" title="image.png" /></p>
<p>他的函数原型,其实在linux系统上也能进行查看,通过指令查看原型。</p>
<p>之后对上节课USB使用不成功可以去查看哪些地方没做到位。</p>
<p><img src="data/attachment/forum/202412/26/125127g3mtu3h94wd4hqmu.png" alt="image.png" title="image.png" />这里的%s就是字符串的意思。</p>
<p><img src="data/attachment/forum/202412/26/125358vyc4cq4zyjxw547w.png" alt="image.png" title="image.png" />这个虽然叫串口,但实际上是我们的这个USB在通信,所以波特率能够任意更改。</p>
<p><img src="data/attachment/forum/202412/26/125640q9zm0u5onipgsnmp.png" alt="image.png" title="image.png" />这里将常用的格式字符进行讲解,并配有示例说明</p>
<p><img src="data/attachment/forum/202412/26/125750mtjgphic2ktkkfdx.png" alt="image.png" title="image.png" /></p>
<p>这里讲解完毕后,将这个文本模式和HEX模式进行讲解。</p>
<p>第二点:进制相关</p>
<p><img src="data/attachment/forum/202412/26/130033lakwu27ww0b9w7ww.png" alt="image.png" title="image.png" /></p>
<p>进制转换可以通过计算器自带的计算机进行计算。</p>
<p>变量类型:(我们最大可用到64位,但是需要添加一个小东西 定义一下)</p>
<p><img src="data/attachment/forum/202412/26/130216iqq6cqidxkaysxo9.png" alt="image.png" title="image.png" /></p>
<p>第三点:C语言常用运算符</p>
<p><img src="data/attachment/forum/202412/26/130405twww1ax11po1zgo1.png" alt="image.png" title="image.png" /></p>
<p>注意:<br />
<img src="data/attachment/forum/202412/26/130453abjxjjflqrf6djbk.png" alt="image.png" title="image.png" /></p>
<p>/是取整数部分%是取余数部分</p>
<p><img src="data/attachment/forum/202412/26/130831v97i0fnb8jxsm7s7.png" alt="image.png" title="image.png" />示例讲解,乘法可能会超过本身的范围,这里就用了强制转化为16位变量。</p>
<p><img src="data/attachment/forum/202412/26/130953jf69n9jvim66nsvr.png" alt="image.png" title="image.png" /></p>
<p>关系运算符,判断相等。不等大于小于等</p>
<p><img src="data/attachment/forum/202412/26/131133atqc5cczjcy50u04.png" alt="image.png" title="image.png" /></p>
<p>逻辑运算符号</p>
<p><img src="data/attachment/forum/202412/26/131312qjbv85ll6q8y5l6i.png" alt="image.png" title="image.png" /></p>
<p>赋值运算符号</p>
<p><img src="data/attachment/forum/202412/26/131402km19nsmsfup77197.png" alt="image.png" title="image.png" /></p>
<p>位运算符号</p>
<p>最后是对本节课内容的回顾,讲解这个溢出的概念。对逻辑符号进行再次回顾。</p>
<p>第六集:I/O口输入输出</p>
<p>什么是GPIO:就是我们引脚的逻辑1或者0.</p>
<p><img src="data/attachment/forum/202412/26/132256ttzsr6t6sh5s9656.png" alt="image.png" title="image.png" /></p>
<p>注意看这个对地电压,这就是标准,不要超过我们的表中数据给出的电压,超过这个值很容易弄坏板子。</p>
<p>I/O输出模式分为4种</p>
<p>1.准双向口/弱上拉(老一代的开发板上电默认状态)电流是uA级别</p>
<p><img src="data/attachment/forum/202412/27/135621gvkod3jwex6hxfgf.png" alt="image.png" title="image.png" /></p>
<p>2.推挽输出这个驱动电流能到20mA</p>
<p><img src="data/attachment/forum/202412/27/135730zt0i5mhw1vi8zjhv.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/27/135741ws8wp2zjbjjbm2ox.png" alt="image.png" title="image.png" /></p>
<p>3.高阻输入(新板子默认上电状态)</p>
<p><img src="data/attachment/forum/202412/27/135901emsi7vmx73f1ivvc.png" alt="image.png" title="image.png" /></p>
<p>4.开漏模式</p>
<p><img src="data/attachment/forum/202412/27/140044p601msl4dgdzg91t.png" alt="image.png" title="image.png" /></p>
<p>课件中有一个表格就说明了很多东西,在我们配置时千万注意。</p>
<p><img src="data/attachment/forum/202412/27/140151l6e6lkj6ernpp966.png" alt="image.png" title="image.png" /></p>
<p>接下来通过输入按钮检测这样一个示例来说明。同时也是结合上节课的部分逻辑判断符进行教学。</p>
<p>因为手里没有这个AI这个试验箱,那我就用8H的一块板子实验。</p>
<p><img src="data/attachment/forum/202412/27/140500qxdwlmwrndm6eml1.png" alt="image.png" title="image.png" /></p>
<p>同时我这里使用了触摸按键对其进行控制</p>
<p><img src="data/attachment/forum/202412/27/140541zi4dnp1arp6v21n1.png" alt="image.png" title="image.png" /></p>
<p>上面就是目前项目适用的部分代码,加入了消除抖动的东西儿。因为涉及任务毕竟较多,所以很多地方尽量不使用这个Delay延时,这样对其余代码运行的干扰也会减少很多。</p>
<p>第七集 定时器中断</p>
<p>我们都清楚地知道,程序是一行一行往下顺序执行(在没有中断介入的情况下),那为了满足我们各种各样的需求,也同样为了让我们CPU更加合理的运用,那引入中断将其按照我们预设情况去执行相应代码这个就是非常有必要的。这样也是比较符合我们预期的。</p>
<p>中断的存在,就像我们的Switch函数一样,根据我们不同的条件她给我们干不同的活,也不会让他一直等我们,而是根据预设情况去处理和反应,就像是一个“人”能够帮我们处理各种情况。这样也就有机会实现和外围设备进行交互。</p>
<p>过往很多时候这个定时器配置需要使用计算机进行计算,但是目前好在STC推出了自动配置工具我们只需要更具需求进行配置就能够满足需求</p>
<p><img src="data/attachment/forum/202412/27/141958ojbgpp4cotwppeoe.png" alt="image.png" title="image.png" /></p>
<p>合理配置后就能得到我们需要的定时器,记住勾选定时器中断,我们就可以通过中断去干活。</p>
<p>其实这里的话稍微需要注意的就是我们选择的定时器模式,不同模式有一定的差异,这个需要更具自身情况进行选择</p>
<p><img src="data/attachment/forum/202412/27/142211nvx44z34kpz5xe1e.png" alt="image.png" title="image.png" /></p>
<p>同样的我们手册对其也有讲解,如何配置寄存器:</p>
<p><img src="data/attachment/forum/202412/27/142358o8cr7s0riesgse31.png" alt="image.png" title="image.png" /></p>
<p>再接着讲解我们函数基础知识讲解:</p>
<p><img src="data/attachment/forum/202412/27/142603wy3rwy8dmyl66bfb.png" alt="image.png" title="image.png" /></p>
<p>介绍函数名,变量等一些需要注意的事项。完毕</p>
<p>已经收到咯哟,哈哈哈很漂亮的哟</p>
<p>真奇怪,用AHT21的时候,用开漏输出还不能采集到数据,非要用推挽输出才可以</p>
<p>不是AHT21,是CJHT21,板子是不是这个AI8051u这个板子哈。</p>
页:
1
[2]