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.

[参考译文] 尝试将 PF0解锁为输入时的 TM4C123GH6PM 问题(I#39;m 尝试使用按钮)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/596666/tm4c123gh6pm-problem-when-trying-to-unlock-pf0-as-input-i-m-trying-to-use-the-button

我使用的是 Tiva Launchpad。 我成功地解锁了 PF0、完成了一项简单的任务、即通过 sw0 (PF0)打开和关闭 LED。 但是、当我将该配置附加到我的现有工程时、它不起作用。 在我的当前项目中、我使用 PF4启动设置模式并更新设置(结束设置模式)。 在设置模式中、我使用 PF0来增加计数并将计数倒放至 LCD。 这是我的代码。 我的代码中是否有任何对 PF0的影响?

非常感谢您的 answers.e2e.ti.com/.../8360.main.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能详细说明一下您的问题吗? 我不清楚您的描述。 您尝试对 PF0和 PF4执行什么操作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    我已经回答了这张海报中的类似问题-也许我也可以在这里提供帮助...

    海报的代码块如下:

    void SW0Task (void)
    {
    if (!GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_0)
    ){
    if (SW4Install = 1)//测试# 1
    {
    Count++;
    int a、b;
    if (Count<10)
    {
    SetCursor _LCD (1、10);
    LCD_DATA ('0');
    0x30+LCD_A
    
    
    
    
    (
    1、000+100)
    
    ;LCD_Data=0x30);LCD_A (1、000+20_A);LCD_A (1、000+20_A);LCD_A (1、000+20_A);LCD_A (1、000+100 (1、000+100);LCD_
    
    }
    
    } 

    您的代码是否达到我确定的"测试#1"点?   如果是-您的代码已正确检测到 PF0。

    您(真的)是否确定引脚 PF0连接到 LPAD 上的开关?   (我似乎还记得、由于 PF0 (非传感器) NMI 默认值、因此避免了它)  [好的!]

    请注意、LPAD 的开关 或您的"用户提供的开关" 可能会抖动、这将导致变量"Count"的增量(次数)超过您的期望值。   一种简单的方法是延迟此功能、以便开关抖动间隔已过期...

    您的第一项工作是确定您是否在激活交换机时达到指定的测试点...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 ,你好 Charles,首先,很抱歉我的英语不好让你感到困惑,感谢你的帮助。
    ,当开关激活时,我无法到达该测试点,当我按下 SW4时,SW4Install 变量到达1 (我可以从表达式中看到)。
    我确定 PF0连接到 LPAD 上的右侧开关。 正如我说过的、它适用于简单的任务、即通过 LED 打开和关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问候语-如果您"无法到达测试点1"、则问题可能出在硬件或软件中-或两者兼而有之。

    您是否有一个示波器(理想情况下)或 DMM (用于监控 PF0)、这两个示波器都具有正确的(匹配)开关"已启动和未启动"? 进入 PF0的信号电平应在整个3V3电压电平之间"摆动"。

    一旦经过"测试/验证"(请幽默我-执行此操作-即使您报告(过去)成功)、您必须测试您的"如果陈述"(下面)是否符合您的愿望。 您的 IDE 应该使您能够监控 PF0 -它提供了"PF0"上拉"(您的代码显示)并对"开关激活"做出响应的"第二次独立确认"。 (假设 LPAD 切换为"接地驱动"。

    注意:如果 LPAD 的开关-连接到 PF0 -"激活时驱动至 VCC (3V3)"-您必须更改 PF0以包含"WPD"、而不是代码中显示的"WPU"!   (WPD =弱下拉电阻器)

    IF (!GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_0))

    请记住、大多数开关都倾向于"反弹"(即"保持和断开接触"-有时持续几毫秒。) 您必须在怀疑的"开关反弹间隔"内"防止"任何"返回"到该 IF 语句(现在在上面)。 (通过使用延迟)