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.

[参考译文] C2000 TMS320F28027按钮状态问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1195058/c2000-tms320f28027-button-status-problem

您好!

很抱歉为您提出一个简单的问题。 我正在尝试在 C2000 F28027上执行按钮示例、我正在使用 GPIO12按钮。 但系统无法正常工作。 每当我按下按钮时、系统输入状态始终为"1"。

我复制了代码。 我是不是犯了个错误?

此致、

#include "DSP28x_Project.h"

#define BUTTON_GPIO  GpioDataRegs.GPADAT.bit.GPIO12

void main(void){

#ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif

    InitSysCtrl();

    EALLOW;

    GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;

    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
    GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
    GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
    GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;

    GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
    GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
    GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;
    GpioCtrlRegs.GPADIR.bit.GPIO3 = 1;

    GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;  
    GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; 
    GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1;  

    EDIS;

    int status;

    while(1){

     status = BUTTON_GPIO;

    if (BUTTON_GPIO == 1){
        GpioDataRegs.GPASET.bit.GPIO0 = 1;
        GpioDataRegs.GPASET.bit.GPIO1 = 1;
        GpioDataRegs.GPASET.bit.GPIO2 = 0;
        GpioDataRegs.GPASET.bit.GPIO3 = 0;
    }

    else{
        GpioDataRegs.GPASET.bit.GPIO0 = 0;
        GpioDataRegs.GPASET.bit.GPIO1 = 0;
        GpioDataRegs.GPASET.bit.GPIO2 = 1;
        GpioDataRegs.GPASET.bit.GPIO3 = 1;
    }
    }
}

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

    您好、Fithi、

    您似乎正在将 GPIO12的 GPAMUX1配置为1、这对于 GPIO 配置不正确。 如果要将该引脚用作 GPIO、则必须将该位设置为0。 您可以在 技术参考手册的 GPIO 端口 A MUX 1 (GPAMUX1)寄存器部分确认这一点。

    此致、

    Omer Amir

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

    您好、Omar、

    我也是根据你的建议做了同样的事情。 但它不再起作用。

        GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;  // GPIO12 = TZ1
        GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // asynch input
        GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;
        GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;   // Enable pullup on GPIO12

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

    您好、Fithi、

    您是否通过示波器确认按下按钮会施加电压? 您是否已检查电压电平并按下按钮足够长时间?

    此致、

    Omer Amir