STM32F4 是否可以从USART接收多个输入

问题描述 投票:0回答:1

我遇到了一个问题,我想从 stm32f4 中的 USART 接收多个输入 例如,如果我在键盘上按住 A、S、D(不松开 A 和 S),然后执行诸如打印出值之类的操作。

我知道 USART 只能接收一个输入,但有没有一种方法使用某种缓冲区或中断来模拟它至少像这样。 举个例子就好了。 谢谢!

c stm32 stm32f4 usart
1个回答
0
投票

无效服务USART2(无效){ 开关(g_usart2_buffer[g_usart2_ridx++]){

    case 0x61: //Slovo A
    { 
        note = 1;
        printUSART2("C");
        break;
    }
    case 0x77: // Slovo W
    {
        note = 2;
        printUSART2("Cis");
        break;
    }
    case 0x73: //Slovo S
    {
        note = 3;
        printUSART2("D");
        break;
    }
    case 0x65: //Slovo E
    {
        note = 4;
        printUSART2("Dis");
        break;
    }
    case 0x64: //Slovo D
    {
        note = 5;
        printUSART2("E");
        break;
    }
    case 0x66: // Slovo F
    {
        note = 6;
        printUSART2("F");
        break;
    }
    case 0x74: //Slovo T
    {
        note = 7;
        printUSART2("Fis");
        break;
    }
    case 0x67: //Slovo G
    {
        note = 8;
        printUSART2("G");
        break;
    }
    case 0x79: //Slovo Y
    {
        note = 9;
        printUSART2("Gis");
        break;
    }
    case 0x68: //Slovo H
    {
        note = 10;
        printUSART2("A");
        break;
    }
    case 0x75: //Slovo U;
    {
        note = 11;
        printUSART2("Ais");
        break;
    }
    case 0x6A: //Slovo J
    {
        note = 12;
        printUSART2("H");
        break;
    }
    case 0x6B: //Slovo K;
    {
        note = 13;
        printUSART2("C2");
        break;
    }
    case 0x20: //Space Bar
    {
        note = 0;
        printUSART2("PAUSE");
        break;
    }
    case 0x6D: //Octave Up
    {
        octave++;
        printUSART2("Octave Up");
        break;
    }
    case 0x6E: //Octave Down
    {
        octave--;
        printUSART2("Octave Down");
        break;
    }
    default:
    {
        break;
    }
}

}

无效 chkBuffUSART2(无效){

if(g_usart2_ridx != g_usart2_widx)
{
    serviceUSART2();
    
    if(g_usart2_ridx >= (USART2_BUFFER_SIZE))
    {
        g_usart2_ridx = 0;
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.