21ic电子技术开发论坛 已关闭版块 Cortex-M0助学园地 我的WDT代码只有只能中断不能重启
发新帖我要提问
返回列表
打印
[Cortex-M0技术交流]

我的WDT代码只有只能中断不能重启

[复制链接]
2393|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cuijianbo|  楼主 | 2011-10-13 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
哪位仁兄帮我解决一下,吾不胜感激。
屏蔽掉void WDT_IRQHandler(void)的WDT->WTCR.WTR = 1;这句,代码死循环后WDT没有令其重启。
代码如下
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>                           
#include "NUC1xx.h"
#include "Driver\DrvSYS.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvUART.h"
//static uint16_t TimerCounter=0;
//static uint8_t Alarm_E=1;
//static uint32_t WDTCOUN=0;
void Delay(int count);
static uint32_t WDTCOUN=0;
/*------- WDT ----------------------------------------------*/
void InitWDT(void)
{
NVIC_DisableIRQ(WDT_IRQn); //Disable WDT interrupt
outpw(&WDT->WTCR ,0 );  //Disable WDT
UNLOCKREG();  
/* Step 1. Enable and Select WDT clock source */         
SYSCLK->CLKSEL1.WDT_S =3;//Select 10Khz for WDT clock source   
SYSCLK->APBCLK.WDT_EN =1;//Enable WDT clock source
/* Step 2. Select Timeout Interval */
WDT->WTCR.WTIS=5;//Select level 7   
/* Step 3. Enable Watchdog Timer Reset function */
WDT->WTCR.WTRE = 1;
/* Step 4. Enable WDT interrupt */
WDT->WTCR.WTIF =1;//Write 1 to clear for safety  
WDT->WTCR.WTIE = 1;
NVIC_EnableIRQ(WDT_IRQn);
/* Step 5. Enable WDT module */
//Enable WDT
WDT->WTCR.WTE = 1;
  //Clear WDT counter
//WDT->WTCR.WTR = 1;  
LOCKREG();  
}
void WDT_IRQHandler(void)
{
UNLOCKREG();
WDT->WTCR.WTIF =1;
    WDTCOUN++;
  if (WDTCOUN<10) WDT->WTCR.WTR=1; //Wait 10 times
    WDT->WTCR.WTR = 1;
  LOCKREG();
printf("WDT interrupt\n");
}
/*----------------------------------------------------------------------------
  MAIN function
  ----------------------------------------------------------------------------*/
int32_t main (void)
{
STR_UART_T sParam;
UNLOCKREG();
SYSCLK->PWRCON.XTL32K_EN = 1;//Enable 32Khz for RTC clock source
SYSCLK->PWRCON.XTL12M_EN = 1;
SYSCLK->CLKSEL0.HCLK_S = 0;
LOCKREG();
/* Set UART Pin */
DrvGPIO_InitFunction(E_FUNC_UART0);
  /* UART Setting */
    sParam.u32BaudRate   = 115200;
    sParam.u8cDataBits   = DRVUART_DATABITS_8;
    sParam.u8cStopBits   = DRVUART_STOPBITS_1;
    sParam.u8cParity   = DRVUART_PARITY_NONE;
    sParam.u8cRxTriggerLevel= DRVUART_FIFO_1BYTES;
/* Set UART Configuration */
  if(DrvUART_Open(UART_PORT0,&sParam) != E_SUCCESS)
{
  printf("UART0 open failed\n");
  return FALSE;
}
    printf("\n\n");
    printf("+-----------------------------------------------------------+\n");
    printf("|            Timer_WDT_RTC Sample Program                   |\n");
    printf("+-----------------------------------------------------------+\n");
                        
// InitTIMER0();
// InitRTC();
InitWDT();
   
/* Synch field transmission & Request Identifier Field transmission*/
while(1);
}

WDT.rar

1.36 MB

相关帖子

沙发
lixiaoxu2meng| | 2011-10-13 11:14 | 只看该作者
你好 我有一篇 WDT 的例子你可以看一下

使用特权

评论回复
板凳
Ryanhsiung| | 2011-10-13 11:34 | 只看该作者
DrvWDT_Ioctl (E_WDT_IOC_ENABLE_RESET_FUNC, 0); //使能看门狗定时器复位功能
有没有初始化这一句???

使用特权

评论回复
地板
cuijianbo|  楼主 | 2011-10-13 14:02 | 只看该作者
2楼的可以再NUC100上运行可以复位吗?

使用特权

评论回复
5
Ryanhsiung| | 2011-10-13 14:06 | 只看该作者
我就是抄他的例程,可以啊!!!

使用特权

评论回复
6
cuijianbo|  楼主 | 2011-10-13 14:08 | 只看该作者
3楼说的和我的NVIC_EnableIRQ(WDT_IRQn);是一样的

使用特权

评论回复
7
cuijianbo|  楼主 | 2011-10-13 17:15 | 只看该作者
我上面发的代码在NUC140可以,但在NUC100就不行,很奇怪

使用特权

评论回复
8
cuijianbo|  楼主 | 2011-10-14 14:30 | 只看该作者
2# lixiaoxu2meng 仁兄,你的代码测了一下,    // DrvWDT_Ioctl (E_WDT_IOC_RESET_TIMER,0); //定时喂狗 可以去掉看 WDT复位效果
这句话屏蔽掉了,现象是A2先亮时间最长,然后A4亮,最后A3亮时间最短,之后三个灯一直是灭的。WDT复位后应该系统重启才是,也就是复位后A2A3A4以此亮。怎么到我这就不行了呢?

使用特权

评论回复
9
cuijianbo|  楼主 | 2011-10-14 14:31 | 只看该作者
5# Ryanhsiung 你用的是NUC什么系列的芯片?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝
关闭 热门推荐
快速回复 在线客服 返回列表 返回顶部