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.

[参考译文] TM4C123GH6PM:表达式必须是可修改的值

Guru**** 2439710 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/614165/tm4c123gh6pm-expression-must-be-a-modifiable-lvalue

器件型号:TM4C123GH6PM

我尝试将 GPIOF 端口配置为在 SW1 (端口 f 引脚4) 和 SW1 (端口 f 引脚0)时中断。 引脚0请求修改寄存器 CR 和 LOCK:

GPIOF->LOCK =0x4C4F434B;
GPIOF->CR |= 0x01;
SYSCTl->RCGCGPIO |=(1<<5);//启用端口 F 上的时钟
GPIOF->AFSEL =0x00;//&=~(0x1E);//配置为 GPIO 引脚、不是替代方法。
GPIOF->DIR =(0x0E);//输入(0)/输出(1)
GPIOF->DEN =(0x1F);//数字使能
GPIOF->PUR =(0x11);//上拉

GPIOF->IM =(0x00);//掩码
GPIOF->is =0x00;//edge_sensitive (0)/level_sensitive (1)//边缘触发
GPIOF->IBE = 0x00;//Controlled GPIOIEV (0)/双边沿(1)
GPIOF->IEV =(0x00);//下降沿-低电平(0)/上升沿-高电平(1)
GPIOF->RIS=(0x00);//清除中断
GPIOF->IM =(0x11);//取消屏蔽

但我收到了以下消息:表达式必须是 GPIOF->CR |= 0x01中可修改的值;

有人可以帮帮我吗?  

谢谢

PS:我使用的是 IAR Embedded WorBench IDE

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

    您的包含中是否包含以下内容?

    #include "inc/hw_types.h" /*用于 HWREG 的定义*/

    如果没有、请添加该代码并尝试再次编译。

    如果是、请发布完整的包含项列表。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到在任何位置定义的结构。 我不记得 TIVAware 中有任何这样的东西(在任何情况下都不是个好主意)、也找不到。

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

    我们强烈建议您使用 TivaWare 库例程、而不是像上面代码中那样直接写入寄存器。 这将提高您的效率、因为您将使用经过验证的代码、并且可以从其他论坛用户获得更轻松的支持。 例如,在本例中,您将使用对函数 GPIOIntTypeSet()的调用。 第 285页的驱动程序库文档中提供了一个示例。

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

    [引用 user="Robert Adsett">我在任何地方都看不到使用的结构。 我不记得 TIVAware 中有这样的情况(在任何情况下都不是个好主意)、也找不到它。[/quot]编码风格似乎使用 了 Tiva 的 CMSIS -因为快速看一下与 https://github.com/speters/CMSIS/blob/master/Device/TI/TM4C/Include/TM4C123GH6PM.h 中的结构定义相匹配 

    我参考 了 GitHub 上 Tiva 的非官方 CMSIS 版本,因为之前的线程建议 TI 不要维护 Tiva 的 CMSIS。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Boa tarde Guilherme、
    我强烈建议您擦除所有代码并使用 TivaWare API 来配置您的硬件。
    通过使用寄存器属性(如 MAJOR DE cabeça)、您唯一能实现的就是 MAJOR DOR DE。
    安装 Tivaware、查看/docs 文件夹、检查此 PDF 文件:SW-TM4C-DRL-UF-2.1.4.178
    在 Tiva 开发生命周期的剩余时间内保持开放!
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们似乎都同意了。

    对 OP 来说是一个小奖励、这是我使用的一段解锁代码。

    /***端口解锁-解锁端口,以便对其进行配置。
    ***/
    void PortUnlock (uint32_t port)
    {
    HWREG (端口+ GPIO_LOCK)= GPIO_LOCK_KEY;
    HWREG (端口+ GPIO_CR)= 0xFF;
    HWREG (端口+ GPIO_LOCK)= 0;
    } 

    将其展开以完成工作代码将作为读者的练习

    Robert

    我对 CMSIS 使用这样一种不安全的结构感到有点沮丧(不会让你感到震惊)。