历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2020年01月29日 | MSP430的看门狗常见用法以及中断函数的书写方法

2020-01-29 来源:eefocus

今天下午看了一下MSP430的看门狗的基本用法


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


示例代码:用看门狗定时器使一个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来写的,就是一个中断源对应几个中断向量,这种写法目前我还没有见过源码,所以不好总结


推荐阅读

史海拾趣

福建国光公司的发展小趣事

对于具有锁定功能的物体检测报警电路,网友可能会有多种问题,以下是一些常见问题及其回答:

一、电路工作原理相关问题

  1. 问题:具有锁定功能的物体检测报警电路是如何工作的?
    回答:该电路通常包括光电检测部分、信号处理部分和报警输出部分。当有人或物体入侵到光电检测的空间时,光被遮挡,导致光敏晶体管截止,其集电极电压上升。这一变化被信号处理部分检测并转换为控制信号,使报警电路启动,发出声音或光等报警信号。同时,电路具有锁定功能,即一旦报警触发,需要特定操作(如断开开关)才能解除报警状态。

  2. 问题:锁定功能是如何实现的?
    回答:锁定功能通常通过记忆电路或状态保持电路实现。当报警信号被触发后,这部分电路会保持一个高电平或低电平状态,使报警信号持续输出,直到接收到解除报警的外部信号(如断开开关)。这种设计可以防止短暂的遮挡或误触发导致的短暂报警,提高系统的稳定性和可靠性。

二、电路设计与实现相关问题

  1. 问题:在设计具有锁定功能的物体检测报警电路时,需要考虑哪些因素?
    回答:设计时需要考虑的因素包括检测灵敏度、报警响应时间、误报率、功耗、成本以及与其他系统的兼容性等。此外,还需要考虑电路的稳定性、可靠性和安全性,确保在各种环境条件下都能正常工作。

  2. 问题:如何降低电路的误报率?
    回答:降低误报率的方法包括优化光电检测器的布局和参数设置,以减少外界光线的干扰;采用信号处理算法对检测信号进行滤波和去噪处理;以及设置合理的报警阈值等。此外,还可以通过增加确认机制(如二次检测)来进一步降低误报率。

三、电路应用与维护相关问题

  1. 问题:这种电路在哪些领域有应用?
    回答:具有锁定功能的物体检测报警电路在多个领域都有广泛应用,如安防监控、工业自动化、智能家居等。在安防监控领域,它可以用于入侵检测、门窗防护等场景;在工业自动化领域,可以用于生产线上的物料检测、机器人避障等场景;在智能家居领域,则可以用于门窗传感器、人体存在检测等场景。

  2. 问题:如何对电路进行日常维护和故障排查?
    回答:日常维护包括定期检查电路的连接是否牢固、光电检测器是否清洁无遮挡等。故障排查时,可以使用万用表等工具检测电路各部分的电压和电流是否正常,定位故障点。同时,也可以结合报警记录和监控视频等信息进行综合分析,以快速准确地判断故障原因并采取相应的解决措施。

以上是针对具有锁定功能的物体检测报警电路可能提出的问题及其回答。需要注意的是,由于电路的具体设计和实现方式可能因应用场景和需求的不同而有所差异,因此在实际应用中还需要根据具体情况进行调整和优化。

AMOTECH(阿莫泰克)公司的发展小趣事

进入21世纪,AMOTECH继续深耕电子领域,特别是在压敏电阻技术上取得了重大突破。2003年,公司的压敏电阻产品被产业资源部评为世界一流产品,这一成就不仅提升了AMOTECH在全球电子行业中的地位,也为其后续发展奠定了坚实基础。同年,公司还成功在韩国安全商协会自动报价首次公开募股,为公司的进一步扩张提供了资金支持。

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

E-T-A公司自创立以来,一直由Ellenberger和Poensgen家族掌控。家族成员代代相传,将公司的传统和价值观延续至今。同时,公司也注重培养新一代的管理和技术人才,为公司的持续发展注入新的活力。在家族传承的基础上,E-T-A公司不断追求创新,致力于为客户提供更加优质的产品和服务。

