学习Ai8051U心得与笔记
<p>学习Ai8051U心得与笔记</p><p>https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11902</p>
<p><img src="data/attachment/forum/202412/21/162135si2w3wsjj2ssbpso.png" alt="image.png" title="image.png" /></p>
<h1><strong>第一集</strong></h1>
<p><strong>越听越感兴趣,这价钱+这性能+官方这态度,感觉这型号可以掀起不少浪花,或许下一代产品要围绕这系列诞生,很是期待。暂时最感兴趣的点是视频播放的性能以及lcd的刷新表现。</strong></p>
<h1>第二集</h1>
<p>环境搭建,跟着做就好了,没什么特别好说的。有个疑问的是,下载频率按例程里来的话,当两个例程不同频率时,同时使用到一个工程里时频率问题怎么办?估计后面了解更多后就知道了。</p>
<p><img src="data/attachment/forum/202412/21/162713i6rbw788otl5qogr.png" alt="image.png" title="image.png" /></p>
<h1>第三集</h1>
<p>前面讲新建工程的方法,了解+按要求做,后面遇到特殊情况再回来理解选项即可。重点学习寄存器怎么配置,对应的代码怎么写。</p>
<ul>
<li>
<p>“技术手册-<code>13.2配置I/O</code>”+“技术手册-<code>2.13管脚图</code>”重点看。</p>
</li>
<li>
<p>注意,老单片机IO上电时默认准双向,新款的单片机则是默认高阻输入了。</p>
<p><img src="data/attachment/forum/202412/21/162932cd7lccsela63h33e.png" alt="image-20241220190034658.png" title="image-20241220190034658.png" /></p>
</li>
<li>
<p>ISP软件里的“封装脚位”和“<code>IO配置工具</code>”可参考用</p>
</li>
</ul>
<h1><strong>第四集</strong></h1>
<p><strong>不用每次(除第一次)按两个键下载的方法</strong></p>
<p><img src="data/attachment/forum/202412/21/163151au5uvb7pvv0suovo.png" alt="image-20241220192832287.png" title="image-20241220192832287.png" /></p>
<p>步骤:</p>
<ol>
<li>
<p><strong>官网下载</strong><a href="https://www.stcai.com/khs">USB库文件</a>,<a href="file:///E:/%5Cclass%5Ccode%5CSTC%5CAI8051U%5C%E8%A7%86%E9%A2%91%E9%85%8D%E5%A5%97%E8%B5%84%E6%96%99%5C4.%E7%AC%AC%E5%9B%9B%E9%9B%86-USB%E4%B8%8D%E5%81%9C%E7%94%B5%E4%B8%8B%E8%BD%BD%E9%85%8D%E5%A5%97%E7%A8%8B%E5%BA%8F%5C04.USB%E4%B8%8D%E5%81%9C%E7%94%B5%E4%B8%8B%E8%BD%BD%5C%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81">例程</a></p>
</li>
<li>
<p><strong>复制.lib文件和*usb.h文件</strong></p>
</li>
<li>
<p><strong>移植关键部分:</strong></p>
<ol>
<li><strong>添加头文件</strong></li>
<li><strong>USB初始化函数(lib+.h库实现)</strong></li>
<li><strong>命令参数</strong></li>
<li><strong>打开P_SW2寄存器和IE2寄存器(只打开一个位!)</strong></li>
</ol>
</li>
<li>
<p><strong>写寄存器的两种写法:</strong></p>
<ol>
<li><strong>十六进制直接写8位,或等来置1,与等来置0,赋值给寄存器符号(大名);</strong></li>
<li><strong>查具体位的名,赋值1或0.</strong></li>
</ol>
</li>
</ol>
<h1>第五集:</h1>
<ol>
<li>C语言 USB-CDC串口之printf函数的实现</li>
</ol>
<ul>
<li>
<p>stc32_stc8_usb.h文件的第6行去掉//</p>
</li>
<li>
<p>#define printfprintf_hid //#define替换名被替换名</p>
<p><img src="data/attachment/forum/202412/21/172350p6th56nl3n1vhvk9.png" alt="image-20241221140421728.png" title="image-20241221140421728.png" /></p>
</li>
<li>
<p><img src="data/attachment/forum/202412/21/172649s55xcw5p5q52bqge.png" alt="image-20241221153140153.png" title="image-20241221153140153.png" /></p>
</li>
<li>
<p><img src="data/attachment/forum/202412/21/172659h1t4n6t6hstrc660.png" alt="image-20241221153318722.png" title="image-20241221153318722.png" /></p>
</li>
</ul>
<ol start="2">
<li>
<p>数的进制:2进制、10进制、16进制</p>
<p><img src="data/attachment/forum/202412/21/172730j7gcv1cgliol0mv7.png" alt="image-20241221154357307.png" title="image-20241221154357307.png" /></p>
</li>
<li>
<p>数据的基本类型</p>
<ul>
<li>想要使用64位变量,需要在程序文件里面添加申明:#pragma float64</li>
<li><img src="data/attachment/forum/202412/21/172747gbnvrzf66fb6xy6z.png" alt="image-20241221154826447.png" title="image-20241221154826447.png" /></li>
</ul>
</li>
<li>
<p>C语言常用运算符</p>
<p><img src="data/attachment/forum/202412/21/172803lh4ysmhak15ky418.png" alt="image-20241221164606014.png" title="image-20241221164606014.png" /></p>
<p><img src="data/attachment/forum/202412/21/172812gzt2rubvecgi1ske.png" alt="image-20241221170831862.png" title="image-20241221170831862.png" /></p>
<p><img src="data/attachment/forum/202412/21/172846z2bgzbqtbg9zo6fb.png" alt="image-20241221171125146-1734772285603-2.png" title="image-20241221171125146-1734772285603-2.png" /></p>
<p><img src="data/attachment/forum/202412/21/172856t73bezo3ozsmi2y3.png" alt="image-20241221171642805.png" title="image-20241221171642805.png" /></p>
<p><img src="data/attachment/forum/202412/21/172902svm1gzp1krdkhkkq.png" alt="image-20241221171651887.png" title="image-20241221171651887.png" /></p>
</li>
</ol>
<h1>第六集</h1>
<p>GPIO-配置+按键消抖</p>
<p><img src="data/attachment/forum/202412/21/192658ma3chwuaq8ap3lha.png" alt="image-20241221173332208.png" title="image-20241221173332208.png" /></p>
<p><img src="https://www.stcaimcu.com/data/attachment/forum/202412/21/192743o5zmh5a6mhgbggn6.png" alt="image-20241221174515675.png" title="image-20241221174515675.png" /><img src="data/attachment/forum/202412/21/192743wnkkq09qenox1p1e.png" alt="image-20241221174522926.png" title="image-20241221174522926.png" /></p>
<p><img src="data/attachment/forum/202412/21/192743tkuk09t0w9kkfnuh.png" alt="image-20241221183557079.png" title="image-20241221183557079.png" /><img src="https://www.stcaimcu.com/data/attachment/forum/202412/21/192801vvhqnpwv5h5gqn95.png" alt="image-20241221190510081.png" title="image-20241221190510081.png" /><img src="https://www.stcaimcu.com/data/attachment/forum/202412/21/192801y4y0dy6hc9z9j0ok.png" alt="image-20241221190545775.png" title="image-20241221190545775.png" /><img src="https://www.stcaimcu.com/data/attachment/forum/202412/21/192801o0qy55ecnyyjnjq2.png" alt="image-20241221191420318.png" title="image-20241221191420318.png" /></p>
没想到此款芯片发展到这种高水平,兼容性和易用性还非常好。 <h1>第七集</h1>
<p>1.定时器的介绍</p>
<ul>
<li>
<p>MCU单核的,同一时间只能执行一个事情,没有特殊情况不能被打断。所以这里就要引入一个特殊的情况,定时器中断。</p>
</li>
<li>
<p>定时器作用:</p>
<p>(1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作</p>
<p>(2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)</p>
</li>
</ul>
<p>2.定时器的应用</p>
<p><img src="data/attachment/forum/202412/21/210511rrgjqgwr161wmzc2.png" alt="image-20241221195123995.png" title="image-20241221195123995.png" /></p>
<p><img src="data/attachment/forum/202412/21/210518s66g2hppdd2ng9gn.png" alt="image-20241221205742566.png" title="image-20241221205742566.png" /></p>
<p>/xfd(乱码)问题:《芯片手册-附录J》</p>
<p>3.函数的定义、声明、调用</p>
<p><img src="data/attachment/forum/202412/21/210539sntt0g3fthgf2gtn.png" alt="image-20241221210002529.png" title="image-20241221210002529.png" /></p>
<p><img alt="qiang" class="emoji" src="https://www.stcaimcu.com/static/image/smiley/default/qiang.gif" title="qiang" /></p>
<h1>第八课</h1>
<p>1.周期性任务介绍</p>
<p><img src="data/attachment/forum/202412/22/170556s22d7w0s7ad1ogv5.png" alt="image-20241221222432363.png" title="image-20241221222432363.png" /></p>
<p>任务2:数组点亮LED,实现流水灯</p>
<p>赋值数组+轮巡实现</p>
<p><img src="data/attachment/forum/202412/22/170603tdk9kgidrl2cl22m.png" alt="image-20241221231832169.png" title="image-20241221231832169.png" /></p>
<p>以上三个任务实现的原理其实就是利用定时器改变量,再通过判定变量的值按需要的任务周期来自制了时间片轮转。</p>
<p>2.文件的创建(.c和.h)</p>
<p><img src="data/attachment/forum/202412/22/170610cdy603zelq5g2jad.png" alt="image-20241221233257307.png" title="image-20241221233257307.png" /></p>
<p>3.结构体数组的周期性任务调度</p>
<p><img src="data/attachment/forum/202412/22/170616sa4jtmfq394l3mzf.png" alt="image-20241222161050313.png" title="image-20241222161050313.png" /></p>
<p><img src="data/attachment/forum/202412/22/170703fn7cac9ne9c7a87d.jpg" alt="e3e93240b0ea6f09a1a1b51678925e1.jpg" title="e3e93240b0ea6f09a1a1b51678925e1.jpg" /></p>
页:
[1]
2