因IO口不够,把SCLK和经颅磁刺激销用作普通IO驱动指示灯。按IO的设置方法:在空白GPIO_reservations (void)内设定RESERVE_GPIO (GPIO, GPIO_PORT_1, GPIO_PIN_4 PID_GPIO);/ / G和空白set_pad_functions领导(空白)内设定GPIO_ConfigurePin (GPIO_PORT_1、GPIO_PIN_4、输出、PID_GPIO假);/ / G领导为普通GPIO口,但是设为高电平输出GPIO_SetActive (GPIO_PORT_1 GPIO_PIN_4);时,P1.4口一直为低电平,是什么原因呢?
关键词:
设备:
你好,
请确保SYS_CTRL_REG[DEBUGGER_ENABLE]设置为" 0",以配置JTAG引脚为GPIO如下:
SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);/ /关闭调试器
问候,
非常感你的回复。代码已经是把所有设定SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);关掉所有的调试器,P1.4口还是无法控制高低电平输出。如果我把P1.4口改为P1.2可以看到灯闪烁,因此代码是没有问题,还是P1.4的配置问题,请在帮忙看下是否其它地方还需要修改。SDK版本为V_5.150.2。
空白timer_callback(空白)
{
Static unsigned char flag=0;
如果(国旗)
{
//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领导
/ / GPIO_SetActive (GPIO_PORT_1 GPIO_PIN_2);
GPIO_SetInactive (GPIO_PORT_1 GPIO_PIN_4);
国旗= 0;
}
其他的
{
//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领导
/ / GPIO_SetInactive (GPIO_PORT_1 GPIO_PIN_2);
GPIO_SetActive (GPIO_PORT_1 GPIO_PIN_4);
标志= 1;
}
}
你好,
您是否介意运行修改后的代码来验证JTAG是否被正确禁用?
空白timer_callback(空白)
{
Static unsigned char flag=0;
if(GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP
{
如果(国旗)
{
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_2, OUTPUT, PID_GPIO, true);
国旗= 0;
}
其他的
{
GPIO_ConfigurePin(GPIO_PORT_1, GPIO_PIN_2, OUTPUT, PID_GPIO, false);
标志= 1;
}
}
其他的
{
如果(国旗)
{
//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领导
/ / 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);
国旗= 0;
}
其他的
{
//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领导
/ / 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);
标志= 1;
}
}
}
感谢和问候,
用这段代码,证明JTAG已是关闭.P1.2上的领导不会闪烁,同时P1.4上的领导也不会闪烁。
你好,
不知道如何验证你的LED闪烁功能。您的问题可能是由于进入睡眠模式,过时的软计时器。为了确认这个假设,请添加如下声明以重新运行您的测试。这个声明是为了迫使软件继续存在。
int main_func(空白)
{
.....
//获取允许的睡眠模式
//从rwip_power_down()到WFI()的时间必须尽可能短!!
sleep_mode = rwip_power_down ();
/* * * * * *
If ((sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep)) / /将睡眠模式设置为睡眠模式
{
sleep_mode = mode_idle;
}
.....
}
问候,
已经试过,和睡眠没有关系。如果我把P1.2和P1.4相互对换一下,是可以看到P1.2上的LED灯闪烁。 是不是底层代码需要更改哪里不?
谢谢~~~