关于lm3s811 单片机 jtagWait();

jtagWait();// 防止JTAG失效,重要!
加上这个语句就不能正常运行,
去掉还可以运行,
但是写的“防止JTAG失效,重要!”
求解释……
#include "systemInit.h"

// 定义全局的系统时钟变量
unsigned long TheSysClock = 12000000UL;

// 定义KEY
#define KEY_PERIPH SYSCTL_PERIPH_GPIOG
#define KEY_PORT GPIO_PORTG_BASE
#define KEY_PIN GPIO_PIN_5

// 防止JTAG失效
void jtagWait(void)
{
SysCtlPeriEnable(KEY_PERIPH); // 使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT, KEY_PIN); // 设置KEY所在管脚为输入

if (GPIOPinRead(KEY_PORT, KEY_PIN) == 0x00) // 若复位时按下KEY,则进入
{
for (;;); // 死循环,以等待JTAG连接
}

SysCtlPeriDisable(KEY_PERIPH); // 禁止KEY所在的GPIO端口
}

// 系统时钟初始化
void clockInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_50V); // 设置LDO输出电压

SysCtlClockSet(SYSCTL_USE_OSC | // 系统时钟设置
SYSCTL_OSC_MAIN | // 采用主振荡器
SYSCTL_XTAL_6MHZ | // 外接6MHz晶振
SYSCTL_SYSDIV_1); // 不分频

/*
SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前须将LDO设为2.75V

SysCtlClockSet(SYSCTL_USE_PLL | // 系统时钟设置,采用PLL
SYSCTL_OSC_MAIN | // 主振荡器
SYSCTL_XTAL_6MHZ | // 外接6MHz晶振
SYSCTL_SYSDIV_10); // 分频结果为20MHz
*/

TheSysClock = SysCtlClockGet(); // 获取当前的系统时钟频率
}

嗯、如果我猜的没错的话、这个是周立功的 例子。呵呵、LM3S811没有他定义的引脚。在INclude的 那个文件里面把 宏定义的 GPIO端口 改一下。不行的话、如果 你愿意 可以再叫我啦。
#define KEY_PERIPH SYSCTL_PERIPH_GPIOG
#define KEY_PORT GPIO_PORTG_BASE
#define KEY_PIN GPIO_PIN_5

meiyou没有G5口的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-04
JTAG接口和其中有的GPIO是复用的,一旦JTAG接口因为误将其无防护地配置为GPIO接口而被锁定,则有可能再也无法恢复。所以为了防止这种情况发生所以加了jtagWait();这个函数,这样就可以放心大胆的使用GPIO与jtag复用的IO了。
你如果不用到与JTAG复用的IO就不用担心这个问题,所以就是你所说的jtagWait();这个函数不要用也可以运行。
另外,还可以充分利用JTAG接口的这一特性来为自己的程序加密,以防非法复制。