Corsair Electrical Connectors Inc公司的发展小趣事

Corsair Electrical Connectors Inc公司自创立之初,便专注于电气连接器的制造。公司创始人凭借其深厚的行业经验和敏锐的市场洞察力,准确把握了连接器在电子行业中的重要地位,并决定以此为切入点,打造一家专业的连接器制造商。在创立初期,Corsair面临着资金短缺、技术落后等多重困难,但创始人凭借坚定的信念和不懈的努力,带领公司逐步走上了正轨。

Cellergy公司的发展小趣事

Cellergy公司一直注重创新研发,不断推出新产品以满足市场需求。在一次重要的科技展览会上,Cellergy公司展示了一款全新的超级电容器。这款电容器采用了先进的材料和工艺,具有更高的能量密度和更长的使用寿命。这一创新产品引起了广泛关注,为Cellergy公司赢得了众多客户的青睐。

E Connector Solutions公司的发展小趣事

E Connector Solutions公司自成立以来,一直注重技术创新。在早期阶段,公司研发团队通过深入的市场调研,发现电子连接器市场存在着对高速、高密度连接器日益增长的需求。公司投入大量研发资源,成功开发出一款新型连接器产品,其传输速度更快、密度更高,满足了市场的需求。随着产品的推出,E Connector Solutions公司逐渐在市场中树立了技术领先的形象,赢得了客户的信赖。

问答坊 | AI 解惑

雷达动目标信号处理的DSP毕业论文谁写过

求助相关知识帮助,邮箱:biaofeng1286@163.com…

查看全部问答>

快捷模块

系列功率模块资料…

查看全部问答>

HT1621 LCD液晶显示驱动芯片

大家介绍下这个芯片,再提供下“用AT89S51作为主控制器与 HT1621 组成显示系统的电路图!谢谢啊…

查看全部问答>

RF功率MOSFET产品及其工艺开发

中心论题: RF功率LDMOSFET性能特征RF功率LDMOSFET基本结构和制造工艺特点产品设计难点分析和解决方案器件的关键参数工艺难点和解决方案 解决方案: 设计了特殊栅结构和工艺制造流程P-阱和N+源区通过两次多晶单边自对准注入形成P+阱沟道的杂质浓 ...…

查看全部问答>

wince5.0自带s3c2410BSP的interrupthandle()函数当中的NKCallIntChain()作用

在WinCE 5.0自带的s3c2410当中的interrupthandle()当中的       sysIntr = NKCallIntChain((UCHAR)irq);         if (sysIntr == SYSINTR_CHAIN || !NKIsSysIntrValid(sysIntr))   &nb ...…

查看全部问答>

protel[1].2004.基础教程

protel[1].2004.基础教程…

查看全部问答>

Code Composer Studio™ IDE v4 免费试用版主要特性与优势

下载您的 Code Composer Studio™ IDE v4 免费试用版,获得 MSP430、C2000、C5000、C6000、Stellaris Cortex-M3、Sitara、Davinci 以及 OMAP 处理器的无缝支持!尊敬的客户,德州仪器 (TI)最新 Code Composer Studio™ 集成开发环境 ...…

查看全部问答>

stm32串口接收的校验问题

                                 我用的是stm32f103rct6,用串口3以7个数据位、偶校验的方式通讯,发送可以实现,但是接收的时候无法自动去除校验位 ...…

查看全部问答>

103VBT6用TIM1,一路发脉冲,另一路来计所发脉冲可以吗?

                                 如果用STM32F103VBT6   TIM1的1通道发脉冲,2通道来计1通道的脉冲数,然后根据第2通道所计脉冲数来控制 ...…

查看全部问答>

请教!!

为什么我在解压uCOSV252之后,在C:\\SOFTWARE\\uCOS-II\\TEST_EX1_x86L\\BC45\\SOURCE里面并没有出现所谓的*.ink文件,不知道为什么,请知道的前辈帮解……谢谢!!…

查看全部问答>