在线时间0 小时
UID61076
注册时间2008-7-24
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 306
- 最后登录
- 1970-1-1
|
发表于 2010-3-15 13:01:02
|
显示全部楼层
RE:在这里求助重来就没有得到过解决,还是FSL的官网吗?不过还是要再发2个问题,让大家也看看.
BWTD是设计成使能之后,不能再disable的,防止程序误操作。我把我们使用的部分测试代码给你做一下参考。
/********************************************************************/
/*
* File: BWDT main.c
* Purpose: check BWDT functionality
*
*/
#include "common.h"
#include "uif.h"
#include
/*
* Function declaration for each testcase
*/
/* RTC TestCase Commands*/
void bwdt_read_registers (int, char **);
void bwdt_system_rst (int, char **);
void bwdt_clock_src (int ,char **);
void bwdt_reset_status (int ,char **);
void bwdt_disable_ena (int ,char **);
void bwdt_operation (int ,char **);
//void pmm_enter_stop_mode(void);
//cmd min_arg max_arg flag func Description syntax block regression_flag error_flag
UIF_CMD UIF_CMDTAB[] =
{
UIF_CMDS_ALL
{"bwdt_read_registers" ,0,0,0, bwdt_read_registers,"displays bwdt registers"," "}, \
{"bwdt_sys_rst" ,0,0,0, bwdt_system_rst,"check if bwdt resets system"," "},
{"bwdt_clk_src" ,0,0,0, bwdt_clock_src,"check if bwdt can be clocked by either of the two clock sources"," "},
{"bwdt_rst_status" ,0,0,0, bwdt_reset_status,"check if bwdt reset is updated in the reset status reg"," "},
{"bwdt_ena_disable" ,0,0,0, bwdt_disable_ena,"check that bwdt once enabled cannot be disabled "," "},
{"bwdt_rst_state" ,0,0,0, bwdt_operation,"check that clock to bwdt cannot be gated in independent mode"," "},
};
const int UIF_NUM_CMD = UIF_CMDTAB_SIZE;
UIF_SETCMD UIF_SETCMDTAB[] = {"",0,0,NULL,""};
const int UIF_NUM_SETCMD = 0;
/***********************************************************************/
void presskey(void)
{
int ch ;
printf("press any key to continue \n");
ch = (int)in_char();
}
void main (void)
{
int i;
char j;
char **arr;
/* Global interrupt enable */
mcf5xxx_irq_enable();
/* Command Prompt */
while (TRUE)
{
printf("BWDT>" );
run_cmd();
}
}
/********************************************************************/
void
bwdt_read_registers(int argc, char ** argv)
{
printf("BWCR = %#02X\n", MCF_BWDT_BWCR);
printf("BWMR = %#02X\n", MCF_BWDT_BWMR);
printf("BWCNTR = %#02X\n", MCF_BWDT_BWCNTR);
printf("BWSR = %#02X\n", MCF_BWDT_BWSR);
printf("BWCR_CLK= %#02X\n", MCF_CLOCK_BWCR);
}
/*********************************************************************/
/*********************************************************************/
void bwdt_system_rst (int argc, char ** argv)
{
uint32 i ;
uint8 ch;
printf("Select 1 to avoid system reset else select 0 \n");
ch = in_char();
out_char((char)ch);
out_char(0x0D); /* CR */
out_char(0x0A); /* LF */
if(ch == '0')
{
printf("Wait , system reset will generate soon \n");
}
else
{
printf("System reset will NOT be generated \n");
}
//select system clock as wdt clock source
MCF_CLOCK_BWCR = 0x00;
MCF_BWDT_BWMR = 0xFFFF;
/*enable the watch dog timer*/
MCF_BWDT_BWCR = 0x01 ;
while(1)
{
if(ch != '0')
{
//wait for the value in BWCNTR to change
for(i=0;i |
|