qq_21395719 2015-08-19 04:14 采纳率: 0%
浏览 1694

看门狗问题请教,谢谢。第一次提问,不懂请教我

/*******************************************************************************

  • 文件名称:WDTAsWD_Ex.c
  • 功 能:CC253x系列片上系统基础实验--- 看门狗定时器作为看门狗
  • 描 述:让看门狗定时器工作在看门狗模式,超时时间为0.25s(即到达0.25s之前还
  • 没喂狗就产生复位)。程序首先闪烁LED6(蓝色)、LED5(绿色)和LED4(黄色)
  • ,没有喂狗,当用户按下SW5的时候就进入喂狗循环,LED停止闪烁

  • 实验硬件:SK-SmartRF05EB
  • 作 者:POWER
  • 日 期:2010-04-18 ******************************************************************************/

/* 包含头文件 /
/
*******************************************************************/
#include "ioCC2530.h" // CC2530的头文件,包含对CC2530的寄存器、中断向量等的定义
/********************************************************************/

/*********************************************************************

  • 函数名称:delay
  • 功 能:软件延时
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无
    ********************************************************************/
    void delay(void)
    {
    unsigned short i; // 定义无符号16位(bit)整型变量i,取值范围0~65535
    unsigned char j; // 定义无符号8位(bit)整型变量j,取值范围0~255

    for(i=0;i<10000;i++)
    {
    for(j=0;j<200;j++)
    {
    /* 插入三条汇编指令NOP */
    asm("NOP");
    asm("NOP");
    asm("NOP");
    asm("NOP");
    }

    }

    }

/*********************************************************************

  • 函数名称:BlinkLeds
  • 功 能:闪烁LED
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无
    ********************************************************************/
    void BlinkLeds(void)
    {
    /* 熄灭LED6(蓝色)、LED5(绿色)和LED4(黄色) */
    P1_0 = 0; // P1.0输出低电平熄灭其所控制的LED6(蓝色)
    P1_1 = 0; // P1.1输出低电平熄灭其所控制的LED5(绿色)
    P1_4 = 0; // P1.4输出低电平熄灭其所控制的LED4(黄色)

    delay(); // 延时

    /* 点亮LED1(绿色)、LED2(红色)和LED3(黄色) */
    P1_0 = 1; // P1.0输出高电平点亮其所控制的LED6(蓝色)
    P1_1 = 1; // P1.1输出高电平点亮其所控制的LED5(绿色)
    P1_4 = 1; // P1.4输出高电平点亮其所控制的LED4(黄色)

    delay(); // 延时

    }

/*********************************************************************

  • 函数名称:FeedWD
  • 功 能:喂狗
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无 ********************************************************************/ void FeedWD(void) { WDCTL |= 0xA0; WDCTL |= 0x50; }

/*********************************************************************

  • 函数名称:main
  • 功 能:main函数入口
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无
    ********************************************************************/
    void main(void)
    {
    unsigned char i;

    /*
    由於CC253x系列片上系统上电复位后,所有21个数字I/O均默认为具有
    上拉的通用输入I/O,因此本实验只需要改变作为LED控制信号的P1.0和P1.1
    和P1.4方向为输出即可。另外还需要将P0.4设置为输入上拉模式。
    在用户的实际应用开发中,我们建议用户采用如下步骤来配置数字I/O:
    1. 设置数字I/O为通用I/O
    2. 设置通用I/O的方向
    3. 若通用I/O的方向被配置为输入,可配置上拉/下拉/三态模式
    4. 若通用I/O的方向被配置为输出,可设置其输出高/低电平
    /
    /
    配置P1.0、P1.1和P1.4的方向为输出 /
    P1DIR |= 0x13; // 0x13 = 0B00010011
    /
    设置P0.4为三态 /
    P0INP |= 0x10;
    /
    设置P0口为上拉*/

    P2INP |= (0x01 << (0+5));

    P1_0 = 0; // P1.0输出低电平熄灭其所控制的LED6(蓝色)
    P1_1 = 0; // P1.1输出低电平熄灭其所控制的LED5(绿色)
    P1_4 = 0; // P1.4输出低电平熄灭其所控制的LED4(黄色)

    /* LED1(绿色)、LED2(红色)和LED3(黄色)闪烁8次 */
    for(i=0;i<8;i++)

    BlinkLeds();

    /* 选择32.768KHz晶体振荡器作为32KHz时钟源 */
    CLKCONCMD &= ~0x80; // 选择32.768KHz晶体振荡器作为32KHz时钟源
    while((CLKCONSTA & 0x80) == 0x80); // 等待32.768KHz晶体振荡器稳定

    /* 配置并启动看门狗定时器*/
    WDCTL |= ((0x02 << 2) | // 看门狗模式
    (0x01 << 0)); // 最终计数值8192,即超时时间为0.25s(32.768KHz晶体振荡器作为32KHz时钟源)

    FeedWD(); // 喂狗

    /* 循环喂狗 */
    while(1)
    {

    FeedWD(); // 喂狗

    while(P0_4 & 0x01);

    }

    }

这个程序和解释有错吗?谢谢回答

  • 写回答

1条回答 默认 最新

  • qq_21395719 2015-08-19 04:17
    关注

    下载到开发班上 按下相应按键 没反应

    评论

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误