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.

[参考译文] CC3220SF:错误 SDK 3、GPIO 04中断在新 SDK 中不起作用

Guru**** 2589300 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/825272/cc3220sf-error-sdk-3-gpio-04-interrupt-does-not-work-in-the-new-sdk

器件型号:CC3220SF

您好!

GPIO 04中断在新 SDK 中不起作用

simplelink_cc32xx_sdk_3_10_00_04

simplelink_cc32xx_sdk_3_20_00_06

运行良好的 SDK

simplelink_cc32xx_sdk_2_10_00_04

simplelink_cc32xx_sdk_2_40_02_00

int but1_test;
int but2_test;
int but3_test;


void * mainThread (void * arg0)

ControlManagerInitBUT1();
ButtonInterruptDisableBUT1 ();
ButtonInterruptRestorartBUT1();

ControlManagerInitBUT2();
ButtonInterruptDisableBUT2();
ButtonInterruptRestorartBUT2();

ControlManagerInitBUT3();
ButtonInterruptDisableBUT3 ();
ButtonInterruptRestorartBUT3();

UART_PRINT ("开始测试\n"r);
while (1){
if (but1_test = 1){
UART_PRINT ("BUT1\n"r);
但是_test = 0;
ButtonInterruptRestorartBUT1();
睡眠(1);

if (but2_test = 1){
UART_PRINT ("\t BUT2\n"\});
but2_test = 0;
ButtonInterruptRestorartBUT2();
睡眠(1);

if (but3_test = 1){
UART_PRINT ("\t\tTsen\n"\});
but3_test = 0;
ButtonInterruptRestorartBUT3();
睡眠(1);



void ControlManagerInitBUT1 (void){
GPIO_setCallback (CC3220SF_LAUNCHXL_GPIO_BUT1、pushButtonInterruptHandlerBUT1);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT1);

void ButtonInterruptRestorartBUT1 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT1);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT1);

void ButtonInterruptDisableBUT1 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT1);
GPIO_DisableInt (CC3220SF_LAUNCHXL_GPIO_BUT1);

void pushButtonInterruptHandlerBUT1 (uint_least8_t 索引){
ButtonInterruptDisableBUT1 ();
但是_test=1;


void ControlManagerInitBUT2 (void){
GPIO_setCallback (CC3220SF_LAUNCHXL_GPIO_BUT2、pushButtonInterruptHandlerBUT2);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT2);

void ButtonInterruptRestorartBUT2 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT2);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT2);

void ButtonInterruptDisableBUT2 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT2);
GPIO_DisableInt (CC3220SF_LAUNCHXL_GPIO_BUT2);

void pushButtonInterruptHandlerBUT2 (uint_least8_t 索引){
ButtonInterruptDisableBUT2();
but2_test=1;

void ControlManagerInitBUT3 (void){
GPIO_setCallback (CC3220SF_LAUNCHXL_GPIO_BUT3、pushButtonInterruptHandlerBUT3);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT3);

void ButtonInterruptRestorartBUT3 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT3);
GPIO_enableInt (CC3220SF_LAUNCHXL_GPIO_BUT3);

