Loading...
Searching...
No Matches
f7/furi_hal/furi_hal_resources.h
1#pragma once
2
3#include <furi.h>
4#include <furi_hal_adc.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10/* Input Related Constants */
11#define INPUT_DEBOUNCE_TICKS 4
12
13/* Input Keys */
14typedef enum {
15 InputKeyUp,
16 InputKeyDown,
17 InputKeyRight,
18 InputKeyLeft,
19 InputKeyOk,
20 InputKeyBack,
21 InputKeyMAX,
22} InputKey;
23
24/* Light */
25typedef enum {
26 LightRed = (1 << 0),
27 LightGreen = (1 << 1),
28 LightBlue = (1 << 2),
29 LightBacklight = (1 << 3),
30} Light;
31
32typedef struct {
33 const GpioPin* gpio;
34 const InputKey key;
35 const bool inverted;
36 const char* name;
37} InputPin;
38
39typedef struct {
40 const GpioPin* pin;
41 const char* name;
42 const FuriHalAdcChannel channel;
43 const uint8_t number;
44 const bool debug;
46
47extern const InputPin input_pins[];
48extern const size_t input_pins_count;
49
50extern const GpioPinRecord gpio_pins[];
51extern const size_t gpio_pins_count;
52
53extern const GpioPin gpio_swdio;
54extern const GpioPin gpio_swclk;
55
56extern const GpioPin gpio_vibro;
57extern const GpioPin gpio_ibutton;
58
59extern const GpioPin gpio_cc1101_g0;
60extern const GpioPin gpio_rf_sw_0;
61
62extern const GpioPin gpio_subghz_cs;
63extern const GpioPin gpio_display_cs;
64extern const GpioPin gpio_display_rst_n;
65extern const GpioPin gpio_display_di;
66extern const GpioPin gpio_sdcard_cs;
67extern const GpioPin gpio_sdcard_cd;
68extern const GpioPin gpio_nfc_cs;
69
70extern const GpioPin gpio_button_up;
71extern const GpioPin gpio_button_down;
72extern const GpioPin gpio_button_right;
73extern const GpioPin gpio_button_left;
74extern const GpioPin gpio_button_ok;
75extern const GpioPin gpio_button_back;
76
77extern const GpioPin gpio_spi_d_miso;
78extern const GpioPin gpio_spi_d_mosi;
79extern const GpioPin gpio_spi_d_sck;
80extern const GpioPin gpio_spi_r_miso;
81extern const GpioPin gpio_spi_r_mosi;
82extern const GpioPin gpio_spi_r_sck;
83
84extern const GpioPin gpio_ext_pc0;
85extern const GpioPin gpio_ext_pc1;
86extern const GpioPin gpio_ext_pc3;
87extern const GpioPin gpio_ext_pb2;
88extern const GpioPin gpio_ext_pb3;
89extern const GpioPin gpio_ext_pa4;
90extern const GpioPin gpio_ext_pa6;
91extern const GpioPin gpio_ext_pa7;
92
93extern const GpioPin gpio_nfc_irq_rfid_pull;
94extern const GpioPin gpio_rfid_carrier_out;
95extern const GpioPin gpio_rfid_data_in;
96extern const GpioPin gpio_rfid_carrier;
97
98extern const GpioPin gpio_infrared_rx;
99extern const GpioPin gpio_infrared_tx;
100
101extern const GpioPin gpio_usart_tx;
102extern const GpioPin gpio_usart_rx;
103extern const GpioPin gpio_i2c_power_sda;
104extern const GpioPin gpio_i2c_power_scl;
105
106extern const GpioPin gpio_speaker;
107
108extern const GpioPin gpio_periph_power;
109
110extern const GpioPin gpio_usb_dm;
111extern const GpioPin gpio_usb_dp;
112
113#define BUTTON_BACK_GPIO_Port GPIOC
114#define BUTTON_BACK_Pin LL_GPIO_PIN_13
115#define BUTTON_DOWN_GPIO_Port GPIOC
116#define BUTTON_DOWN_Pin LL_GPIO_PIN_6
117#define BUTTON_LEFT_GPIO_Port GPIOB
118#define BUTTON_LEFT_Pin LL_GPIO_PIN_11
119#define BUTTON_OK_GPIO_Port GPIOH
120#define BUTTON_OK_Pin LL_GPIO_PIN_3
121#define BUTTON_RIGHT_GPIO_Port GPIOB
122#define BUTTON_RIGHT_Pin LL_GPIO_PIN_12
123#define BUTTON_UP_GPIO_Port GPIOB
124#define BUTTON_UP_Pin LL_GPIO_PIN_10
125
126#define CC1101_CS_GPIO_Port GPIOD
127#define CC1101_CS_Pin LL_GPIO_PIN_0
128#define CC1101_G0_GPIO_Port GPIOA
129#define CC1101_G0_Pin LL_GPIO_PIN_1
130
131#define DISPLAY_CS_GPIO_Port GPIOC
132#define DISPLAY_CS_Pin LL_GPIO_PIN_11
133#define DISPLAY_DI_GPIO_Port GPIOB
134#define DISPLAY_DI_Pin LL_GPIO_PIN_1
135#define DISPLAY_RST_GPIO_Port GPIOB
136#define DISPLAY_RST_Pin LL_GPIO_PIN_0
137
138#define IR_RX_GPIO_Port GPIOA
139#define IR_RX_Pin LL_GPIO_PIN_0
140#define IR_TX_GPIO_Port GPIOB
141#define IR_TX_Pin LL_GPIO_PIN_9
142
143#define NFC_CS_GPIO_Port GPIOE
144#define NFC_CS_Pin LL_GPIO_PIN_4
145
146#define PA4_GPIO_Port GPIOA
147#define PA4_Pin LL_GPIO_PIN_4
148#define PA6_GPIO_Port GPIOA
149#define PA6_Pin LL_GPIO_PIN_6
150#define PA7_GPIO_Port GPIOA
151#define PA7_Pin LL_GPIO_PIN_7
152#define PB2_GPIO_Port GPIOB
153#define PB2_Pin LL_GPIO_PIN_2
154#define PB3_GPIO_Port GPIOB
155#define PB3_Pin LL_GPIO_PIN_3
156#define PC0_GPIO_Port GPIOC
157#define PC0_Pin LL_GPIO_PIN_0
158#define PC1_GPIO_Port GPIOC
159#define PC1_Pin LL_GPIO_PIN_1
160#define PC3_GPIO_Port GPIOC
161#define PC3_Pin LL_GPIO_PIN_3
162
163#define QUARTZ_32MHZ_IN_GPIO_Port GPIOC
164#define QUARTZ_32MHZ_IN_Pin LL_GPIO_PIN_14
165#define QUARTZ_32MHZ_OUT_GPIO_Port GPIOC
166#define QUARTZ_32MHZ_OUT_Pin LL_GPIO_PIN_15
167
168#define RFID_OUT_GPIO_Port GPIOB
169#define RFID_OUT_Pin LL_GPIO_PIN_13
170#define RFID_PULL_GPIO_Port GPIOA
171#define RFID_PULL_Pin LL_GPIO_PIN_2
172#define RFID_RF_IN_GPIO_Port GPIOC
173#define RFID_RF_IN_Pin LL_GPIO_PIN_5
174#define RFID_CARRIER_GPIO_Port GPIOA
175#define RFID_CARRIER_Pin LL_GPIO_PIN_15
176
177#define RF_SW_0_GPIO_Port GPIOC
178#define RF_SW_0_Pin LL_GPIO_PIN_4
179
180#define SD_CD_GPIO_Port GPIOC
181#define SD_CD_Pin LL_GPIO_PIN_10
182#define SD_CS_GPIO_Port GPIOC
183#define SD_CS_Pin LL_GPIO_PIN_12
184
185#define SPEAKER_GPIO_Port GPIOB
186#define SPEAKER_Pin LL_GPIO_PIN_8
187
188#define VIBRO_GPIO_Port GPIOA
189#define VIBRO_Pin LL_GPIO_PIN_8
190
191#define iBTN_GPIO_Port GPIOB
192#define iBTN_Pin LL_GPIO_PIN_14
193
194#define USART1_TX_Pin LL_GPIO_PIN_6
195#define USART1_TX_Port GPIOB
196#define USART1_RX_Pin LL_GPIO_PIN_7
197#define USART1_RX_Port GPIOB
198
199#define SPI_D_MISO_GPIO_Port GPIOC
200#define SPI_D_MISO_Pin LL_GPIO_PIN_2
201#define SPI_D_MOSI_GPIO_Port GPIOB
202#define SPI_D_MOSI_Pin LL_GPIO_PIN_15
203#define SPI_D_SCK_GPIO_Port GPIOD
204#define SPI_D_SCK_Pin LL_GPIO_PIN_1
205
206#define SPI_R_MISO_GPIO_Port GPIOB
207#define SPI_R_MISO_Pin LL_GPIO_PIN_4
208#define SPI_R_MOSI_GPIO_Port GPIOB
209#define SPI_R_MOSI_Pin LL_GPIO_PIN_5
210#define SPI_R_SCK_GPIO_Port GPIOA
211#define SPI_R_SCK_Pin LL_GPIO_PIN_5
212
213#define NFC_IRQ_Pin RFID_PULL_Pin
214#define NFC_IRQ_GPIO_Port RFID_PULL_GPIO_Port
215
216void furi_hal_resources_init_early(void);
217
218void furi_hal_resources_deinit_early(void);
219
220void furi_hal_resources_init(void);
221
228int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio);
229
238const GpioPinRecord* furi_hal_resources_pin_by_name(const char* name);
239
248const GpioPinRecord* furi_hal_resources_pin_by_number(uint8_t number);
249
250#ifdef __cplusplus
251}
252#endif
ADC HAL API.
FuriHalAdcChannel
Definition furi_hal_adc.h:79
Gpio structure.
Definition furi_hal_gpio.h:161
Definition f18/furi_hal/furi_hal_resources.h:39
Definition f18/furi_hal/furi_hal_resources.h:32