embox

Форк
0
/
k1921vk035_io_request1.c 
56 строк · 1.7 Кб
1
#include <drivers/serial/uart_dev.h>
2
#include <drivers/serial/diag_serial.h>
3
#include <drivers/gpio/gpio.h>
4
#include <drivers/ttys.h>
5
#include "errno.h"
6
#include "kernel/irq_lock.h"
7
#include "plib035_uart.h"
8
#include "semaphore.h"
9
#include "time.h"
10
#include "util/ring_buff.h"
11
#include <embox/unit.h>
12
#include <kernel/time/ktime.h>
13
#include <sys/uio.h>
14
#include <drivers/serial/k1921vk035_io_request.h>
15

16
#define BAUDRATE OPTION_GET(NUMBER, baudrate)
17
#define RX_BUFFER_SIZE OPTION_GET(NUMBER, rx_buffer_size)
18

19
#define UART1_RX_IRQn 30
20
#define UART1_E_RT_IRQn 32
21

22
extern const struct uart_ops k1921vk035_uart_ops;
23
extern irq_return_t uart_io_request_handler(unsigned int irq_nr, void *data);
24

25
RING_BUFFER_DEF(rx_ring_buff, char, RX_BUFFER_SIZE);
26

27
static struct uart uart_io_request1 = {
28
        .uart_ops = &k1921vk035_uart_ops,
29
        .irq_num = UART1_RX_IRQn,
30
        .base_addr = (uint32_t)UART1,
31
        .irq_handler = uart_io_request_handler,
32
        .params = {
33
            .baud_rate = BAUDRATE,
34
            .uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD | UART_PARAM_FLAGS_DEV_TYPE_UART |
35
                UART_PARAM_FLAGS_USE_IRQ | UART_PARAM_FLAGS_2_STOP | UART_PARAM_FLAGS_PARITY_EVEN,
36
        },
37
};
38

39
io_request_t io_request1 = {
40
    .type = IO_REQUEST_MODE_NONE,
41
    .mode = {},
42
    .rx_buff = &rx_ring_buff,
43
    .uart = &uart_io_request1,
44
};
45

46
EMBOX_UNIT_INIT(io_request1_init);
47

48
static int io_request1_init() {
49
    sem_init(&io_request1.semaphore, 0, 0);
50

51
    int retval = uart_register(&uart_io_request1, &uart_io_request1.params) || uart_open(&uart_io_request1);
52
    return retval;
53
}
54

55
STATIC_IRQ_ATTACH(UART1_RX_IRQn, uart_io_request_handler, &io_request1);
56
STATIC_IRQ_ATTACH(UART1_E_RT_IRQn, uart_io_request_handler, &io_request1);
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.