【问题标题】:Button activated UART message按钮激活的 UART 消息
【发布时间】:2019-07-09 02:48:58
【问题描述】:

“我正在尝试使用按钮,当它被按下时,它会触发通过 UART 发送字符串消息,但是在运行代码时,它总是检测到按钮是“始终按下”,这并不理想。我需要帮助修复我的代码。 非常感谢。

我正在使用 EasyPIC fusion v7。该器件是 P32MX795F512L @80MHz。我正在使用适用于 PIC32 的 MikroC pro 作为我的 IDE。”

“此代码使用按钮和 UART 库。”

char read;
unsigned int oldstate;


void main() {
  AD1PCFG = 0XFFFF;             //SETTING AN INPUTS AS DIGITAL I/O
  JTAGEN_bit = 0;               //disable JTAG


  UART2_Init(9600);
  Delay_ms(1000);
  TRISA = 1;                    //setting All portA as inputs

  UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle);    //Sets UART2 as active
  UART_Write_Text("UART is now ready.");
  UART_Write(13);
  UART_Write(10);

   while(1)
   {
    if (Button(&PORTA, 15, 1 ,1))            //detect if button is pressed
    {
        UART_Write_Text("Button is pressed.");
        UART_Write(13);
        UART_Write(10);
        oldstate = 1;

    }

    if (oldstate && Button(&PORTA, 15, 1, 0)) //detect from logic 1 to 0
    {
        UART_Write_Text("Button is pressed again.");
        UART_Write(13);
        UART_Write(10);
        oldstate = 0;

    }
   }
}

“我只了解了 UART 的工作原理以及 Button 库的工作原理。

我希望在第一次按下按钮时输出是“按下按钮”,然后当我再次按下同一个按钮时输出是“再次按下按钮”。

代码的输出始终是“按钮被按下”并连续打印”

【问题讨论】:

  • 按下按钮时是否停止?可能是按钮的类型。
  • 你能提供一个链接到所使用的 Button 和 Uart 库
  • 你确定你不是简单地错过了打印“再次”行的(单个)迭代吗?您“再次”在块打印中重置 oldstate
  • 它不会停止。我现在的解决方案是指定哪个端口是输入(RA15)。明天我会试试你的建议。非常感谢

标签: c pic32 mikroc


【解决方案1】:

您的代码的主要问题是这一行:

UART_Write_Text("Button is pressed again.");

实际上应该是:

UART_Write_Text("Button is RELEASED.");

除此之外,如果您没有通过下拉电阻将 RA15 引脚连接到 GND,您可能会遇到硬件问题。您也可以在 PIC 上使用internal pull-ups

【讨论】:

  • 我现在找到的解决方案是将特定端口(RA15)设置为输入。但明天我会尝试设置内部上拉电阻。非常感谢。
  • 既然你提到了,我觉得你的TRISA=1应该是TRISA = 0b11111111或者TRISA = 0xFF吧?
  • 是的,我已经了解了使用“1”和使用“0xFFFF”的区别。似乎只有在指定要使用的端口时才必须使用“1”。非常感谢您的支持!
【解决方案2】:

问题出在这里:

TRISA = 1;

这与TRISA = 0x0001; 类似,只会使端口 A0 成为输入。你必须写:

TRISA = 0xFFFF;`

【讨论】:

  • 是的,这就是我现在学到的。我认为使用“1”的正确方法是指定我将使用的端口(TRISA15_bit = 1)。非常感谢您的回答。我还在学习,我想我还有很长的路要走
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多