历史上的今天
返回首页

历史上的今天

今天是:2024年11月10日(星期日)

正在发生

2020年11月10日 | MSP430单片机看门狗的基本用法解析

2020-11-10 来源:elecfans

看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用


示例代码:用看门狗定时器使一个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;//异或操作基本上是取反操作

}

MSP430单片机看门狗的基本用法解析

注意这里有一个比较好的宏定义: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来写的,就是一个中断源对应几个中断向量,这种写法目前我还没有见过源码,所以不好总结

推荐阅读

史海拾趣

Fortiming Corporation公司的发展小趣事

背景:随着公司规模的扩大和产品线的丰富,Fortiming开始寻求更广阔的市场空间。

发展:公司积极参加国内外电子展会,展示其最新技术和产品,吸引了众多客户的关注。同时,Fortiming还与国际知名电子企业建立了合作关系,共同开发新产品,开拓新市场。这些合作不仅提升了Fortiming的品牌影响力,还为公司带来了更多的商业机会。

Alan Industries Inc公司的发展小趣事

随着国内市场的饱和,Alan Industries Inc.开始将目光投向海外市场。公司制定了国际化发展战略,通过设立海外分公司、参加国际展会等方式,积极开拓国际市场。同时,公司还加强了对国际市场的调研和分析,根据不同地区的市场需求和文化特点,推出了针对性的产品和服务。这些努力使得公司在国际市场上也取得了不俗的成绩。

Efficient Power Conversion公司的发展小趣事

随着EPC公司氮化镓技术的不断完善和成熟,其产品开始受到市场的广泛认可。无线电源传送、全自动汽车、高速移动通信等领域的企业纷纷采用EPC公司的氮化镓功率半导体器件,以提高其产品的性能和效率。EPC公司的市场份额逐渐扩大,成为氮化镓功率管理技术领域的领军企业。

Dawn Electronics Inc公司的发展小趣事

随着业务的不断扩张,Dawn Electronics Inc公司意识到供应链管理的重要性。公司加强了与供应商的合作,建立了稳定的供应链体系,确保原材料的质量和供应的稳定性。同时,公司还优化了生产流程,提高了生产效率和产品质量。这些措施有效地降低了成本,提高了公司的竞争力。

台湾肯尼威(CANNYWELL)公司的发展小趣事

在品质保障的基础上,肯尼威开始积极拓展市场。公司不仅在台湾本地建立了完善的销售网络,还成功进军国际市场。通过与多家国际知名企业的合作,肯尼威的产品逐渐打入电子、机械、医疗器械等多个领域。同时,公司还积极参加国际展会,展示最新的技术和产品,吸引了众多海外客户的关注。

Aptos Technology公司的发展小趣事

为了加速发展,Aptos积极寻求与行业内外的合作伙伴建立合作关系。通过与微软、阿里云等知名公司的合作,Aptos获得了更多的技术支持和市场资源。这些合作伙伴关系的建立,不仅提升了Aptos的技术实力和市场竞争力,还为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

菜鸟求救啊....关于m2716的用法...

以前从没接触过这类芯片。现在要用啊。但又不会。 谁能告诉下我m2716在Proteus中如何加载数据,还有在现实中用什么把数据烧到它里面去? 不甚感谢啊... …

查看全部问答>

mc55模块上电20秒后自动关机问题

将mc55模块/IGT引脚置低电平后,mc55模块上电开机,但20秒后mc55模块会自动关机.每次都是这样,找不到原因,请各位指教.谢谢…

查看全部问答>

我想请问KEYMAN工具是个什么?

当设备与 Visual Studio 机器没有 ActiveSync 连接,但有一个有效的 TCP 连接时,部署无效。 解决办法:使用单独提供的 Keyman 工具来执行初始的设备设置. 我想请问KEYMAN工具是什么,在哪里可以找到它,或者下到它? 谢谢~…

查看全部问答>

请问一下接近开关 常开加常闭是什么意思。

我就知道接近开关有常开,和常闭,怎么还有一个一开一闭的,这个一开一闭算起什么作用呢?…

查看全部问答>

【一起学习器件指标】你敢不敢说个大家不知道的电阻指标

几乎所有的电子设计中都会使用到电阻,我稍微提供问题,你知道的电阻有哪些参数指标呢?你敢不敢说个大家都不知道的指标?这个大家现在用的多了也许再过多少年后就看不到这位了…

查看全部问答>

关于定时器中断打断芯片驱动函数时序的问题???!!!

做了个东西用的DHT11温湿度传感器  显示是用的数码管动态扫描 由于执行驱动函数用的时间比较长就把显示函数放在了定时器中断里面  问题出来了 定时器中断把DHT11驱动函数的时序给打乱了 读出来的数据一直在跳动 乱 我在驱动函 ...…

查看全部问答>

求助~~急

哪位大哥知道51单片机中读秒指示电路的工作原理?求解答…

查看全部问答>

我的C2000无法仿真了.问题已解决。

Error connecting to the target: (Error -151 @ 0x0) One of the FTDI driver functions used during the connect returned bad status or an error. The cause may one or more of: invalid emulator serial number, blank emulator EEPROM, ...…

查看全部问答>