因IO口不够,把SCLK和TMS PIN 用作普通IO驱动指示灯。按IO的设置方法:在void GPIO_reservations(void)内设定 RESERVE_GPIO( GPIO, GPIO_PORT_1, GPIO_PIN_4, PID_GPIO); //G led 和void set_pad_functions(void) 内设定 GPIO_ConfigurePin( GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, false); // G LED 为普通GPIO口, 但是设为高电平输出GPIO_SetActive(GPIO_PORT_1, GPIO_PIN_4); 时,P1.4口一直为低电平,是什么原因呢?
Keywords:
Device:
Hi,
Please make sure SYS_CTRL_REG[DEBUGGER_ENABLE] is set to ''0" to configure JTAG pins to GPIO as follows:
SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0); // close debugger
Regards,
非常感你的回复。代码已经是把所有设定SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 0); 关掉所有的debugger ,P1.4口还是无法控制高低电平输出。如果我把P1.4口改为P1.2 可以看到灯闪烁,因此代码是没有问题,还是P1.4的配置问题,请在帮忙看下是否其它地方还需要修改。SDK版本为V_5.150.2。
void timer_callback(void)
{
静态unsigned char国旗= 0;
if(flag)
{
//GPIO_SetPinFunction( GPIO_CON_GLED_PORT, GPIO_CON_GLED_PIN, OUTPUT, PID_GPIO);
//GPIO_ConfigurePin( GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, true); // G LED
// GPIO_SetActive(GPIO_PORT_1, GPIO_PIN_2);
GPIO_SetInactive(GPIO_PORT_1, GPIO_PIN_4);
flag=0;
}
else
{
//GPIO_SetPinFunction( GPIO_CON_GLED_PORT, GPIO_CON_GLED_PIN, OUTPUT, PID_GPIO);
// GPIO_ConfigurePin( GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, false); // G LED
//GPIO_SetInactive(GPIO_PORT_1, GPIO_PIN_2);
GPIO_SetActive(GPIO_PORT_1, GPIO_PIN_4);
flag=1;
}
}
Hi,
Do you mind to run this modified code to verify the JTAG is disabled correctly ?
void timer_callback(void)
{
静态unsigned char国旗= 0;
if(GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)
{
if(flag)
{
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_2, OUTPUT, PID_GPIO, true);
flag=0;
}
else
{
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_2, OUTPUT, PID_GPIO, false);
flag=1;
}
}
else
{
if(flag)
{
//GPIO_SetPinFunction( GPIO_CON_GLED_PORT, GPIO_CON_GLED_PIN, OUTPUT, PID_GPIO);
//GPIO_ConfigurePin( GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, true); // G LED
// GPIO_SetActive(GPIO_PORT_1, GPIO_PIN_2);
// GPIO_SetInactive(GPIO_PORT_1, GPIO_PIN_4);
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, true);
flag=0;
}
else
{
//GPIO_SetPinFunction( GPIO_CON_GLED_PORT, GPIO_CON_GLED_PIN, OUTPUT, PID_GPIO);
// GPIO_ConfigurePin( GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, false); // G LED
//GPIO_SetInactive(GPIO_PORT_1, GPIO_PIN_2);
// GPIO_SetActive(GPIO_PORT_1, GPIO_PIN_4);
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_4, OUTPUT, PID_GPIO, false);
flag=1;
}
}
}
Thanks and Regards,
用这段代码,证明JTAG已是关闭。P1.2 上的LED不会闪烁,同时 P1.4上的LED也不会闪烁。
Hi,
Don't know how you verify your LED blinking feature. Your issue may due to entering sleep mode that obsolete your soft timer. To confirm this assumption, could you please add a statement as below to re-run your test. This statement is to force the software staying alive.
int main_func(void)
{
.....
// get the allowed sleep mode
// time from rwip_power_down() to WFI() must be kept as short as possible!!
sleep_mode = rwip_power_down();
/* statement added */
if ((sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep))
{
sleep_mode = mode_idle;
}
.....
}
Regards,
已经试过,和睡眠没有关系。如果我把P1.2和P1.4相互对换一下,是可以看到P1.2上的LED灯闪烁。 是不是底层代码需要更改哪里不?
谢谢~~~