问题是这样的:周立功书原程序是这样的(见后)
原程序在LPC2200的实验板上实验是没有任何问题的,可以修改看门狗的复位时 间等等都没有问题;但是我在主程序中的while(1); 里面直接加WdtFeed()函数;想让狗不复位,改好的如下: while(1) { WdtFeed(); } 得到的结果是程序一直从启动;我把狗复位时间改成10分钟都不行. 片子:LPC2214 我在做产品程序的时候,使用是KEIL3环境,用KEIL仿真器,就写一个简单的程序, 还是在主程序中直接只有WdtFeed();函数,得到的结果一样,还是不断的重启动. 我修改过狗复位时间到10分钟,结果还是一样.自己估计应该不是狗狗的初始化 或则复位时间不够,但是就不知道原因. 敬请各位前辈指点指点,在此谢谢了!!!!!!!!!!!!!!!!!!!!!! 对了,模板是用的周立功的.不知道是不是中断问题.
//--------------------------------------------------------------- #include "config.h"
#define SPI_CS 0x00000100 /* P0.8 */ #define SPI_DATA 0x00000040 /* P0.6 */ #define SPI_CLK 0x00000010 /* P0.4 */
#define SPI_IOCON 0x00000150 /* 定义SPI接口的I/O设置字 */
//--------------------------------------------------------------- void HC595_SendDat(uint8 dat) { uint8 i;
IO0CLR = SPI_CS; // SPI_CS = 0 for(i=0; i<8; i++) // 发送8位数据 { IO0CLR = SPI_CLK; // SPI_CLK = 0 /* 设置SPI_DATA输出值 */ if( (dat&0x80)!=0 ) IO0SET = SPI_DATA; else IO0CLR = SPI_DATA; dat <<= 1; IO0SET = SPI_CLK; // SPI_CLK = 1 } IO0SET = SPI_CS; // SPI_CS = 1,输出显示数据 }
//--------------------------------------------------------------- void WdtFeed(void) { WDFEED = 0xAA; WDFEED = 0x55; } //--------------------------------------------------------------- void DelayNS(uint32 dly) { uint32 i;
for(; dly>0; dly--) for(i=0; i<1000; i++)WdtFeed(); }
int main(void) { uint8 i;
PINSEL0 = 0x00000000; // 设置管脚连接GPIO PINSEL1 = 0x00000000; IO0DIR = SPI_IOCON; // 设置SPI控制口为输出,其它I/O为输入 WDTC = 0xFF00; // 设置WDTC,喂狗重装值 WDMOD = 0x03; // 设置并启动WDT WdtFeed(); // 进行喂狗操作 for(i=0; i<18; i++) { HC595_SendDat(0x00); DelayNS(5); HC595_SendDat(0xFF); DelayNS(5); } HC595_SendDat(0xFE); while(1); return(0); } |