This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5969:msp430fr5969中的软件故障时监视器计时器的任何示例代码

Guru**** 2394305 points
Other Parts Discussed in Thread: MSP430FR5969, CC2650, LM35

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/874854/msp430fr5969-any-example-code-for-watch-dog-timer-when-software-fault-in-the-msp430fr5969

器件型号:MSP430FR5969
Thread 中讨论的其他器件: CC2650SYSBIOSLM35

大家好、

我已经为看门狗计时器做了一些小示例代码。 每8秒复位一次器件、但我不会在软件故障自动复位时进行编码、它应该如何复位?

此代码持续8秒。

#include "msp430fr5969.h"
void main (void)

WDTCTL = WDTPW + WDTHOLD;//停止 WDT 以防止复位
PM5CTL0 &=~LOCKLPM5;
int i;//延迟计数值
P1DIR |= BIT0;// P1.0 (红色)和 P1.6 (绿色)输出
P1OUT &=~BIT0;// P1.0 = 0、P1.6 = 0
P4DIR |= BIT6;
P4OUT &=~BIT6;
// for (i =0;i<0xFFFF;i++);//一个小延迟
P4OUT |= BIT6;// P1.0 = 1 (红色 LED 亮起)
WDTCTL = CCC;//将 WDT+置于看门狗模式

while (1);//用于模拟干扰

//WDTCTL = CCC;//将 WDT+复位1秒,
//P1OUT |= BIT0;//打开绿色 LED
//WDTCTL = WDTPW + WDTHOLD;//停止 WDT
//_BIS_SR (LPM0);//将 CPU 置于睡眠状态

#define CCC          (WDTPW+WDTCNTCL+WDTIS1)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Santhosh、

    有关 MSP430FR5xx 器件的信息、请参阅我们的用户指南文档  、有关 WDT 的信息、请参阅一章。 WDT 需要激活并配置为看门狗模式。 另一方面、软件需要在到期前定期复位 WDT、否则 WDT 会复位器件。 这基本上就是您想要的 WDT 功能、如果我理解正确的话。

    此致

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Santhosh、

    请告诉我们、您是否需要有关此方面的进一步支持。 非常感谢。

    此致

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Peter、

    非常感谢您的回复、很抱歉您的回复很晚、

    我正在尝试使用 CC2650和 DS600+实现 ADC 概念、但 对此我有一些疑问  

    /*
    *版权所有(c) 2016、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *

    /*
    *==== adcsinglechane.c ===
    *
    /* XDCtools 头文件*/

    #include
    #include

    /* BIOS 头文件*/
    #include
    #include

    /*驱动程序头文件*/
    #include
    #IF 定义(CC2650DK_7ID)||定义(CC1310DK_7xD)
    #include
    #endif

    /*示例/板头文件*/
    #include "Board.h"

    #define ADC_CONV_MIN_VAL 1200
    #define ADC_CONV_MAX_VAL 4095
    #define COLOW_TEMP_MIN 2500
    #define COLOW_TEMP_MAX 3500
    #define ADC_celcius_CONV_const 509

    /* ADC 采样数*/
    #define ADC_SAMPLE_COUNT (10)

    /*特定于任务的定义*/
    #define TASKSTACKSIZE (768)

    Task_Structtask0Struct;
    char task0stack[TASKSTACKSIZE];

    /*引脚驱动器手柄*/
    静态 PIN_Handle 按钮 PinHandle;
    /* PIN_Config 表的全局存储器*/
    静态 PIN_STATE 按钮 PinState;

    //温度传感器相关变量声明
    /* ADC 转换结果变量*/
    uint16_t adcValue1[50]={0};
    const float ADC_conv_volT_const = 0.293040;
    const float ADC_cel_conv_const = 6.45;
    无符号长整型电压= 0;
    float cel = 0;
    int g_Celsius [50]={0};
    /*
    *应用按钮引脚配置表:
    *-按钮中断配置为在下降沿触发。
    *
    PIN_Config buttonPinTable[]={Board_DIO21 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MAX、PIN_TERMINATE};


    /*
    *==== taskFxn1 ===
    *打开一个 ADC 句柄,然后获取一组采样结果
    *调用多个转换。
    *
    void taskFxn0 (void)

    /* ADC 引脚的电路板初始化*/
    Board_initadc();
    ADC_Handle ADC;
    ADC_Params 参数;
    int_fast16_t res;

    char currVal = 0;
    字符 I = 0;
    //清除缓冲区
    对于(i = 0;i<50;i++)

    G_Celsius [i]= 0;
    adcValue1[i]= 0;


    PIN_setOutputValue (buttonPinHandle、Board_DIO21、currVal);//温度传感器处于活动状态
    ADC_PARAMS_INIT (params);
    ADC = ADC_open (Board_ADC0、params);


    如果(ADC ==空)

    System_abort ("初始化 ADC 通道1\n"\n 时出错);

    其他

    system_printf ("ADC 通道1已初始化\n"\});

    对于(i = 0;i<50;i++)

    RES = ADC_convert (ADC、&adcValue1[i]);
    VOLT = adcValue1[i]* ADC_CONV_MIN_VAL/ADC_CONV_MAX_VAL;
    CEL =((VOLT - ADC_celcius_CONV_CONST)/ADC_CEL_CONV_CONST);
    CEL +=2;// 2使用 LM35测量的校准因子
    CEL *= 100;//将整数转换为整数时、乘以100以保持2个小数点
    G_Celsius [i]=(int) cel;//向下转换为整数以通过 BLE 发送

    ADC_Close (ADC);

    /*
    *==== main ====
    *
    int main (空)

    Task_Params taskParams;

    /*呼叫板初始化函数*/
    Board_initGeneral();

    buttonPinHandle = PIN_OPEN (buttonPinState、buttonPinTable);
    if (!buttonPinHandle){
    System_abort ("初始化按钮引脚时出错\n");

    /*创建任务*/
    Task_Params_init (&taskParams);
    taskParams.STACKSIZE = TASKSTACKSIZE;
    taskParams.stack =_task0Stack;
    Task_construct(&task0Struct,(Task_FuncPtr) taskFxn0、&taskParams、NULL);

    /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
    system_flush();

    BIOS_start();

    返回(0);

    这是我在这里的代码、我在 RES = ADC_convert (ADC、&adcValue1[i])中没有得到准确的结果;但是我正在正确获得 adcValue1、您能给我提供帮助吗? 我非常热情地学习它

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Santhosh、

    如果我正确理解、这是关于 CC2650的。 虽然我对该器件有点熟悉、但对这些器件的支持不负任何责任。 此外、我们的论坛的设置也使得支持请求应提交给论坛的相应部门、以便其他用户也能获得与同一产品系列相关的其他案例的信息。

    因此、请您接受您的最后一个支持请求、并在论坛中为这些无线产品生成新的主题、然后关闭这个主题吗? 非常感谢。

    此致

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    抱歉 Peter、我错误地发布了、这是我的错误、抱歉给您带来不便

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Santhosh、

    不用担心、没问题。 我将关闭该线程。

    此致

    Peter