lloovvg 发表于 2024-12-11 13:25:47

第七集定时器中断

<p><img src="data/attachment/forum/202412/11/132429lz6ardt5tua2tztg.png" alt="image.png" /></p>
<p>由于Delay属于阻塞延时,执行期间CPU不能执行其他事,直到计时结束,这样会大大浪费CPU资源,我们可以利用定时器中断来节省CPU资源</p>
<p>定时器作用:<br />
(1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作<br />
(2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)</p>
<p><img src="data/attachment/forum/202412/11/132448ieaizt6n9nainxij.png" alt="image.png" /></p>
<p>这样使用按键和LED三秒状态取反就不冲突了,就可以同时执行,使用定时器前需要初始化</p>
<p><img src="data/attachment/forum/202412/11/132458tspskbohgblwe84m.png" alt="image.png" /></p>
<p><img src="data/attachment/forum/202412/11/132504w7l0aonjjn1lznj7.png" alt="image.png" /></p>
<p><img src="data/attachment/forum/202412/11/132510jzkq4bk0tj5caf45.png" alt="image.png" /></p>
<p>关于串口打印乱码的问题</p>
<p><img src="data/attachment/forum/202412/11/132520gwal1zwklylyycig.png" alt="image.png" /></p>
<p>Keil软件编译时,字符串中不能含有带 OxFD 编码的汉字,否则会出现乱码。<br />
解决方法:在带有 Oxfd 编码的汉字后增加一个 Oxfd 即可。例如:printf(&quot;数学&quot;);printf(&quot;数\xfd 学&quot;);<br />
包含Oxfd编码的汉字如下:<br />
褒饼昌除待谍洱俘庚过糊积箭烬君魁例笼慢谬凝琵讫驱三升数她听妄锡淆旋妖引育札正铸 佚冽邶埤荦蔟摭啐帻猃恺泯潺妪纨琮椠辇挲臊忑睚铨稞瘕颀螨筋酏觚鳊鼾</p>
<p>另外, Keil项目路径名的字符中也不能含有带0xFD编码的汉字,否则Keil软件会无法正确编译此项目</p>
<p>定时器基本框架介绍</p>
<p><img src="data/attachment/forum/202412/11/132529hg0apenzmo0vnjpl.png" alt="image.png" /></p>
<p>定时时间计算</p>
<p><img src="data/attachment/forum/202412/11/132540iyaja4uu2l4b97m3.png" alt="image.png" /></p>
页: [1]
查看完整版本: 第七集定时器中断