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.

[参考译文] 编译器/CC2538-SW:可以使用GPIOWrite将PB1设置为高

Guru**** 2538950 points
Other Parts Discussed in Thread: CC2592, CC2590, CC2591

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/571227/compiler-cc2538-sw-can-t-set-pb1-high-using-gpiowrite

部件号:CC2538-SW
主题中讨论的其他部件:CC2592CC2590CC2591

工具/软件:TI C/C++编译器

这是奇怪的,但是是真的。 默认格式的SampleSwitch代码正在协调器配置中使用。  

Zmain.c中:

#ifdef测试
varhigh = GPIOPinRead (GPIO _B_BASE,GPIO PIN_1);//GPIODIModeGet (GPIO _B_BASE,GPIO PIN_1);
GPIOPinIntDisable (GPIO _B_BASE,GPIO PIN_1);
GPIODIRModeSet (GPIO _B_BASE,GPIO PIN_1,GPIO DIR_MODE_OUT);

GPIOPinTypeGPIOOutput (GPIO _B_BASE,GPIO PIN_1);//EN为PB1
同时(1)
{
//GPIOPinWrite (GPIO_B_B_BASE,GPIO PIN_1,1);//EN变为高电平--这不起作用
GPIOPinWrite (MYBASE,MY_EN,1);//--这不起作用
//HAL_TON_LED2 ();
//GPIOPinWrite (GPIO _C_BASE,0x0.0008万,1);//LED4为PC3
i=0;
同时(I<5万)
{//什么都没有
I++;
}
varhigh = GPIOPinRead (GPIO _B_BASE,GPIO PIN_1);//GPIODIModeGet (GPIO _B_BASE,GPIO PIN_1);
//GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平}
GPIOPinWrite (MYBASE,MY_EN,0);
//HAL_Turn关闭_LED2();
//GPIOPinWrite (GPIO _C_BASE,0x0.0008万,0);//LED4为PC3
i=0;
同时(I<5万)
{//什么都没有
I++;
}
varlow= GPIOPinRead (GPIO _B_BASE,GPIO PIN_1);
}
#endif

在上述代码中,GPIOWrite命令从不起作用,GPIORead起作用,可以轻松读取输入而不会出现任何问题。 编写PC3(LED_4)可以使用HAL_TON/OFF/TOGGLE命令轻松编写。 我无法理解的是,为什么我无法使用GPIOPinWrite API命令写入任何GPIO (尝试PC3和PB1)。