void ButtonInterruptDisableBUT3 (void){
GPIO_clearInt (CC3220SF_LAUNCHXL_GPIO_BUT3);
GPIO_DisableInt (CC3220SF_LAUNCHXL_GPIO_BUT3);

void pushButtonInterruptHandlerBUT3 (uint_least8_t 索引){
ButtonInterruptDisableBUT3 ();
but3_test=1;


GPIO_PinConfig gpioPinConfigs[]={
/*带有回调的输入引脚*/
/* CC3220SF_LAUNCHXL_GPIO_BUT1 *
GPIOCC32XX_GPIO_03 | GPIO_CFG_IN_PD | GPIO_CFG_IN_INT_INT_HIGH、

/* CC3220SF_LAUNCHXL_GPIO_BUT3*/
GPIOCC32XX_GPIO_11 | GPIO_CFG_IN_PD | GPIO_CFG_IN_INT_INT_HIGH、

/* CC3220SF_LAUNCHXL_GPIO_BUT2 *
GPIOCC32XX_GPIO_04 | GPIO_CFG_IN_PD | GPIO_CFG_IN_INT_INT_HIGH、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dima:

    我运行了您的代码、它的运行方式与您描述的一样- GPIO 4 (在 p59上)似乎不会触发任何中断。 但是、这是预期行为。 引脚59在插头引脚和 CC3220芯片之间具有滤波电路、以便更好地用作 ADC 输入。 这会干扰将其用作 GPIO。 如果要将引脚59用作 GPIO 输入、则需要移除滤波器。 有关说明、请访问 :https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/755851

    但是、使用另一个引脚而不是 p59会更简单。 通过将 GPIO4中使用的 GPIO 交换为 GPIO_17、我可以使代码正常工作。 请尝试更改 GPIO、看看这是否可以解决您的问题。

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在项目中使用处理器 CC3220SF。

    更改结论将不起作用。

    从 SDK2.10中、它正常工作。

    当切换到新的 SDK3.10时、GPIO_04 (59引脚)上的中断停止工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是使用 CC3220 Launchpad 还是使用自己的定制板?  

    当我更改 SDK 版本时、我看不到任何功能差异。 如果不从信号路径上断开 ADC 滤波器组件、引脚59将无法正常用作 GPIO 中断源。 我复制了您上面提供的确切代码、因此我也应该运行您在设置中拥有的代码。

    您是否曾尝试过从 GPIO4更改为其他 GPIO、正如我在上一篇文章中提到的、并查看这是否允许您在 SDK 版本3.20.0.xx 上看到正确的行为?

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    我是 Dima 的同事。

    我们使用自己的定制 PCB 设计、而不是 Launchpad、并且 GPIO3、GPIO4和 GPIO11上有清晰的分立式信号0或1.8V (我们使用的是1.8V 设计)。

    我们使用的是电平触发(而不是边沿)。 我们在 GPIO3、GPIO4和 GPIO11上具有相同的 IRQ 输入。

    使用 simplelink_cc32xx_sdk_2_40_02_00时、所有三个输入(GPIO3、GPIO4和 GPIO11)均正常工作。

    当我们升级到 simplelink_cc32xx_sdk_3_20_00_06时、GPIO3和 GPIO11仍然工作、但 GPIO4不工作。

    当我们将信号从 GPIO4重新路由到 GPIO3 (交换 GPIO3和 GPIO4)时、GPIO3正常工作、但 GPIO4不工作。

    当我们降级到 simplelink_cc32xx_sdk_2_40_02_00时、所有三个输入(GPIO3、GPIO4和 GPIO11)都可以再次正常工作。

    因此、我可以确认这是一个 SDK 问题、因为只有从 simplelink_cc32xx_sdk_2_40_02_00更改为 simplelink_cc32xx_sdk_3_20_00_06 (不做任何其他更改)会中断 GPIO4 IRQ、并且降级会使其再次工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我修改了一个 CC3220SF Launchpad 以从引脚59上断开 ADC 滤波器、从而在 Launchpad 上测试 GPIO4、无论我使用哪种 SDK 版本、我仍然看不到您看到的相同问题。 比较版本2.40和3.20之间的 GPIO 驱动程序时、似乎没有明显的变化。 我发现的唯一特定于 GPIO 驱动程序的更改是 在 GPIO_setCallback()中添加了完整性检查。 您可以尝试在 GPIO_setCallback()中注释掉以下代码,看看它是否会有所不同。

    /*
    *忽略伪回调索引。
    *防止超限回调访问 IF 所必需
    *配置了不带回调的引脚
    *
    if (index >= GPIOCC32XX_config.numberOfCallback){
    返回;
    } 

    若要将更改应用到工程、只需将修改后的 GPIOCC32XX.c 文件复制到工作区中、链接器将自动将这些 GPIO 函数与工作区中修改后的源代码链接、而不是 SDK 中的预编译驱动程序二进制文件。

    如何升级 SDK 版本? 您是更改 tirtos 项目使用的版本、还是使用其他方法?  

    最后、我在这里附加了我的 CCS 项目、以便您可以查看并试用它。 也许我的跑步与你的跑步有细微的不同。 如果您看到我应该改变的内容、以帮助我在结尾重复此内容、请告诉我。

    /cfs-file/__key/communityserver-discussions-components-files/968/gpiointerrupt_5F00_CC3220SF_5F00_LAUNCHXL_5F00_tirtos_5F00_ccs.7z

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在代码中发现了错误

    在 SDK 2中未经验证
    GPIO_CallbackFxn gpioCallbackFunctions []={
        空、/* CC3220SF_LAUNCHXL_GPIO_SW2 */
        空/* CC3220SF_LAUNCHXL_GPIO_SW3 */
    };

    因此它工作正常

    在 SDK 3中已检查,因此在添加后无法正常工作
    GPIO_CallbackFxn gpioCallbackFunctions []={
        空、/* CC3220SF_LAUNCHXL_GPIO_BUT1 */
        空、/* CC3220SF_LAUNCHXL_GPIO_BUT2 */
        空/* CC3220SF_LAUNCHXL_GPIO_BUT3 */
    };
    获得 VSO