furi_hal_resources.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #pragma once
  2. #include <furi.h>
  3. #include <stm32wbxx.h>
  4. #include <stm32wbxx_ll_gpio.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. /* Input Related Constants */
  9. #define INPUT_DEBOUNCE_TICKS 4
  10. /* Input Keys */
  11. typedef enum {
  12. InputKeyUp,
  13. InputKeyDown,
  14. InputKeyRight,
  15. InputKeyLeft,
  16. InputKeyOk,
  17. InputKeyBack,
  18. InputKeyMAX, /**< Special value */
  19. } InputKey;
  20. /* Light */
  21. typedef enum {
  22. LightRed = (1 << 0),
  23. LightGreen = (1 << 1),
  24. LightBlue = (1 << 2),
  25. LightBacklight = (1 << 3),
  26. } Light;
  27. typedef struct {
  28. const GpioPin* gpio;
  29. const InputKey key;
  30. const bool inverted;
  31. const char* name;
  32. } InputPin;
  33. extern const InputPin input_pins[];
  34. extern const size_t input_pins_count;
  35. extern const GpioPin vibro_gpio;
  36. extern const GpioPin ibutton_gpio;
  37. extern const GpioPin gpio_cc1101_g0;
  38. extern const GpioPin gpio_rf_sw_0;
  39. extern const GpioPin gpio_subghz_cs;
  40. extern const GpioPin gpio_display_cs;
  41. extern const GpioPin gpio_display_rst_n;
  42. extern const GpioPin gpio_display_di;
  43. extern const GpioPin gpio_sdcard_cs;
  44. extern const GpioPin gpio_sdcard_cd;
  45. extern const GpioPin gpio_nfc_cs;
  46. extern const GpioPin gpio_button_up;
  47. extern const GpioPin gpio_button_down;
  48. extern const GpioPin gpio_button_right;
  49. extern const GpioPin gpio_button_left;
  50. extern const GpioPin gpio_button_ok;
  51. extern const GpioPin gpio_button_back;
  52. extern const GpioPin gpio_spi_d_miso;
  53. extern const GpioPin gpio_spi_d_mosi;
  54. extern const GpioPin gpio_spi_d_sck;
  55. extern const GpioPin gpio_spi_r_miso;
  56. extern const GpioPin gpio_spi_r_mosi;
  57. extern const GpioPin gpio_spi_r_sck;
  58. extern const GpioPin gpio_ext_pc0;
  59. extern const GpioPin gpio_ext_pc1;
  60. extern const GpioPin gpio_ext_pc3;
  61. extern const GpioPin gpio_ext_pb2;
  62. extern const GpioPin gpio_ext_pb3;
  63. extern const GpioPin gpio_ext_pa4;
  64. extern const GpioPin gpio_ext_pa6;
  65. extern const GpioPin gpio_ext_pa7;
  66. extern const GpioPin gpio_nfc_irq_rfid_pull;
  67. extern const GpioPin gpio_rfid_carrier_out;
  68. extern const GpioPin gpio_rfid_data_in;
  69. extern const GpioPin gpio_rfid_carrier;
  70. extern const GpioPin gpio_infrared_rx;
  71. extern const GpioPin gpio_infrared_tx;
  72. extern const GpioPin gpio_usart_tx;
  73. extern const GpioPin gpio_usart_rx;
  74. extern const GpioPin gpio_i2c_power_sda;
  75. extern const GpioPin gpio_i2c_power_scl;
  76. extern const GpioPin gpio_speaker;
  77. extern const GpioPin periph_power;
  78. extern const GpioPin gpio_usb_dm;
  79. extern const GpioPin gpio_usb_dp;
  80. #define BUTTON_BACK_GPIO_Port GPIOC
  81. #define BUTTON_BACK_Pin LL_GPIO_PIN_13
  82. #define BUTTON_DOWN_GPIO_Port GPIOC
  83. #define BUTTON_DOWN_Pin LL_GPIO_PIN_6
  84. #define BUTTON_LEFT_GPIO_Port GPIOB
  85. #define BUTTON_LEFT_Pin LL_GPIO_PIN_11
  86. #define BUTTON_OK_GPIO_Port GPIOH
  87. #define BUTTON_OK_Pin LL_GPIO_PIN_3
  88. #define BUTTON_RIGHT_GPIO_Port GPIOB
  89. #define BUTTON_RIGHT_Pin LL_GPIO_PIN_12
  90. #define BUTTON_UP_GPIO_Port GPIOB
  91. #define BUTTON_UP_Pin LL_GPIO_PIN_10
  92. #define CC1101_CS_GPIO_Port GPIOD
  93. #define CC1101_CS_Pin LL_GPIO_PIN_0
  94. #define CC1101_G0_GPIO_Port GPIOA
  95. #define CC1101_G0_Pin LL_GPIO_PIN_1
  96. #define DISPLAY_CS_GPIO_Port GPIOC
  97. #define DISPLAY_CS_Pin LL_GPIO_PIN_11
  98. #define DISPLAY_DI_GPIO_Port GPIOB
  99. #define DISPLAY_DI_Pin LL_GPIO_PIN_1
  100. #define DISPLAY_RST_GPIO_Port GPIOB
  101. #define DISPLAY_RST_Pin LL_GPIO_PIN_0
  102. #define IR_RX_GPIO_Port GPIOA
  103. #define IR_RX_Pin LL_GPIO_PIN_0
  104. #define IR_TX_GPIO_Port GPIOB
  105. #define IR_TX_Pin LL_GPIO_PIN_9
  106. #define NFC_CS_GPIO_Port GPIOE
  107. #define NFC_CS_Pin LL_GPIO_PIN_4
  108. #define PA4_GPIO_Port GPIOA
  109. #define PA4_Pin LL_GPIO_PIN_4
  110. #define PA6_GPIO_Port GPIOA
  111. #define PA6_Pin LL_GPIO_PIN_6
  112. #define PA7_GPIO_Port GPIOA
  113. #define PA7_Pin LL_GPIO_PIN_7
  114. #define PB2_GPIO_Port GPIOB
  115. #define PB2_Pin LL_GPIO_PIN_2
  116. #define PB3_GPIO_Port GPIOB
  117. #define PB3_Pin LL_GPIO_PIN_3
  118. #define PC0_GPIO_Port GPIOC
  119. #define PC0_Pin LL_GPIO_PIN_0
  120. #define PC1_GPIO_Port GPIOC
  121. #define PC1_Pin LL_GPIO_PIN_1
  122. #define PC3_GPIO_Port GPIOC
  123. #define PC3_Pin LL_GPIO_PIN_3
  124. #define QUARTZ_32MHZ_IN_GPIO_Port GPIOC
  125. #define QUARTZ_32MHZ_IN_Pin LL_GPIO_PIN_14
  126. #define QUARTZ_32MHZ_OUT_GPIO_Port GPIOC
  127. #define QUARTZ_32MHZ_OUT_Pin LL_GPIO_PIN_15
  128. #define RFID_OUT_GPIO_Port GPIOB
  129. #define RFID_OUT_Pin LL_GPIO_PIN_13
  130. #define RFID_PULL_GPIO_Port GPIOA
  131. #define RFID_PULL_Pin LL_GPIO_PIN_2
  132. #define RFID_RF_IN_GPIO_Port GPIOC
  133. #define RFID_RF_IN_Pin LL_GPIO_PIN_5
  134. #define RFID_CARRIER_GPIO_Port GPIOA
  135. #define RFID_CARRIER_Pin LL_GPIO_PIN_15
  136. #define RF_SW_0_GPIO_Port GPIOC
  137. #define RF_SW_0_Pin LL_GPIO_PIN_4
  138. #define SD_CD_GPIO_Port GPIOC
  139. #define SD_CD_Pin LL_GPIO_PIN_10
  140. #define SD_CS_GPIO_Port GPIOC
  141. #define SD_CS_Pin LL_GPIO_PIN_12
  142. #define SPEAKER_GPIO_Port GPIOB
  143. #define SPEAKER_Pin LL_GPIO_PIN_8
  144. #define VIBRO_GPIO_Port GPIOA
  145. #define VIBRO_Pin LL_GPIO_PIN_8
  146. #define iBTN_GPIO_Port GPIOB
  147. #define iBTN_Pin LL_GPIO_PIN_14
  148. #define USART1_TX_Pin LL_GPIO_PIN_6
  149. #define USART1_TX_Port GPIOB
  150. #define USART1_RX_Pin LL_GPIO_PIN_7
  151. #define USART1_RX_Port GPIOB
  152. #define SPI_D_MISO_GPIO_Port GPIOC
  153. #define SPI_D_MISO_Pin LL_GPIO_PIN_2
  154. #define SPI_D_MOSI_GPIO_Port GPIOB
  155. #define SPI_D_MOSI_Pin LL_GPIO_PIN_15
  156. #define SPI_D_SCK_GPIO_Port GPIOD
  157. #define SPI_D_SCK_Pin LL_GPIO_PIN_1
  158. #define SPI_R_MISO_GPIO_Port GPIOB
  159. #define SPI_R_MISO_Pin LL_GPIO_PIN_4
  160. #define SPI_R_MOSI_GPIO_Port GPIOB
  161. #define SPI_R_MOSI_Pin LL_GPIO_PIN_5
  162. #define SPI_R_SCK_GPIO_Port GPIOA
  163. #define SPI_R_SCK_Pin LL_GPIO_PIN_5
  164. #define NFC_IRQ_Pin RFID_PULL_Pin
  165. #define NFC_IRQ_GPIO_Port RFID_PULL_GPIO_Port
  166. void furi_hal_resources_init_early();
  167. void furi_hal_resources_deinit_early();
  168. void furi_hal_resources_init();
  169. #ifdef __cplusplus
  170. }
  171. #endif