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