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