[ZLG-MCU] 半夜**叫,长工们起床~~~~~~~~~~~~~~

[复制链接]
8611|10
 楼主| hotpower 发表于 2008-1-26 04:20 | 显示全部楼层 |阅读模式
LM菜鸟之&quot;零耗时键盘&quot;在LM上的基本实现C++裸奔程序<br /><br />本程序主要实验目的:<br /><br />1.时钟节拍中断<br />&nbsp;&nbsp;主要体验Cortex-M3的SysTick及其中断.<br />2.&quot;零耗时键盘&quot;的基本建立<br />&nbsp;&nbsp;KEY1~KEY4.&nbsp;只建立了放键,短压和长压3个事件。<br />&nbsp;&nbsp;可像钢琴一样乱弹看LED3~LED6的变化及&quot;并行任务&quot;的实现,<br />&nbsp;&nbsp;长压键蜂鸣器发声直到放键为止。<br />&nbsp;&nbsp;这里只涉及了最基本的应用,回调钩子等技术未在本例中使用.<br />&nbsp;&nbsp;所以它还不能称之为&quot;基于零耗时键盘的OS&quot;,不过有人明白如何实现~~~<br />3.复位键做&quot;键盘&quot;<br />&nbsp;&nbsp;不断电每按一次复位键LED1~LED2将交替亮灭。<br />4.再现C++类成员函数指针及在键盘命令表上的典型应用.<br /><br />有人应该明白为什么键盘不用外部中断,为什么键盘要&quot;扫而不描&quot;的道理。<br /><br />菜农&nbsp;HotPower@126.com&nbsp;&nbsp;2008.1.25&nbsp;2:48&nbsp;于雁塔村菜地<br /><br />LM菜鸟&quot;驳中断不能喂狗&quot;的&quot;经典谬论&quot;之C++演示程序<br /><br /><br /><br /><br />本例程主要在&quot;零耗时键盘&quot;裸奔程序的基础上新增加4个内容<br /><br />1.增加了串口收发例程。(未按菜农之思路)<br /><br />2.增加了休眠WAKE键唤醒功能.<br />&nbsp;&nbsp;注意相关的跳线.&nbsp;先按Key1再长压Key4--&gt自毁~~~必须按WAKE键唤醒。<br /><br />3.可先按Key2再Key1交替禁止或允许喂狗切换。<br />&nbsp;&nbsp;注意不喂狗时,喂狗超时将使系统复位,LED1~LED2将交替亮灭<br /><br />4.可先按Key3再Key4切换中断喂狗或主循环喂狗方式.<br />&nbsp;&nbsp;本例默认中断喂狗方式,当先按Key3再Key4切换到主循环喂狗时。<br />&nbsp;&nbsp;为论证故意关掉了总中断!!!蜂鸣器长叫~~~<br />&nbsp;&nbsp;主程序中的主循环&quot;正常工作&quot;,由于只能在中断中关闭蜂鸣器。<br />&nbsp;&nbsp;所以唯一的办法就是按复位键~~~按晚复位键耳朵吵坏了别怪俺~~~<br /><br />菜农&nbsp;HotPower@126.com&nbsp;&nbsp;2008.1.26&nbsp;4:18&nbsp;于雁塔村菜地<br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20081/200812643337628.rar'>https://bbs.21ic.com/upfiles/img/20081/200812643337628.rar</a>
JOHN_light 发表于 2008-1-26 08:24 | 显示全部楼层

半夜**叫?

  
phoenixmy 发表于 2008-1-26 09:57 | 显示全部楼层

半夜**叫,长工们起床~~~~~~~~~~~~~~

<br /><br />赶紧过来犁地先
sz_kd 发表于 2008-1-26 09:59 | 显示全部楼层

呵呵,估计能熬夜的不多

  
HWM 发表于 2008-1-26 10:02 | 显示全部楼层

想怎么喂就怎么喂,就别把狗喂饿或堪了就行

  
 楼主| hotpower 发表于 2008-1-26 10:20 | 显示全部楼层

按晚复位键耳朵吵坏了别怪俺~~~主程序喂狗俺关中断你就自

  
 楼主| hotpower 发表于 2008-1-26 14:14 | 显示全部楼层

对本例程的操作说明和程序局部点评

将程序通过LM-LINK写入到LM3S8962开发板中.<br /><br />由于本程序有复位和关节拍中断(本例关总中断)及休眠部分,故要脱离IAR系统.<br /><br />即复位即可.<br /><br />此时LED1,LED2灭,即首次上电开机.(System.RamTest&nbsp;!=&nbsp;0x55aa;)<br /><br />此后每次不断电的复位(手动或看门狗)System.RamTest都不会变,即内存没被毁.0x55aa常用于此作为**标志,用于对复位后系统的&quot;连续运行&quot;提供保证.<br /><br />注意它没用硬件的掉电复位等标志.如果加上这些标志即可再细分.<br /><br />再一个重要变量是System.Count.它初始为0,每次复位都累加1.可作为开机计数器或用户使用次数.它可以作些配合加密和搞些破坏活动,如用IAP/ICP摧毁FLASH~~~<br /><br />本例中它作为LED1,LED2的交替亮灭的标志,也变相地说明了0x55aa的妙用.<br /><br />1.先按Key2不放再Key1交替禁止或允许喂狗切换<br />这主要是测试看门狗能否正常作用.禁止喂狗后,由于看门狗计数器超时,将不停地复位,导致LED1,LED2的交替亮灭.<br /><br />本例是用&quot;零耗时键盘&quot;实现组合键功能的,实现方法很简单:<br />在Key1单击程序中测试Key2的压键时间(次数)!!!<br /><br />这样就大大简化了键盘程序的扫描和编码过程,达到了&quot;不变应万变&quot;的思路~~~<br />任何复杂的键盘操作都会变成&quot;白菜一棵&quot;~~~<br /><br />2.先按Key3不放再Key4切换中断喂狗或主循环喂狗方式<br />这就是菜农&quot;中断喂狗论&quot;的精华所在~~~<br />中断定时喂狗的好处我已在网上论述N编...它喂狗时间均匀,实际实现了&quot;单处喂狗&quot;的理想...<br /><br />注意有几个关键的标志,它们形成互锁关系,只有整个程序都正常(PC走在关键点上)才喂硬件狗!!!<br /><br />实际上可在主循环中再反跟踪节拍中断标志来判断中断是否被关断或定时器等模块被非正常关断来恢复这些错误~~~<br /><br />最近论坛里也热抄了硬件抗干扰和软件抗干扰(有人说应该叫容错...).<br /><br />说软件抗干扰是&quot;自慰&quot;,俺无语...也不想参与论战...<br /><br />模块设置的定时是有很大的必要的...<br /><br />这些模块可能包括PWM,UART,ADC,I2C,SPI....<br /><br />先说到这里,帖子长了人要迷糊的~~~<br /><br />
平常人 发表于 2008-1-26 14:18 | 显示全部楼层

看样子大叔家的网管被雪封在山里了,否则你能这么自在?

也好,这样我们才能有幸多听一些大叔的教诲,哈哈。。。。。
machunshui 发表于 2008-1-26 17:07 | 显示全部楼层

狗窝里喂,狗窝外喂,别把狗饿着就行了

狗窝里喂,狗窝外喂,别把狗饿着就行了
 楼主| hotpower 发表于 2008-1-26 18:37 | 显示全部楼层

哈哈~~~养狗是要办"狗证"的...有空俺自言自语一番~~~

  
maliang100 发表于 2008-1-29 12:57 | 显示全部楼层

看来中断中喂的狗就是不会咬人,哈哈,说笑了!

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21617

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部