furi_hal_uart.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * @file furi_hal_uart.h
  3. * @version 1.0
  4. * @date 2021-11-19
  5. *
  6. * UART HAL api interface
  7. */
  8. #pragma once
  9. #include <stddef.h>
  10. #include <stdint.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. /**
  15. * UART channels
  16. */
  17. typedef enum {
  18. FuriHalUartIdUSART1,
  19. FuriHalUartIdLPUART1,
  20. } FuriHalUartId;
  21. /**
  22. * UART events
  23. */
  24. typedef enum {
  25. UartIrqEventRXNE,
  26. UartIrqEventIDLE,
  27. //TODO: more events
  28. } UartIrqEvent;
  29. /**
  30. * Init UART
  31. * Configures GPIO to UART function, сonfigures UART hardware, enables UART hardware
  32. * @param channel UART channel
  33. * @param baud baudrate
  34. */
  35. void furi_hal_uart_init(FuriHalUartId channel, uint32_t baud);
  36. /**
  37. * Deinit UART
  38. * Configures GPIO to analog, clears callback and callback context, disables UART hardware
  39. * @param channel UART channel
  40. */
  41. void furi_hal_uart_deinit(FuriHalUartId channel);
  42. /**
  43. * Changes UART baudrate
  44. * @param channel UART channel
  45. * @param baud baudrate
  46. */
  47. void furi_hal_uart_set_br(FuriHalUartId channel, uint32_t baud);
  48. /**
  49. * Transmits data
  50. * @param channel UART channel
  51. * @param buffer data
  52. * @param buffer_size data size (in bytes)
  53. */
  54. void furi_hal_uart_tx(FuriHalUartId channel, uint8_t* buffer, size_t buffer_size);
  55. /**
  56. * Sets UART event callback
  57. * @param channel UART channel
  58. * @param callback callback pointer
  59. * @param context callback context
  60. */
  61. void furi_hal_uart_set_irq_cb(
  62. FuriHalUartId channel,
  63. void (*callback)(UartIrqEvent event, uint8_t data, void* context),
  64. void* context);
  65. #ifdef __cplusplus
  66. }
  67. #endif