因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口一直为低电平,是什么原因呢?
关键词:
设备:
你好,
请确保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(无效)
{
静态无符号字符标志= 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);//ģLED
// 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);//ģLED
// GPIO_SetInactive(GPIO_PORT_1,GPIO_PIN_2);
GPIO_SetActive(GPIO_PORT_1,GPIO_PIN_4);
标志= 1;
}
}
你好,
你介意运行此修改后的代码来验证JTAG正确禁用?
空隙timer_callback(无效)
{
静态无符号字符标志= 0;
如果(GetWord16(SYS_STAT_REG)DBG_IS_UP)== DBG_IS_UP)
{
如果(标志)
{
GPIO_ConfigurePin(GPIO_PORT_1,GPIO_PIN_2,OUTPUT,PID_GPIO,真正的);
标志= 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);//ģ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,真正的);
标志= 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);//ģ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);
标志= 1;
}
}
}
感谢致敬,
用这段代码,证明JTAG已是关闭.P1.2上的LED不会闪烁,同时P1.4上的LED也不会闪烁。
你好,
不知道你是如何验证您的LED闪烁功能。您的问题可能是由于进入睡眠模式过时了你的软定时器。为了证实这一假设,能否请你添加一个声明,如下重新运行测试。这种说法很给力的软件活着。
int main_func(void)
{
.....
//得到允许的睡眠模式
//从rwip_power_down时间()来WFI()必须保持尽可能短!!
SLEEP_MODE = rwip_power_down();
/ *声明说* /
如果((SLEEP_MODE == mode_ext_sleep)||(SLEEP_MODE == mode_deep_sleep))
{
SLEEP_MODE = mode_idle;
}
.....
}
问候,
已经试过,和睡眠没有关系。如果我把P1.2和P1.4相互对换一下,是可以看到P1.2上的LED灯闪烁。是不是底层代码需要更改哪里不?
谢谢~~~