zoukankan      html  css  js  c++  java
  • 嵌入式成长轨迹58 【Zigbee项目】【CC2430基础实验】【看门狗模式】

    程序在主程序中没有连续改变小灯的状态,而在开始运行时将系统复位,点亮再复位。实验现象是一只小灯不断闪烁,这是因为程序中启动了看门狗,看门狗时间长度为1 秒,如果 1 秒内没有复位看门狗的话,系统将复位。系统复位后再次开启看门狗,1  秒后复位。

    WDCTL(看门狗定时器控制寄存器) 
    7:4 CLR[3:0]  看门狗复位(喂狗),先写0xa 再写0x5 复位看门狗,两次写入不超过0.5个看门狗周期,读出为0000
    3 EN   看门狗定时器使能位,在定时器模式下写0 停止计数,在看门狗模式下写0 无效
     0  停止计数
     1  启动看门狗/ 开始计数
    2 MODE  看门狗定时器模式
     0  看门狗模式 
     1  定时器模式
    1:0 INT[1:0]  看门狗时间间隔选择
     00  1 秒
     01  0.25 秒
     10  15.625 毫秒
     11  1.9毫秒
    (以32.768K 时钟计算)


    void Init_IO(void);
    函数原型:

    1 void Init_IO(void) 
    2 { 
    3   P1DIR = 0x03; 
    4  led1 = 1; 
    5  led2 = 1; 
    6 } 


    函数功能:将P10,P11 设置为输出控制LED 。
     

    void Init_Watchdog(void);
    函数原型:

    1 void Init_Watchdog(void) 
    2 { 
    3   WDCTL = 0x00; 
    4  //时间间隔一秒,看门狗模式 
    5   WDCTL |= 0x08; 
    6  //启动看门狗 
    7 } 

    函数功能:以看门狗模式启动看门狗定时器,看门狗复位时隔1 秒。
     

    void Init_Clock(void);
    函数原型:

    1 void Init_Clock(void) 
    2 { 
    3   CLKCON = 0X00; 
    4 } 

    函数功能:将系统时钟设为晶振,低速时钟设为晶振,程序对时钟要求不高,不用等待晶振稳定。

     1 //main.c
     2 
     3 # include <ioCC2430.h>
     4 
     5 #define uint unsigned int
     6 
     7 #define led1  P1_0
     8 #define led2  P1_1
     9 
    10 void Init_IO(void)
    11 {
    12     P1DIR = 0x03;
    13     led1 = 1;
    14     led2 = 1;
    15 }
    16 
    17 void Init_Watchdog(void)
    18 {
    19     WDCTL = 0x00;
    20     //时间间隔一秒,看门狗模式
    21     WDCTL |= 0x08;
    22     //启动看门狗
    23 }
    24 
    25 void Init_Clock(void)
    26 {
    27     CLKCON = 0X00;
    28 }
    29 
    30 void Delay(void)
    31 {
    32     uint n;
    33     for(n=50000;n>0;n--);
    34     for(n=50000;n>0;n--);
    35     for(n=50000;n>0;n--);
    36     for(n=50000;n>0;n--);
    37     for(n=50000;n>0;n--);
    38     for(n=50000;n>0;n--);
    39     for(n=50000;n>0;n--);
    40 }
    41 
    42 void main(void)
    43 {
    44     Init_Clock();
    45     Init_IO();
    46     Init_Watchdog();
    47 
    48     led1=0;
    49     Delay();
    50     led2=0;
    51     while(1)
    52     {
    53 
    54     }    //喂狗指令(加入后系统不复位,小灯不闪烁)
    55 }
  • 相关阅读:
    深入了解Element Form表单动态验证问题 转载
    使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象
    vue 中 使用 element-ui 发送请求前 校验全部表单,报警告: [Element Warn][Form]model is required for validate to work!
    vue element InfiniteScroll 无限滚动 入坑记录
    nginx实现跨域访问并支持(GET, POST,PUT,DELETE, OPTIONS)
    正则表达式记录
    element ui图片上传方法
    laravel 跨域解决方案
    vagrant的box哪里下?镜像在哪儿找?教你在vagrant官网下载各种最新.box资源
    Saas系统架构的思考,多租户Saas架构设计分析
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2666953.html
Copyright © 2011-2022 走看看