请帮助

 

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

    因此,您在该函数中对HAL_TUN_ON_LED4()的调用是有效的,但对GPIOPinWrite(GPIO_C_BASE,GPIO PIN_3, 1)的调用不起作用? HAL_TUN_ON_LED4()只是一个宏,它被替换为一个函数,它在运行时与后者等效,所以我看不出这是怎么可能的。 此外,您是否定义了以下宏? 它们更改宏HAL_TON_LED4()的行为:

    HAL_PA_LNA
    HAL_PA_LNA_CC2592
    HAL_PA_LNA_CC2590
    Mac_Runtime_CC2591
    Mac_Runtime_CC2592
    Mac_Runtime_CC2590
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Jason。 你的观点是正确的。 预处理程序列表中未定义这些宏。 读取引脚的过程很顺利,但引脚既不能定义为输出,也不能写入它来切换它。它在步进至之前保持高位 GPIOPinWrite (MYBASE,MY_EN,1);//--这不起作用
    在执行了这条线之后,它会变低,永远保持低
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题已解决! GPIOPinWrite(GPIO_B_B_BASE,GPIO PIN_0,1 )工作正常,但GPIOPinWrite(GPIO_B_B_BASE,GPIO PIN_1,1)不能用作第三个参数'1'表示0x0.0001万,而GPIO PIN_1预期'2'为第三个参数,因为'2'表示0x0.001万。 或者,我们可以将GPIO PIN_X,GPIO PIN_X写入第二个和第三个参数,以写入引脚X高电平。 以下代码运行正常(在zmain.c中)。

    ...
    外部UINT32_t varhigh =0;
    外部UINT32_t varlow=0;
    外部UINT32_t cntvar=0;
    /************************************************************************
    *本地定义
    */
    ...

    ...
    /************************************************************************
    *本地功能
    */

    静态void zmain_dev_info( void );
    static void zmain_ext_addr( void );

    静真空氦低压(void);
    ...

    ...
    /*在LCD上显示设备信息*/
    #ifdef lcd_supported
    zmain_dev_info();
    zmain_lcd_init();
    #endif

    #ifdef LCD3
    HelloWorld();
    同时(1)
    {}//*/
    #endif
    ...

    ...
    #ifdef LCD3
    静真空氦低压( void )

    varhigh = GPIOPinRead (GPIO _B_BASE,GPIO PIN_1);
    GPIOPinTypeGPIOOutput (GPIO _C_BASE,GPIO _PIN_2|GPIO _PIN_3);//PC2是RS,PC3是RW。LED4是PC3

    GPIOPinTypeGPIOOutput (GPIO _B_BASE,GPIO PIN_1);//PB1为EN

    GPIOPinTypeGPIOOutput(GPIO_A_BASE,GPIO PIN_6|GPIO PIN_7);//PA6为DB4,PA7为DB5
    GPIOPinTypeGPIOOutput (GPIO _D_BASE,GPIO _PIN_4|GPIO _PIN_5);//PD4为DB6,PD5为DB7
    //D3与D0绑定到地面,数据/命令一次传输1位,4位半字节。
    //while (1)
    //{
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN 3,0);//RW变低
    //0 0 0 0 1 0 0 0 0 0 0设置为4位操作(注意:1半字节操作)
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,GPIO PIN_7);//D5为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒

    //下一步命令
    // 0 0 0 0 1 0 - 0 0 0 0 0功能集,8位
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,GPIO PIN_7);//D5为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    //01 0 0 0 0 0 0 0 0 2个半字节
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN 5,1);//D7为1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒

    //下一步命令
    // 0 0 0 0 0 0 0 0 0 0显示打开,光标打开,光标闪烁
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    //0 1 1 1 1 1 - 0 0 0 0 2半字节
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,GPIO PIN_5);//D7为1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,GPIO PIN_4);//D6为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,GPIO PIN_7);//D5为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,GPIO PIN_6);//D4为1
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒

    //下一步命令
    //0 0 0 0 0 0 0 0 0 0进入模式,增加光标位置,无显示偏移
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    //0 0 1 1 0 - 0 0 0 0 2个半字节
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,0);//RS转至0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,GPIO PIN_4);//D6为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,GPIO PIN_7);//D5为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒

    用于(varhigh = 0;varhigh <4;varhigh ++)

    //数据'H'
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,GPIO PIN_2);//RS GOES 1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,GPIO PIN_4);//D6为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    // 1 1 0 0 0 0 0 0 2个半字节
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,GPIO PIN_2);//RS GOES 1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,GPIO PIN_5);//D7为1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,0);//D6为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒

    //数据'E'
    //1 0 1 1 0 - 0 0 0 0 e
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,GPIO PIN_2);//RS GOES 1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,GPIO PIN_4);//D6为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,GPIO PIN_7);//D5为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,0);//D4为0
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    //1 0 1 0 1 1 - 0 0 0 0 2半字节
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,GPIO PIN_1);//EN变为高电平
    GPIOPinWrite (GPIO _C_BASE,GPIO PIN_2,GPIO PIN_2);//RS GOES 1
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_5,0);//D7为0
    GPIOPinWrite (GPIO _D_BASE,GPIO PIN_4,GPIO PIN_4);//D6为1
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_7,0);//D5为0
    GPIOPinWrite (GPIO _A_BASE,GPIO PIN_6,GPIO PIN_6);//D4为1
    GPIOPinWrite (GPIO _B_BASE,GPIO PIN_1,0);//EN变为低电平
    for (cntvar=0;cntvar<5000;cntvar++){};//等待31毫秒
    //}
    }
    //数据"l"

    }
    #endif