Other Parts Discussed in Thread: CC2340R5,
关于CC2340R5的IO25脚,我需要设置其输出高/低电平,在syscfg配置后,使用GPIO_write(CONFIG_GPIO_25, 1);
却无法使其输出高电平,其他的IO引脚可以正常的输出高电平。求解
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
关于CC2340R5的IO25脚,我需要设置其输出高/低电平,在syscfg配置后,使用GPIO_write(CONFIG_GPIO_25, 1);
却无法使其输出高电平,其他的IO引脚可以正常的输出高电平。求解
您好,
理论上IO25脚是可以通过syscfg配置为高/低电平的。
考虑CC2340R5的IO25脚是否被占用。
您使用的是哪个例程,SDK版本?
您对代码修改过哪些地方?
您好,使用的是LP-EM-CC2340R5开发板,没有进行任何的更改,也没有占用,例程的话我使用的是gpiointerrupt的例程,SDK版本是目前最新的7.20.1.10。
只是简单的输出高低电平,并没有进行改动,只是增加了DIO25脚输出高电平;
/* * ======== mainThread ======== */ void *mainThread(void *arg0) { /* Call driver init functions */ GPIO_init(); /* Configure the LED and button pins */ //GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); //GPIO_setConfig(CONFIG_GPIO_LED_1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); GPIO_setConfig(CONFIG_GPIO_KEY_INPUT, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING |GPIO_CFG_SHUTDOWN_WAKE_LOW); /* Turn on user LED */ //GPIO_setConfig(CONFIG_GPIO_VCCON, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH); //GPIO_write(CONFIG_GPIO_VCCON, 1); GPIO_write(CONFIG_GPIO_14, 1); // GPIO_write(CONFIG_GPIO_0, 1); // GPIO_write(CONFIG_GPIO_1, 1); // GPIO_write(CONFIG_GPIO_2, 1); // GPIO_write(CONFIG_GPIO_5, 1); // GPIO_write(CONFIG_GPIO_6, 1); // GPIO_write(CONFIG_GPIO_7, 1); // GPIO_write(CONFIG_GPIO_8, 1); // GPIO_write(CONFIG_GPIO_9, 1); // GPIO_write(CONFIG_GPIO_10, 1); // GPIO_write(CONFIG_GPIO_11, 1); // GPIO_write(CONFIG_GPIO_12, 1); // GPIO_write(CONFIG_GPIO_13, 1); // GPIO_write(CONFIG_GPIO_18, 1); // GPIO_write(CONFIG_GPIO_19, 1); // GPIO_write(CONFIG_GPIO_21, 1); // GPIO_write(CONFIG_GPIO_23, 0); GPIO_write(CONFIG_GPIO_24, 1); GPIO_write(CONFIG_GPIO_25, 1); /* Install Button callback */ GPIO_setCallback(CONFIG_GPIO_KEY_INPUT, gpioButtonFxn0); /* Enable interrupts */ GPIO_enableInt(CONFIG_GPIO_KEY_INPUT); /* * If more than one input pin is available for your device, interrupts * will be enabled on CONFIG_GPIO_BUTTON1. */ // if (CONFIG_GPIO_BUTTON_0 != CONFIG_GPIO_BUTTON_1) // { // /* Configure BUTTON1 pin */ // GPIO_setConfig(CONFIG_GPIO_BUTTON_1, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING |GPIO_CFG_SHUTDOWN_WAKE_LOW); // // /* Install Button callback */ // GPIO_setCallback(CONFIG_GPIO_BUTTON_1, gpioButtonFxn1); // GPIO_enableInt(CONFIG_GPIO_BUTTON_1); // } return (NULL); }
能用的IO口我都尝试了一遍,只发现IO25不能输出高电平。你们可以试一下,看看IO25能不能输出高电平。
修改驱动层配置?我只是简单的在syscfg配置了引脚,然后在函数里面调用GPIO_write,可以看我上面提供的代码,跟其他IO口是一样的配置,只有IO25拉不高。你们测试的时候能拉高吗?
我新建gpiointerrupt发现IO25可以拉高,原先用的是basic_ble例程使用的是从机模式,在里面配置的IO25拉不高电平,关于是否修改过驱动层我也不太清楚,请问如果修改了,我该怎么查看并恢复?
查看了DIO25引脚并没有特殊之处,昨天我这边测试是可以拉高的,DIO25可以输出高电平。
您是如何在syscfg进行配置的,可以放个图片上来吗?
我看您代码中配置了三个参数,启用上拉电阻/中断下降沿触发/低电平唤醒系统。
驱动层代码是无法修改的,如果您在改动驱动层代码,会有一个弹窗提示您;就算改动了下次编译会恢复至驱动层的原本代码。
截图中我开启了Value Inversion,和Initial Output State 设置为high,我也尝试了取消勾选Value Inversion,和Initial Output State 设置为low,测试结果一样,都是低电平
新建gpiointerrupt发现IO25可以拉高,原先用的是basic_ble例程使用的是从机模式,在里面配置的IO25拉不高电平
关于您描述的两种情形,新建例程gpiointerrupt或basic_ble,DIO25可以拉高不会出现异常。
新建了一个basic_ble,发现IO25也可以拉高,但是重新试了原先的工程还是拉不高
原先的工程修改过哪些地方?DIO25引脚有特殊用处吗?
最好的方式还是对比新建工程和原来的工程有什么区别。
如果方便的话,您可将两个工程文件夹发送至我的邮箱。
我会使用beyong compare工具软件工具对比看看。
您好,
我使用beyond compare软件,对比了您发我的两个工程simple_peripheral_tc2和basic_ble,您可以在邮箱看到两个工程文件不同之处。
查看下来,您在工程上修改过很多地方,包括common 文件夹也进行了很多修改。
我们使用beyond compare软件或这种可追溯修改的工具时,不希望看到那么多不同的文件,会增大查找难度。
这边回顾了您问题出现的流程,给出以下几点建议:
1.在不要勾value inversion的情况下,重新烧录看下。
2.从您的程序一点一点还原成例程,或者从例程一点一点加东西成您想要的的程序。
3.着重看下这三条注释的代码,可能是问题出现的原因。
4.如果还不行,您可以更详尽地描述您在syscfg修改的过程,我这边尝试一比一还原,观察下来应该是syscfg的问题比较大。
1.您新建一个工程,只对GPIO进行配置和修改(拉高DIO25),是没有问题的吗?
2.目前来说,在有蓝牙透传项目的基础上修改GPIO会出现异常,是这样的吗?