#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#define BUTTON 25
const uart_port_t uart_num = UART_NUM_0;
// Setup UART buffered IO with event queue
const int uart_buffer_size = (1024 * 2);
QueueHandle_t uart_queue;
TaskHandle_t xHandle = NULL;
void ButtonInit(){
gpio_reset_pin(BUTTON);
gpio_set_direction(BUTTON, GPIO_MODE_INPUT);
//gpio_set_level(BUTTON);
}
/*void IRAM_ATTR(){
}
*/
void uartInit(){
uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_CTS_RTS,
.rx_flow_ctrl_thresh = 122,
};
// Configure UART parameters
ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_config));
// Install UART driver using an event queue here
ESP_ERROR_CHECK(uart_driver_install(UART_NUM_0, uart_buffer_size, uart_buffer_size, 10, &uart_queue, 0));
}
void uartPuts(char data[]){
uart_write_bytes(uart_num, (const char*)data, strlen(data));
}
void uartGets(uint8_t*data[]){
int length = 0;
while(!length){
ESP_ERROR_CHECK(uart_get_buffered_data_len(uart_num, (size_t*)&length));
}
length = uart_read_bytes(uart_num, data, length, 100);
data[length-1] = 0;
}
void vTaskCode( void * pvParameters )
{
char M[26];
char KEY[5];
char KEYY[5];
char C = 2;
//ABCDEFGHIJKLMNOPQRSTUVWXYZ
uartPuts("Cadena: \n");
uartGets((uint8_t*)M);
uartPuts(M);
uartPuts("\n");
uartPuts("KEY: \n");
uartGets((uint8_t*)KEY);
//uartPuts("Resultado: \n");
uartPuts("La posicion de ");
uartPuts(KEY);
uartPuts("es ");
vTaskSuspend( xHandle );
}
void app_main() {
uartInit();
ButtonInit();
//uartPuts("Hello, Wokwi!\n");
//uartGets(uint8_t)
xTaskCreate( vTaskCode, "vTaskCode", 2*(2*1024), NULL, 1, NULL );
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
/*Entradas:
M = ACELERACION
KEY = D
El programa despliega en la terminal:
Resultado: DFJUYPPRZNA */
/*
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
K 10
L 11
M 12
N 13
O 14
P 15
Q 16
R 17
S 18
T 19
U 20
V 21
W 22
X 23
Y 24
Z 25
*/