如何利用单片机看门狗定时器使led闪烁

看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用
示例代码:用看门狗定时器使一个led闪烁
#include
void main( void )
{
// stop watchdog timer to prevent time out reset
wdtctl = wdt_mdly_32;//宏定义
ie1 |=wdtie; //允许看门狗定时器中断
p2dir |= bit7;
_bis_sr(lpm0_bits+gie);//在这里的话将cpu进入低功耗模式
}
#pragma vector = wdt_vector
__interrupt void watchdag_timer(void)
{
p2out ^=bit7;//异或操作基本上是取反操作
}
注意这里有一个比较好的宏定义:wdtctl = wdt_mdly_32;进入该宏定义会发现类似的宏定义有很多
/* wdt-interval times [1ms] coded with bits 0-2 */
/* wdt is clocked by fsmclk (assumed 1mhz) */
#define wdt_mdly_32 (wdtpw+wdttmsel+wdtcntcl) /* 32ms interval (default) */
#define wdt_mdly_8 (wdtpw+wdttmsel+wdtcntcl+wdtis0) /* 8ms “ */
#define wdt_mdly_0_5 (wdtpw+wdttmsel+wdtcntcl+wdtis1) /* 0.5ms ” */
#define wdt_mdly_0_064 (wdtpw+wdttmsel+wdtcntcl+wdtis1+wdtis0) /* 0.064ms “ */
/* wdt is clocked by faclk (assumed 32khz) */
#define wdt_adly_1000 (wdtpw+wdttmsel+wdtcntcl+wdtssel) /* 1000ms ” */
#define wdt_adly_250 (wdtpw+wdttmsel+wdtcntcl+wdtssel+wdtis0) /* 250ms “ */
#define wdt_adly_16 (wdtpw+wdttmsel+wdtcntcl+wdtssel+wdtis1) /* 16ms ” */
#define wdt_adly_1_9 (wdtpw+wdttmsel+wdtcntcl+wdtssel+wdtis1+wdtis0) /* 1.9ms “ */
/* watchdog mode -》 reset after expired time */
/* wdt is clocked by fsmclk (assumed 1mhz) */
#define wdt_mrst_32 (wdtpw+wdtcntcl) /* 32ms interval (default) */
#define wdt_mrst_8 (wdtpw+wdtcntcl+wdtis0) /* 8ms ” */
#define wdt_mrst_0_5 (wdtpw+wdtcntcl+wdtis1) /* 0.5ms “ */
#define wdt_mrst_0_064 (wdtpw+wdtcntcl+wdtis1+wdtis0) /* 0.064ms ” */
/* wdt is clocked by faclk (assumed 32khz) */
#define wdt_arst_1000 (wdtpw+wdtcntcl+wdtssel) /* 1000ms “ */
#define wdt_arst_250 (wdtpw+wdtcntcl+wdtssel+wdtis0) /* 250ms ” */
#define wdt_arst_16 (wdtpw+wdtcntcl+wdtssel+wdtis1) /* 16ms “ */
#define wdt_arst_1_9 (wdtpw+wdtcntcl+wdtssel+wdtis1+wdtis0) /* 1.9ms ” */
这里我们可以根据通常的需要,选择合适的定时时间
说到定时时间,这里又不得不讲一下中断函数,在iar这个编译环境中,一般中断函数的写法是
#pragma vector = 中断向量
__interrupt void 中断函数名(void)
{
用户程序;
}
注意,中断向量可以在430的头文件中查找,中断函数的声明必须是void 中断函数名(void),这是因为中断函数没有返回值,也没有中断的形式参数
但是本人又在网站上看到另外一种用switch来写的,就是一个中断源对应几个中断向量,这种写法目前我还没有见过源码,所以不好总结

那抹绿暖进心底,oppor9s清新绿正式发布,简直美到没朋友
STM32编程为何内部不应开DAC缓冲
香橙派Orange Pi RK3399解析
什么牌子的骨传导耳机好、市面上最好的骨传导耳机
工程如何进行参数选型
如何利用单片机看门狗定时器使led闪烁
扬尘在线监测监控系统助力环境污染防治
1nm之后将如何发展
基于Simplorer仿真平台对开关电源设备的EMI设计
集成显卡和独立显卡的区别_哪个好
KUKA机器人C4外部自动控制最终版-v1介绍
AR/VR设备成为科技巨擘技术研发主战场
FPGA巨头赛灵思收购深鉴科技,计划未来布局中国ADAS及自动驾驶
浅析高功率电源PCB设计中变压器底层走线的关键要点
中国在高性能芯片领域取得了重大突破
TVS管在BMS上的功能
激光幕墙入侵探测器在智慧磐石系统的应用
中芯国际;10nm以下先进工艺还有戏吗
防火墙管理是什么?需要做哪些工作?
南方基金走进LED上市公司雷曼光电