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.

[参考译文] TM4C129ENCPDT:如何设置 GPIO 引脚具有输入

Guru**** 2618015 points

Other Parts Discussed in Thread: EK-TM4C129EXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/782996/tm4c129encpdt-how-to-set-the-gpio-pin-has-input

器件型号:TM4C129ENCPDT
Thread 中讨论的其他器件:EK-TM4C129EXL

你(们)好  

我正在使用 EK-TM4C129EXL 评估套件。 如何将 PN2和 PN3设置为输入引脚??? 要检测的 GPIO 引脚输入电压是多少???? 我是否应将3.25伏作为 GPIO 引脚的输入电压?

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

    在数据表中,它提到快速 GPIO 引脚高输入电压最小值为-0.35*Vdd 至最大值为-4。 因此、GPIO 引脚的输入电压为3.25V 、因为它在该范围内。 是否可以检测到信号或我提供了4 v??。 有一点怀疑。 请加以澄清。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我正在使用基于 USRSWR 的 EK-TM4C129EXL 评估套件、将值从0递增到100、递增1
    //使用用户开关按钮0测试呼叫
    GPIO_setCallback (Board_BUTTON 0、targetActualAppRstFxn);

    /*启用中断*/
    GPIO_enableInt (Board_BUTTON0);

    和 SET
    GPIO_PinConfig gpioPinConfigs[]={
    /*输入引脚*/
    /* EK_TM4C129EXL_USR_SW1 */
    GPIOTIVA_PJ_0 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、

    在这个概念中、当我按下按钮时、它会递增并正常工作。

    但基于相同的概念、我将 PN2用作输入引脚、并配置为与上述相同、但将3.3V 稳压输出直接连接到此引脚、而不使用开关按钮、 但无论我在电路中还是在代码中犯了什么错误,它都不会递增。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Nishitha、

    关于输入电压检测、您将看到 GPIO 检测到引脚上的"高电平"、该引脚的 VDD 至少为0.65 * VDD (在3.3V 拉电压系统中为2.145V)、最高为4V。 您希望避免将电压置于接近上限的位置、因为4V 是 GPIO 的绝对最大容差、任何高于该容差的电压(指定的 USB 引脚除外)都有可能损坏器件。

    0.35 * VDD 的最低电平意味着该电压或低于该电压的任何值都将被检测为"低电平"。 因此、对于3.3V 电源系统、1.155V 或更低电压下的任何电压都将被视为低电平。

    3.25V 可以用于测试是否可以检测到高电平。

    关于您的代码问题、您能否为按钮初始化发布完整代码以及为 GPIO 初始化发布不起作用的完整代码、以便我可以比较并查看是否可以注意到该问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、先生、

    非常感谢您的回复... 我了解了电压触发的概念。 但在我的代码中、它不会触发中断。 我不知道我在哪里犯了错误..  

    /*  
    * ==== taAppCounterTaskFxn ===
    * 这是由任务管理的任务函数。 它的使用
    * 定期检查 GPIO 引脚是否用于目标/实际应用
    * 递增和复位中断
    * Task_sleep 由 arg0确定、它是什么
    *
    * **/

    GPIO_PinConfig gpioPinConfigs[]={
    /*输入引脚*/ 用户开关中断
    /* EK_TM4C129EXL_USR_SW1 */
    GPIOTIVA_PJ_0 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、
    /* EK_TM4C129EXL_USR_SW2 */
    GPIOTIVA_PJ_1 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、

    /*输出引脚*/
    /* EK_TM4C129EXL_USR_D1 */
    GPIOTIVA_PN_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    /* EK_TM4C129EXL_USR_D2 */
    GPIOTIVA_PN_0 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、

    我们添加了  
    ***/

    /*输出引脚*/
    /* EK_TM4C129EXL_PL1 */
    GPIOTIVA_PL_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    /* EK_TM4C129EXL_PL2 */
    GPIOTIVA_PL_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、

    /*输入引脚*/(中断)
    /* EK_TM4C129EXL_PN2 */
    GPIOTIVA_PN_2 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、  
    /* EK_TM4C129EXL_PN3 */
    GPIOTIVA_PN_3 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、


    空 taAppCounterTaskFxn (UARg arg0、UARg arg1)

        while (1)
      {


        /* 2.1 */
        GPIO_setCallback (Board_counter_RST、targetActualAppRstFxn);//我们添加了  

        //使用用户开关按钮0测试呼叫
        //GPIO_setCallback (Board_BUTTON0、targetActualAppRstFxn);//板  

        /*启用中断*/
        GPIO_enableInt (Board_counter_RST);//我们添加了  
        //GPIO_enableInt (Board_BUTTON0); //板

        /* 2.2 */
        /*安装按钮回调*/
        GPIO_setCallback (Board_counter_INC、targetActualAppInsFxn);//我们添加了  

        //使用用户开关按钮1测试呼叫
        //GPIO_setCallback (Board_Button1、targetActualAppIncFxn);//板  

        /*启用中断*/
        GPIO_enableInt (Board_counter_INC);//we added  
        //GPIO_enableInt (Board_Button1);//板


        //每20ms 或为 main()中的 arg0指定一次调用此任务
        Task_sleep (unsigned int) arg0);
      }


    /*
    * ==== 心跳任务 BeatFxn ===
    * 这是由任务管理的任务函数。 它的使用
    * 以指定的时钟节拍数定期运行行扫描
    * 基于扫描要求。
    * Task_sleep 由 arg0确定、它是什么
    * 已针对心跳任务实例进行配置。
    *
    空心跳任务 Fxn (UARg arg0、UARg arg1)

      while (1)
      {
        System_printf (" BeatheFxn 正在运行.. \n");
        /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
        system_flush();


        // 1. 执行行扫描并通过 SPI 向 LED 驱动器发送数据
        ledDispRowScanFxn();


        //完成所有任务功能后,进入睡眠状态
        Task_sleep (unsigned int) arg0);
        //GPIO_TOGGLE (Board_LED0);
      }



    /*
    * ==== main ====
    *
    int main (空)

      Task_handle taskHandle1;
      Task_Params 任务参数1;
      ERROR_Block EB;
      Task_handle taskHandle2;
      Task_Params taskParams2;

      /*呼叫板初始化函数*/
      Board_initGeneral();
      Board_initGPIO();
      Board_initEMAC();
      Board_initSPI();

      System_printf ("心搏功能任务已创建\n");
      /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
      system_flush();

      //创建 LED 显示应用任务
      /* Init the Error_Block */
      ERROR_INIT (&EB);

      /*为心搏 fxn 创建一个任务,用于显示扫描*
      /*初始化默认值并设置参数。 *
      Task_Params_init (&taskParams1);
      taskParams1.arg0 = 1;
      taskParams1.STACKSIZE = task_stack_size;
      taskParams1.priority = 15;
      taskHandle1 = Task_create ((Task_FuncPtr)心跳任务 Fxn、&taskParam1、&EB);
      if (taskHandle1 = NULL){
        System_printf ("错误:创建新任务失败\n");
        /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
        system_flush();
      }

      /*为目标/实际应用特定计数器增量创建任务并重置*/
      /*初始化默认值并设置参数。 *
      Task_Params_init (&taskParams2);
      taskParams2.arg0 = 200;
      taskParams2.STACKSIZE = task_stack_size;
      taskParams2.priority = 10;
      taskHandle2 = Task_create ((Task_FuncPtr) taAppCounterTaskFxn、&taskParams2、&EB);
      if (taskHandle2 = NULL){
        System_printf ("错误:创建新任务失败\n");
        /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
        system_flush();
      }


      /*启动 BIOS */
      BIOS_start();

      返回(0);

     

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

    Nishitha、

    您是否还可以发布修改后的 Board.h 和 EK_TM4C129EXL.c 文件?

    您使用的是哪个版本的 TI-RTOS?

    如果您没有,可以尝试将这些引脚保持在高电平和低电平状态,并通过 GPIO_READ()读取电平。  您是否按预期读取了不同的逻辑电平?  这将有助于缩小基本配置与获取中断之间的问题。

    谢谢、
    Scott

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    感谢您的回复、我们在 GPIO_PinConfig gpioPinConfigs[]和遗漏的 GPIO 回调数组索引序列中发现了该问题。 因此、只有中断未生成、现在其工作正常。 非常感谢您的支持
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们未能阅读此注释:因此仅出现问题
    *引脚配置阵列
    *注意:引脚配置的顺序必须与 EK_TM4C129EXL.h 中定义的顺序一致