From f58b322bb57fa17386936baae3e540533c13ef31 Mon Sep 17 00:00:00 2001 From: coreglitch Date: Tue, 1 Dec 2020 21:47:46 +0300 Subject: [PATCH] FL-353 Cc1101 rx (#255) * enable transparent mode * rssi ok, transmit ok, fifo ok * I see the signal * successful async rx (registers from smartrf) * refactor rfstudio register config * rewrite config, found some issues * handle G0 interrupts * g0 irq enable after cc1101 init * update cube --- applications/applications.mk | 15 +- .../cc1101-workaround/cc1101-workaround.cpp | 238 +++- applications/cc1101-workaround/cc1101.cpp | 134 +- applications/cc1101-workaround/cc1101.h | 8 +- applications/input/input.c | 11 + firmware/targets/f2/api-hal/api-hal-gpio.c | 6 +- firmware/targets/f2/api-hal/api-hal-gpio.h | 4 +- .../targets/f2/api-hal/api-hal-resources.c | 1 + .../targets/f2/api-hal/api-hal-resources.h | 3 +- firmware/targets/f3/Makefile | 398 ------ firmware/targets/f3/Src/gpio.c | 4 +- firmware/targets/f3/Src/stm32wbxx_it.c | 10 + firmware/targets/f3/api-hal/api-hal-gpio.c | 7 +- firmware/targets/f3/api-hal/api-hal-gpio.h | 4 +- .../targets/f3/api-hal/api-hal-resources.c | 1 + .../targets/f3/api-hal/api-hal-resources.h | 1 + firmware/targets/f3/f3.ioc | 1102 +++++++++-------- firmware/targets/local/api-hal/api-hal-gpio.c | 4 + firmware/targets/local/api-hal/api-hal-gpio.h | 4 +- 19 files changed, 939 insertions(+), 1016 deletions(-) delete mode 100644 firmware/targets/f3/Makefile diff --git a/applications/applications.mk b/applications/applications.mk index acfb09c1..fa5e29ad 100644 --- a/applications/applications.mk +++ b/applications/applications.mk @@ -49,13 +49,6 @@ CFLAGS += -DAPP_POWER C_SOURCES += $(wildcard $(APP_DIR)/power/*.c) endif -APP_CLI ?= 0 -ifeq ($(APP_CLI), 1) -APP_GUI = 1 -CFLAGS += -DAPP_CLI -C_SOURCES += $(wildcard $(APP_DIR)/cli/*.c) -endif - APP_MENU ?= 0 ifeq ($(APP_MENU), 1) CFLAGS += -DAPP_MENU @@ -176,6 +169,7 @@ C_SOURCES += $(wildcard $(APP_DIR)/cc1101-workaround/*.c) CPP_SOURCES += $(wildcard $(APP_DIR)/cc1101-workaround/*.cpp) APP_INPUT = 1 APP_GUI = 1 +APP_CLI = 1 endif APP_LF_RFID ?= 0 @@ -312,3 +306,10 @@ ifeq ($(APP_INPUT), 1) CFLAGS += -DAPP_INPUT C_SOURCES += $(APP_DIR)/input/input.c endif + +APP_CLI ?= 0 +ifeq ($(APP_CLI), 1) +APP_GUI = 1 +CFLAGS += -DAPP_CLI +C_SOURCES += $(wildcard $(APP_DIR)/cli/*.c) +endif diff --git a/applications/cc1101-workaround/cc1101-workaround.cpp b/applications/cc1101-workaround/cc1101-workaround.cpp index 8ad984fc..3de02fe3 100644 --- a/applications/cc1101-workaround/cc1101-workaround.cpp +++ b/applications/cc1101-workaround/cc1101-workaround.cpp @@ -2,9 +2,10 @@ #include "cc1101-workaround/cc1101.h" +extern "C" void cli_print(const char* str); + #define RSSI_DELAY 5000 //rssi delay in micro second #define CHAN_SPA 0.05 // channel spacing -#define F_OSC 26e6 int16_t rssi_to_dbm(uint8_t rssi_dec, uint8_t rssiOffset) { int16_t rssi; @@ -33,9 +34,9 @@ typedef struct { void setup_freq(CC1101* cc1101, const FreqConfig* config) { // cc1101->SpiWriteReg(CC1101_MCSM0, 0x08); // disalbe FS_AUTOCAL - cc1101->SpiWriteReg(CC1101_AGCCTRL2, 0x43 | 0x0C); // MAX_DVGA_GAIN to 11 for fast rssi - cc1101->SpiWriteReg(CC1101_AGCCTRL0, 0xB0); // max AGC WAIT_TIME; 0 filter_length - cc1101->SetMod(GFSK); // set to GFSK for fast rssi measurement | +8 is dcfilter off + // cc1101->SpiWriteReg(CC1101_AGCCTRL2, 0x43 | 0x0C); // MAX_DVGA_GAIN to 11 for fast rssi + // cc1101->SpiWriteReg(CC1101_AGCCTRL0, 0xB0); // max AGC WAIT_TIME; 0 filter_length + // cc1101->SetMod(GFSK); // set to GFSK for fast rssi measurement | +8 is dcfilter off uint32_t freq_reg = config->band->base_freq * 1e6 / (F_OSC / 65536); cc1101->SetFreq((freq_reg >> 16) & 0xFF, (freq_reg >> 8) & 0xFF, (freq_reg)&0xFF); @@ -52,31 +53,71 @@ void setup_freq(CC1101* cc1101, const FreqConfig* config) { */ } -int16_t rx_rssi(CC1101* cc1101, const FreqConfig* config) { - cc1101->SetReceive(); +static GpioPin debug_0 = {GPIOB, GPIO_PIN_2}; - delay_us(RSSI_DELAY); +int16_t rx_rssi(CC1101* cc1101, const FreqConfig* config) { + // cc1101->SpiStrobe(CC1101_SFRX); + // cc1101->SetReceive(); + + // uint8_t begin_size = cc1101->SpiReadStatus(CC1101_RXBYTES); + // uint8_t rx_status = cc1101->SpiReadStatus(CC1101_MARCSTATE); + + // delay_us(RSSI_DELAY); + // osDelay(15); + + // uint8_t end_size = cc1101->SpiReadStatus(CC1101_RXBYTES); // 1.4.8) read PKTSTATUS register while the radio is in RX state - /*uint8_t _pkt_status = */ cc1101->SpiReadStatus(CC1101_PKTSTATUS); + /*uint8_t _pkt_status = */ // cc1101->SpiReadStatus(CC1101_PKTSTATUS); // 1.4.9) enter IDLE state by issuing a SIDLE command - cc1101->SpiStrobe(CC1101_SIDLE); + // cc1101->SpiStrobe(CC1101_SIDLE); // //read rssi value and converto to dBm form uint8_t rssi_dec = (uint8_t)cc1101->SpiReadStatus(CC1101_RSSI); int16_t rssi_dBm = rssi_to_dbm(rssi_dec, config->band->rssi_offset); + /* + char buf[256]; + sprintf(buf, "status: %d -> %d, rssi: %d\n", rx_status, cc1101->SpiReadStatus(CC1101_MARCSTATE), rssi_dBm); + cli_print(buf); + sprintf(buf, "begin: %d, end: %d\n", begin_size, end_size); + cli_print(buf); + */ + + // uint8_t rx_data[64]; + // uint8_t fifo_length = end_size - begin_size; + + /* + if(fifo_length < 64) { + // cc1101->SpiReadBurstReg(CC1101_RXFIFO, rx_data, fifo_length); + + * + printf("FIFO:"); + for(uint8_t i = 0; i < fifo_length; i++) { + for(uint8_t bit = 0; bit < 8; bit++) { + printf("%s", (rx_data[i] & (1 << bit)) > 0 ? "1" : "0"); + } + printf(" "); + } + printf("\n"); + * + + for(uint8_t i = 0; i < fifo_length; i++) { + for(uint8_t bit = 0; bit < 8; bit++) { + gpio_write((GpioPin*)&debug_0, (rx_data[i] & (1 << bit)) > 0); + delay_us(5); + } + } + } else { + cli_print("fifo size over\n"); + } + */ + return rssi_dBm; } void tx(CC1101* cc1101, const FreqConfig* config) { - /* - cc1101->SpiWriteReg(CC1101_MCSM0, 0x18); //enable FS_AUTOCAL - cc1101->SpiWriteReg(CC1101_AGCCTRL2, 0x43); //back to recommended config - cc1101->SpiWriteReg(CC1101_AGCCTRL0, 0x91); //back to recommended config - */ - uint32_t freq_reg = config->band->base_freq * 1e6 / (F_OSC / 65536); cc1101->SetFreq((freq_reg >> 16) & 0xFF, (freq_reg >> 8) & 0xFF, (freq_reg)&0xFF); cc1101->SetChannel(config->channel); @@ -88,6 +129,136 @@ void idle(CC1101* cc1101) { cc1101->SpiStrobe(CC1101_SIDLE); } +void flp_config(CC1101* cc1101) { + // cc1101->SpiWriteReg(CC1101_FSCTRL1, 0x06); //IF frequency + // cc1101->SpiWriteReg(CC1101_FSCTRL0, 0x00); //frequency offset before synthesizer + + // cc1101->SpiWriteReg(CC1101_MDMCFG4, 0xCC); // RX filter bandwidth 100k(0xcc) + // cc1101->SpiWriteReg(CC1101_MDMCFG3, 0x43); //datarate config 512kBaud for the purpose of fast rssi measurement + // cc1101->SpiWriteReg(CC1101_MDMCFG1, 0x21); //FEC preamble etc. last 2 bits for channel spacing + // cc1101->SpiWriteReg(CC1101_MDMCFG0, 0xF8); //100khz channel spacing + // CC1101_CHANNR moved to SetChannel func + + cc1101->SpiWriteReg( + CC1101_MCSM0, 0x18); // calibrate when going from IDLE to RX or TX ; 149 - 155 μs timeout + // MCSM0.FS_AUTOCAL[1:0] = 1 + // cc1101->SpiSetRegValue(CC1101_MCSM0, 1, 5, 4); // this not work + + // cc1101->SpiWriteReg(CC1101_FOCCFG, 0x16); //frequency compensation + cc1101->SpiWriteReg(CC1101_AGCCTRL2, 0x43); + cc1101->SpiWriteReg(CC1101_AGCCTRL1, 0x49); + cc1101->SpiWriteReg(CC1101_AGCCTRL0, 0x91); + + //freq synthesizer calibration + cc1101->SpiWriteReg(CC1101_FSCAL3, 0xEA); + cc1101->SpiWriteReg(CC1101_FSCAL2, 0x2A); + cc1101->SpiWriteReg(CC1101_FSCAL1, 0x00); + cc1101->SpiWriteReg(CC1101_FSCAL0, 0x1F); + // cc1101->SpiWriteReg(CC1101_TEST2, 0x81); + // cc1101->SpiWriteReg(CC1101_TEST1, 0x35); + // cc1101->SpiWriteReg(CC1101_TEST0, 0x0B); //should be 0x0B for lower than 430.6MHz and 0x09 for higher + + // cc1101->SpiWriteReg(CC1101_IOCFG2, 0x0D); //data output pin for asynchronous mode + // cc1101->SpiWriteReg(CC1101_IOCFG0, 0x2E); //High impedance (3-state), GDO0 configed as data input for asynchronous mode + // cc1101->SpiWriteReg(CC1101_PKTCTRL0, 0x33); //whitening off; asynchronous serial mode; CRC diable;reserved + // cc1101->SpiWriteReg(CC1101_FIFOTHR, 0x47); //Adc_retention enabled for RX filter bandwidth less than 325KHz; defalut fifo threthold. + + // === Transparent mode === + + // async data out + cc1101->SpiSetRegValue(CC1101_IOCFG0, 13, 5, 0); + + // FIFOTHR.ADC_RETENTION = 1 + cc1101->SpiSetRegValue(CC1101_FIFOTHR, 1, 6, 6); + + // PKTCTRL1.APPEND_STATUS = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL1, 0, 2, 2); + + // PKTCTRL0.WHITE_DATA = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 0, 6, 6); + + // PKTCTRL0.LENGTH_CONFIG = 2 // Infinite packet length mode + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 2, 1, 0); + + // PKTCTRL0.CRC_EN = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 0, 2, 2); + + // PKTCTRL0.PKT_FORMAT = 3 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 3, 5, 4); + + // bandwidth 50-100 kHz + if(!cc1101->setRxBandwidth(75.0)) { + printf("wrong rx bw\n"); + } + + // datarate ~30 kbps + if(!cc1101->setBitRate(100.)) { + printf("wrong bitrate\n"); + } + + cc1101->SetReceive(); + + // mod + // MDMCFG2.MOD_FORMAT = 3 (3: OOK, 0: 2-FSK) + cc1101->SpiSetRegValue(CC1101_MDMCFG2, 3, 6, 4); + // MDMCFG2.SYNC_MODE = 0 + cc1101->SpiSetRegValue(CC1101_MDMCFG2, 0, 2, 0); +} + +void async_config(CC1101* cc1101) { + cc1101->SpiSetRegValue(CC1101_IOCFG0, 13, 5, 0); // GDO0 Output Pin Configuration + + // FIFOTHR.ADC_RETENTION = 1 + cc1101->SpiSetRegValue(CC1101_FIFOTHR, 1, 6, 6); + + // PKTCTRL1.APPEND_STATUS = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL1, 0, 2, 2); + + cc1101->SpiWriteReg(CC1101_PKTCTRL0, 0x32); // Packet Automation Control + /* + FIXME: this sequence not work + // PKTCTRL0.PKT_FORMAT = 3 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 3, 5, 4); + // PKTCTRL0.LENGTH_CONFIG = 2 // Infinite packet length mode + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 2, 1, 0); + // PKTCTRL0.CRC_EN = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 0, 2, 2); + // PKTCTRL0.WHITE_DATA = 0 + cc1101->SpiSetRegValue(CC1101_PKTCTRL0, 0, 6, 6); + */ + + cc1101->SpiWriteReg(CC1101_MDMCFG4, 0xD6); //Modem Configuration + cc1101->SpiWriteReg(CC1101_MDMCFG3, 0xE4); //Modem Configuration + /* + FIXME: not work + // bandwidth 50-100 kHz + if(!cc1101->setRxBandwidth(75.0)) { + printf("wrong rx bw\n"); + } + + // datarate ~30 kbps + if(!cc1101->setBitRate(100.)) { + printf("wrong bitrate\n"); + } + */ + + cc1101->SpiWriteReg(CC1101_MDMCFG2, 0x30); //Modem Configuration + /* + FIXME: not work + // MDMCFG2.MOD_FORMAT = 3 (3: OOK, 0: 2-FSK) + cc1101->SpiSetRegValue(CC1101_MDMCFG2, 3, 6, 4); + // MDMCFG2.SYNC_MODE = 0 + cc1101->SpiSetRegValue(CC1101_MDMCFG2, 0, 2, 0); + */ + + cc1101->SpiWriteReg(CC1101_MCSM0, 0x18); //Main Radio Control State Machine Configuration + + cc1101->SpiWriteReg(CC1101_FSCAL3, 0xE9); //Frequency Synthesizer Calibration + cc1101->SpiWriteReg(CC1101_FSCAL2, 0x2A); //Frequency Synthesizer Calibration + cc1101->SpiWriteReg(CC1101_FSCAL1, 0x00); //Frequency Synthesizer Calibration + cc1101->SpiWriteReg(CC1101_FSCAL0, 0x1F); //Frequency Synthesizer Calibration +} + // f = (f_osc/65536) * (FREQ + CHAN * (256 + CH_SP_M) * 2^(CH_SP_E - 2)) // FREQ = f / (f_osc/65536) // CHAN = 0 @@ -99,7 +270,7 @@ const Band bands[] = { {315., {0x00, 0x00, 0x00}, 0, 255, 74}, {348., {0x00, 0x00, 0x00}, 0, 255, 74}, {387., {0x00, 0x00, 0x00}, 0, 255, 74}, - {433., {0x00, 0x00, 0x00}, 0, 255, 74}, + {433.92, {0x00, 0x00, 0x00}, 0, 255, 74}, {464., {0x00, 0x00, 0x00}, 0, 255, 74}, {779., {0x00, 0x00, 0x00}, 0, 255, 74}, {868., {0x00, 0x00, 0x00}, 0, 255, 74}, @@ -120,6 +291,10 @@ const FreqConfig FREQ_LIST[] = { {&bands[9], 0}, }; +extern "C" void cc1101_isr() { + gpio_write((GpioPin*)&debug_0, gpio_read(&cc1101_g0_gpio)); +} + typedef enum { EventTypeTick, EventTypeKey, @@ -157,6 +332,8 @@ typedef struct { static void render_callback(CanvasApi* canvas, void* ctx) { State* state = (State*)acquire_mutex((ValueMutex*)ctx, 25); + if(!state) return; + canvas->clear(canvas); canvas->set_color(canvas, ColorBlack); canvas->set_font(canvas, FontPrimary); @@ -222,7 +399,7 @@ extern "C" void cc1101_workaround(void* p) { State _state; _state.mode = ModeRx; - _state.active_freq = 0; + _state.active_freq = 4; _state.need_cc1101_conf = true; _state.last_rssi = 0; _state.tx_level = 0; @@ -246,6 +423,9 @@ extern "C" void cc1101_workaround(void* p) { } gui->add_widget(gui, widget, GuiLayerFullscreen); + gpio_init(&debug_0, GpioModeOutputPushPull); + gpio_write((GpioPin*)&debug_0, false); + printf("[cc1101] creating device\n"); GpioPin cs_pin = {CC1101_CS_GPIO_Port, CC1101_CS_Pin}; @@ -262,14 +442,16 @@ extern "C" void cc1101_workaround(void* p) { furiac_exit(NULL); } - // RX filter bandwidth 58.035714(0xFD) 100k(0xCD) 200k(0x8D) - cc1101.SpiWriteReg(CC1101_MDMCFG4, 0xCD); - // datarate config 250kBaud for the purpose of fast rssi measurement - cc1101.SpiWriteReg(CC1101_MDMCFG3, 0x3B); - // FEC preamble etc. last 2 bits for channel spacing - cc1101.SpiWriteReg(CC1101_MDMCFG1, 0x20); - // 50khz channel spacing - cc1101.SpiWriteReg(CC1101_MDMCFG0, 0xF8); + cc1101.SpiStrobe(CC1101_SIDLE); + + // flp_config(&cc1101); + async_config(&cc1101); + setup_freq(&cc1101, &FREQ_LIST[4]); + enable_cc1101_irq(); + + printf("init ok\n"); + + // === Transparent mode === // TODO open record GpioPin* led_record = (GpioPin*)&led_gpio[1]; @@ -279,9 +461,13 @@ extern "C" void cc1101_workaround(void* p) { const int16_t RSSI_THRESHOLD = -89; + // setup_freq(&cc1101, &FREQ_LIST[1]); + + cc1101.SetReceive(); + AppEvent event; while(1) { - osStatus_t event_status = osMessageQueueGet(event_queue, &event, NULL, 150); + osStatus_t event_status = osMessageQueueGet(event_queue, &event, NULL, 20); State* state = (State*)acquire_mutex_block(&state_mutex); if(event_status == osOK) { diff --git a/applications/cc1101-workaround/cc1101.cpp b/applications/cc1101-workaround/cc1101.cpp index 0f064a74..620902d0 100644 --- a/applications/cc1101-workaround/cc1101.cpp +++ b/applications/cc1101-workaround/cc1101.cpp @@ -1,6 +1,7 @@ #include "flipper_v2.h" #include "cc1101-workaround/cc1101.h" #include "spi.h" +#include // ****************************************************************************** #define WRITE_BURST 0x40 @@ -85,6 +86,8 @@ uint8_t CC1101::SpiTransfer(uint8_t value) { return rxbuf[0]; } +uint8_t last_status; + /**************************************************************** *FUNCTION NAME:SpiWriteReg *FUNCTION :CC1101 write data to register @@ -95,8 +98,9 @@ void CC1101::SpiWriteReg(uint8_t addr, uint8_t value) { gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(addr); - SpiTransfer(value); + + last_status = SpiTransfer(addr); + last_status = SpiTransfer(value); gpio_write(ss_pin, true); } @@ -107,15 +111,12 @@ void CC1101::SpiWriteReg(uint8_t addr, uint8_t value) { *OUTPUT :none ****************************************************************/ void CC1101::SpiWriteBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num) { - uint8_t i, temp; - - temp = addr | WRITE_BURST; gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(temp); - for(i = 0; i < num; i++) { - SpiTransfer(buffer[i]); + last_status = SpiTransfer(addr | WRITE_BURST); + for(uint8_t i = 0; i < num; i++) { + last_status = SpiTransfer(buffer[i]); } gpio_write(ss_pin, true); } @@ -130,7 +131,7 @@ void CC1101::SpiStrobe(uint8_t strobe) { gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(strobe); + last_status = SpiTransfer(strobe); gpio_write(ss_pin, true); } @@ -141,14 +142,11 @@ void CC1101::SpiStrobe(uint8_t strobe) { *OUTPUT :register value ****************************************************************/ uint8_t CC1101::SpiReadReg(uint8_t addr) { - uint8_t temp, value; - - temp = addr | READ_SINGLE; gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(temp); - value = SpiTransfer(0); + last_status = SpiTransfer(addr | READ_SINGLE); + uint8_t value = SpiTransfer(0); gpio_write(ss_pin, true); return value; @@ -161,14 +159,11 @@ uint8_t CC1101::SpiReadReg(uint8_t addr) { *OUTPUT :none ****************************************************************/ void CC1101::SpiReadBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num) { - uint8_t i, temp; - - temp = addr | READ_BURST; gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(temp); - for(i = 0; i < num; i++) { + last_status = SpiTransfer(addr | READ_BURST); + for(uint8_t i = 0; i < num; i++) { buffer[i] = SpiTransfer(0); } gpio_write(ss_pin, true); @@ -181,14 +176,11 @@ void CC1101::SpiReadBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num) { *OUTPUT :status value ****************************************************************/ uint8_t CC1101::SpiReadStatus(uint8_t addr) { - uint8_t value, temp; - - temp = addr | READ_BURST; gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(temp); - value = SpiTransfer(0); + last_status = SpiTransfer(addr | READ_BURST); + uint8_t value = SpiTransfer(0); gpio_write(ss_pin, true); return value; @@ -208,11 +200,25 @@ void CC1101::Reset(void) { gpio_write(ss_pin, false); while(gpio_read(this->miso_pin_record)) ; - SpiTransfer(CC1101_SRES); + last_status = SpiTransfer(CC1101_SRES); while(gpio_read(this->miso_pin_record)) ; gpio_write(ss_pin, true); } + +bool CC1101::SpiSetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t lsb) { + if((msb > 7) || (lsb > 7) || (lsb > msb)) { + return false; + } + + uint8_t current_value = SpiReadReg(reg); + uint8_t mask = ~((0b11111111 << (msb + 1)) | (0b11111111 >> (8 - lsb))); + uint8_t new_value = (current_value & ~mask) | (value & mask); + SpiWriteReg(reg, new_value); + + return true; +} + /**************************************************************** *FUNCTION NAME:Init *FUNCTION :CC1101 initialization @@ -230,7 +236,9 @@ uint8_t CC1101::Init(void) { #ifdef CC1101_DEBUG printf("Reset CC1101...\n"); #endif - Reset(); //CC1101 reset + Reset(); // CC1101 reset + + osDelay(150); uint8_t partnum __attribute__((unused)); uint8_t version; @@ -245,7 +253,7 @@ uint8_t CC1101::Init(void) { #ifdef CC1101_DEBUG printf("Init CC1101..."); #endif - RegConfigSettings(); //CC1101 register config + // RegConfigSettings(); //CC1101 register config #ifdef CC1101_DEBUG printf("Done!\n"); @@ -401,3 +409,75 @@ void CC1101::SetTransmit(void) { ; } //cc1101 cc1101; + +bool CC1101::setRxBandwidth(float bandwidth) { + if(bandwidth < 58.0 || bandwidth > 821.0) return false; + + // set mode to standby + SpiStrobe(CC1101_SIDLE); + + // calculate exponent and mantissa values + for(int8_t e = 3; e >= 0; e--) { + for(int8_t m = 3; m >= 0; m--) { + float point = (F_OSC) / (8 * (m + 4) * ((uint32_t)1 << e)); + if(fabs((bandwidth * 1000.0) - point) <= 1000) { + // set Rx channel filter bandwidth + SpiSetRegValue(CC1101_MDMCFG4, (e << 6) | (m << 4), 7, 4); + + return true; + } + } + } + + return false; +} + +static void getExpMant( + float target, + uint16_t mantOffset, + uint8_t divExp, + uint8_t expMax, + uint8_t& exp, + uint8_t& mant) { + // get table origin point (exp = 0, mant = 0) + float origin = (mantOffset * F_OSC) / ((uint32_t)1 << divExp); + + // iterate over possible exponent values + for(int8_t e = expMax; e >= 0; e--) { + // get table column start value (exp = e, mant = 0); + float intervalStart = ((uint32_t)1 << e) * origin; + + // check if target value is in this column + if(target >= intervalStart) { + // save exponent value + exp = e; + + // calculate size of step between table rows + float stepSize = intervalStart / (float)mantOffset; + + // get target point position (exp = e, mant = m) + mant = ((target - intervalStart) / stepSize); + + // we only need the first match, terminate + return; + } + } +} + +bool CC1101::setBitRate(float bitrate) { + if(bitrate < 0.6 || bitrate > 500.0) return false; + + // set mode to standby + SpiStrobe(CC1101_SIDLE); + + // calculate exponent and mantissa values + uint8_t e = 0; + uint8_t m = 0; + getExpMant(bitrate * 1000.0, 256, 28, 14, e, m); + + // set bit rate value + SpiSetRegValue(CC1101_MDMCFG4, e, 3, 0); + SpiSetRegValue(CC1101_MDMCFG3, m, 7, 0); + + return true; +} diff --git a/applications/cc1101-workaround/cc1101.h b/applications/cc1101-workaround/cc1101.h index aa4b7cfe..aa36e279 100644 --- a/applications/cc1101-workaround/cc1101.h +++ b/applications/cc1101-workaround/cc1101.h @@ -2,8 +2,11 @@ #include "flipper_v2.h" +#define F_OSC 26e6 + /*******************************debug mode*************************************/ // #define CC1101_DEBUG 1 + //******************************CC1101 defines ******************************** //******************************config registers ***************************** #define CC1101_IOCFG2 0x00 //GDO2 output pin configration @@ -148,13 +151,14 @@ private: void Reset(void); void SpiWriteBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num); uint8_t SpiReadReg(uint8_t addr); - void SpiReadBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num); void RegConfigSettings(void); public: CC1101(GpioPin* ss_pin); void SpiWriteReg(uint8_t addr, uint8_t value); + bool SpiSetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t lsb); + void SpiReadBurstReg(uint8_t addr, uint8_t* buffer, uint8_t num); void SpiInit(void); void SpiEnd(void); void SetMod(uint8_t mode); @@ -165,4 +169,6 @@ public: void SetReceive(void); void SetTransmit(void); void SetChannel(int channel); + bool setRxBandwidth(float bandwidth); + bool setBitRate(float bitrate); }; diff --git a/applications/input/input.c b/applications/input/input.c index b03b3808..cabe655d 100644 --- a/applications/input/input.c +++ b/applications/input/input.c @@ -6,6 +6,10 @@ void nfc_isr(void); #endif +#ifdef BUILD_CC1101 +void cc1101_isr(); +#endif + static volatile bool initialized = false; static ValueManager input_state_record; static PubSub input_events_record; @@ -115,6 +119,13 @@ void HAL_GPIO_EXTI_Callback(uint16_t pin) { } #endif +#ifdef BUILD_CC1101 + if(pin == CC1101_G0_Pin) { + cc1101_isr(); + return; + } +#endif + if(!initialized) return; signal_event(&event); diff --git a/firmware/targets/f2/api-hal/api-hal-gpio.c b/firmware/targets/f2/api-hal/api-hal-gpio.c index d2c4d7cd..98e359ad 100644 --- a/firmware/targets/f2/api-hal/api-hal-gpio.c +++ b/firmware/targets/f2/api-hal/api-hal-gpio.c @@ -19,4 +19,8 @@ void hal_gpio_init( bool hal_gpio_read_sd_detect(void) { return true; -} \ No newline at end of file +} + +void enable_cc1101_irq() { + +} diff --git a/firmware/targets/f2/api-hal/api-hal-gpio.h b/firmware/targets/f2/api-hal/api-hal-gpio.h index 9413025c..93a7b663 100644 --- a/firmware/targets/f2/api-hal/api-hal-gpio.h +++ b/firmware/targets/f2/api-hal/api-hal-gpio.h @@ -64,4 +64,6 @@ static inline bool hal_gpio_read(const GpioPin* gpio) { } } -bool hal_gpio_read_sd_detect(void); \ No newline at end of file +bool hal_gpio_read_sd_detect(void); + +void enable_cc1101_irq(); diff --git a/firmware/targets/f2/api-hal/api-hal-resources.c b/firmware/targets/f2/api-hal/api-hal-resources.c index aae3c4df..0b7bfed3 100644 --- a/firmware/targets/f2/api-hal/api-hal-resources.c +++ b/firmware/targets/f2/api-hal/api-hal-resources.c @@ -30,3 +30,4 @@ const GpioPin led_gpio[3] = { const GpioPin backlight_gpio = {DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin}; const GpioPin vibro_gpio = {VIBRO_GPIO_Port, VIBRO_Pin}; const GpioPin ibutton_gpio = {iButton_GPIO_Port, iButton_Pin}; +const GpioPin cc1101_g0_gpio = {NULL, 0}; diff --git a/firmware/targets/f2/api-hal/api-hal-resources.h b/firmware/targets/f2/api-hal/api-hal-resources.h index 44ca6afe..d6589e8f 100644 --- a/firmware/targets/f2/api-hal/api-hal-resources.h +++ b/firmware/targets/f2/api-hal/api-hal-resources.h @@ -11,4 +11,5 @@ extern const bool input_invert[GPIO_INPUT_PINS_COUNT]; extern const GpioPin led_gpio[3]; extern const GpioPin backlight_gpio; extern const GpioPin vibro_gpio; -extern const GpioPin ibutton_gpio; \ No newline at end of file +extern const GpioPin ibutton_gpio; +extern const GpioPin cc1101_g0_gpio; diff --git a/firmware/targets/f3/Makefile b/firmware/targets/f3/Makefile deleted file mode 100644 index da113a2d..00000000 --- a/firmware/targets/f3/Makefile +++ /dev/null @@ -1,398 +0,0 @@ -########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Mon Nov 23 12:04:48 VLAT 2020] -########################################################################################################################## - -# ------------------------------------------------ -# Generic Makefile (based on gcc) -# -# ChangeLog : -# 2017-02-10 - Several enhancements + project update mode -# 2015-07-22 - first version -# ------------------------------------------------ - -###################################### -# target -###################################### -TARGET = f3 - - -###################################### -# building variables -###################################### -# debug build? -DEBUG = 1 -# optimization -OPT = -Og - - -####################################### -# paths -####################################### -# Build path -BUILD_DIR = build - -###################################### -# source -###################################### -# C sources -C_SOURCES = \ -Src/main.c \ -Src/gpio.c \ -Src/app_freertos.c \ -Src/adc.c \ -Src/i2c.c \ -Src/rtc.c \ -Src/spi.c \ -Src/tim.c \ -Src/usart.c \ -Src/usb_device.c \ -Src/usbd_conf.c \ -Src/usbd_desc.c \ -Src/usbd_cdc_if.c \ -Src/stm32wbxx_it.c \ -Src/stm32wbxx_hal_msp.c \ -Src/stm32wbxx_hal_timebase_tim.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_adc.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c \ -Src/system_stm32wbxx.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/list.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ -/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_adc.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/list.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ -C:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_adc.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/list.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c \ -Src/comp.c \ -/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_comp.c \ -Src/rf.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_adc.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_comp.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/list.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ -C:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c - -# ASM sources -ASM_SOURCES = \ -startup_stm32wb55xx_cm4.s - - -####################################### -# binaries -####################################### -PREFIX = arm-none-eabi- -# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx) -# either it can be added to the PATH environment variable. -ifdef GCC_PATH -CC = $(GCC_PATH)/$(PREFIX)gcc -AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp -CP = $(GCC_PATH)/$(PREFIX)objcopy -SZ = $(GCC_PATH)/$(PREFIX)size -else -CC = $(PREFIX)gcc -AS = $(PREFIX)gcc -x assembler-with-cpp -CP = $(PREFIX)objcopy -SZ = $(PREFIX)size -endif -HEX = $(CP) -O ihex -BIN = $(CP) -O binary -S - -####################################### -# CFLAGS -####################################### -# cpu -CPU = -mcpu=cortex-m4 - -# fpu -FPU = -mfpu=fpv4-sp-d16 - -# float-abi -FLOAT-ABI = -mfloat-abi=hard - -# mcu -MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) - -# macros for gcc -# AS defines -AS_DEFS = - -# C defines -C_DEFS = \ --DUSE_HAL_DRIVER \ --DSTM32WB55xx - - -# AS includes -AS_INCLUDES = \ --IInc - -# C includes -C_INCLUDES = \ --IInc \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Inc \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/include \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/CMSIS/Device/ST/STM32WBxx/Include \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/CMSIS/Include \ --I/Users/aku/Work/flipper/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/CMSIS/Include \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Inc \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/include \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/CMSIS/Device/ST/STM32WBxx/Include \ --IC:/work/cmake-stm32/projects/flipperzero-firmware-community/lib/STM32CubeWB/Drivers/CMSIS/Include \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Inc \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/include \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/CMSIS/Device/ST/STM32WBxx/Include \ --I/Users/aku/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/CMSIS/Include \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Inc \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/include \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Core/Inc \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/CMSIS/Device/ST/STM32WBxx/Include \ --IC:/Users/whoju/STM32Cube/Repository/STM32Cube_FW_WB_V1.9.0/Drivers/CMSIS/Include - - -# compile gcc flags -ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections - -CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections - -ifeq ($(DEBUG), 1) -CFLAGS += -g -gdwarf-2 -endif - - -# Generate dependency information -CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" - - -####################################### -# LDFLAGS -####################################### -# link script -LDSCRIPT = stm32wb55xx_flash_cm4.ld - -# libraries -LIBS = -lc -lm -lnosys -LIBDIR = -LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections - -# default action: build all -all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - - -####################################### -# build the application -####################################### -# list of objects -OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) -vpath %.c $(sort $(dir $(C_SOURCES))) -# list of ASM program objects -OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) -vpath %.s $(sort $(dir $(ASM_SOURCES))) - -$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) - $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ - -$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR) - $(AS) -c $(CFLAGS) $< -o $@ - -$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile - $(CC) $(OBJECTS) $(LDFLAGS) -o $@ - $(SZ) $@ - -$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR) - $(HEX) $< $@ - -$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) - $(BIN) $< $@ - -$(BUILD_DIR): - mkdir $@ - -####################################### -# clean up -####################################### -clean: - -rm -fR $(BUILD_DIR) - -####################################### -# dependencies -####################################### --include $(wildcard $(BUILD_DIR)/*.d) - -# *** EOF *** diff --git a/firmware/targets/f3/Src/gpio.c b/firmware/targets/f3/Src/gpio.c index 100209d9..f02b1cba 100644 --- a/firmware/targets/f3/Src/gpio.c +++ b/firmware/targets/f3/Src/gpio.c @@ -110,8 +110,8 @@ void MX_GPIO_Init(void) /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = CC1101_G0_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(CC1101_G0_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PBPin PBPin */ diff --git a/firmware/targets/f3/Src/stm32wbxx_it.c b/firmware/targets/f3/Src/stm32wbxx_it.c index 3d4de269..fd177b25 100644 --- a/firmware/targets/f3/Src/stm32wbxx_it.c +++ b/firmware/targets/f3/Src/stm32wbxx_it.c @@ -311,6 +311,16 @@ void HSEM_IRQHandler(void) } /* USER CODE BEGIN 1 */ +void EXTI4_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI4_IRQn 0 */ + + /* USER CODE END EXTI4_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); + /* USER CODE BEGIN EXTI4_IRQn 1 */ + + /* USER CODE END EXTI4_IRQn 1 */ +} /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/firmware/targets/f3/api-hal/api-hal-gpio.c b/firmware/targets/f3/api-hal/api-hal-gpio.c index 17cbc962..74de4785 100644 --- a/firmware/targets/f3/api-hal/api-hal-gpio.c +++ b/firmware/targets/f3/api-hal/api-hal-gpio.c @@ -36,4 +36,9 @@ bool hal_gpio_read_sd_detect(void) { delay(50); return result; -} \ No newline at end of file +} + +void enable_cc1101_irq() { + HAL_NVIC_SetPriority(EXTI4_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(EXTI4_IRQn); +} diff --git a/firmware/targets/f3/api-hal/api-hal-gpio.h b/firmware/targets/f3/api-hal/api-hal-gpio.h index 9413025c..93a7b663 100644 --- a/firmware/targets/f3/api-hal/api-hal-gpio.h +++ b/firmware/targets/f3/api-hal/api-hal-gpio.h @@ -64,4 +64,6 @@ static inline bool hal_gpio_read(const GpioPin* gpio) { } } -bool hal_gpio_read_sd_detect(void); \ No newline at end of file +bool hal_gpio_read_sd_detect(void); + +void enable_cc1101_irq(); diff --git a/firmware/targets/f3/api-hal/api-hal-resources.c b/firmware/targets/f3/api-hal/api-hal-resources.c index 50893111..410f8ceb 100644 --- a/firmware/targets/f3/api-hal/api-hal-resources.c +++ b/firmware/targets/f3/api-hal/api-hal-resources.c @@ -28,3 +28,4 @@ const GpioPin backlight_gpio = {DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_P const GpioPin sd_cs_gpio = {SD_CS_GPIO_Port, SD_CS_Pin}; const GpioPin vibro_gpio = {VIBRO_GPIO_Port, VIBRO_Pin}; const GpioPin ibutton_gpio = {iBTN_GPIO_Port, iBTN_Pin}; +const GpioPin cc1101_g0_gpio = {CC1101_G0_GPIO_Port, CC1101_G0_Pin}; diff --git a/firmware/targets/f3/api-hal/api-hal-resources.h b/firmware/targets/f3/api-hal/api-hal-resources.h index ed78a5aa..e095827b 100644 --- a/firmware/targets/f3/api-hal/api-hal-resources.h +++ b/firmware/targets/f3/api-hal/api-hal-resources.h @@ -13,3 +13,4 @@ extern const GpioPin backlight_gpio; extern const GpioPin sd_cs_gpio; extern const GpioPin vibro_gpio; extern const GpioPin ibutton_gpio; +extern const GpioPin cc1101_g0_gpio; diff --git a/firmware/targets/f3/f3.ioc b/firmware/targets/f3/f3.ioc index 317652e5..177bdde6 100644 --- a/firmware/targets/f3/f3.ioc +++ b/firmware/targets/f3/f3.ioc @@ -1,565 +1,569 @@ #MicroXplorer Configuration settings - do not modify -ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_14 -ADC1.ContinuousConvMode=DISABLE -ADC1.EnableAnalogWatchDog1=false -ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,EnableAnalogWatchDog1,ContinuousConvMode -ADC1.NbrOfConversionFlag=1 -ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE -ADC1.Rank-0\#ChannelRegularConversion=1 -ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 -ADC1.master=1 +PA11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PB13.GPIOParameters=GPIO_Label +RCC.USART1Freq_Value=64000000 +RF1.Locked=true +SPI1.VirtualType=VM_MASTER +PB10.GPIO_PuPd=GPIO_PULLUP +RF1.Signal=RF_RF1 +SPI2.VirtualType=VM_MASTER +VP_ADC1_TempSens_Input.Mode=IN-TempSens +PC12.Locked=true +TIM1.IPParameters=Channel-Output Compare1 CH1N,Channel-PWM Generation3 CH3N +PC12.Signal=GPIO_Output +PB14.GPIO_Label=iBTN +PC6.GPIO_Label=DISPLAY_DI +VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled +RCC.RTCFreq_Value=32768 +PA3.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP +PA6.GPIO_Label=PA6 COMP1.Hysteresis=COMP_HYSTERESIS_HIGH -COMP1.IPParameters=TriggerMode,Hysteresis,Mode -COMP1.Mode=COMP_POWERMODE_MEDIUMSPEED -COMP1.TriggerMode=COMP_TRIGGERMODE_IT_RISING_FALLING -FREERTOS.FootprintOK=true -FREERTOS.HEAP_NUMBER=4 -FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,HEAP_NUMBER,configUSE_TIMERS,configUSE_IDLE_HOOK,FootprintOK,configCHECK_FOR_STACK_OVERFLOW,configRECORD_STACK_HIGH_ADDRESS,configGENERATE_RUN_TIME_STATS,configENABLE_FPU -FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;app_main,8,1024,app,As external,NULL,Dynamic,NULL,NULL -FREERTOS.configCHECK_FOR_STACK_OVERFLOW=1 +PD0.Locked=true +VP_COMP1_VS_VREFINT14.Signal=COMP1_VS_VREFINT14 +USART1.IPParameters=VirtualMode-Asynchronous +PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW +PB13.Signal=TIM1_CH1N +PA2.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP +PC15-OSC32_OUT.GPIO_Label=QUARTZ_32MHZ_OUT +PinOutPanel.RotationAngle=0 +RCC.MCO1PinFreq_Value=64000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +SH.GPXTI13.0=GPIO_EXTI13 +RCC.LPTIM1Freq_Value=64000000 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false FREERTOS.configENABLE_FPU=1 -FREERTOS.configGENERATE_RUN_TIME_STATS=1 -FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 -FREERTOS.configTOTAL_HEAP_SIZE=40960 -FREERTOS.configUSE_IDLE_HOOK=1 -FREERTOS.configUSE_TIMERS=1 -File.Version=6 -GPIO.groupedBy=Show All -I2C1.CustomTiming=Disabled -I2C1.IPParameters=Timing,CustomTiming -I2C1.Timing=0x10707DBC -KeepUserPlacement=false -Mcu.Family=STM32WB -Mcu.IP0=ADC1 -Mcu.IP1=COMP1 -Mcu.IP10=SPI2 -Mcu.IP11=SYS -Mcu.IP12=TIM1 -Mcu.IP13=TIM2 -Mcu.IP14=TIM16 -Mcu.IP15=USART1 -Mcu.IP16=USB -Mcu.IP17=USB_DEVICE -Mcu.IP2=FREERTOS -Mcu.IP3=HSEM -Mcu.IP4=I2C1 -Mcu.IP5=NVIC -Mcu.IP6=RCC -Mcu.IP7=RF -Mcu.IP8=RTC -Mcu.IP9=SPI1 -Mcu.IPNb=18 -Mcu.Name=STM32WB55RGVx +NVIC.EXTI1_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +NVIC.ADC1_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +SH.S_TIM16_CH1.ConfNb=1 +SPI1.Direction=SPI_DIRECTION_2LINES +TIM2.IPParameters=Channel-Input_Capture1_from_TI1,ICPolarity_CH1,AutoReloadPreload,Prescaler,Channel-Input_Capture2_from_TI1 +RCC.APB2TimFreq_Value=64000000 +PCC.Ble.PowerLevel=Min +COMP1.Mode=COMP_POWERMODE_MEDIUMSPEED +PB6.Signal=USART1_TX +PB6.Mode=Asynchronous +SPI1.CalculateBaudRate=4.0 MBits/s +PC3.Signal=GPIO_Analog +PD0.Signal=GPIO_Output +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +RCC.PREFETCH_ENABLE=1 +PB13.Locked=true +NVIC.EXTI15_10_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +ProjectManager.ProjectBuild=false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PB2.Signal=GPIO_Analog +PB3.Mode=Full_Duplex_Master +PH3-BOOT0.Locked=true +PA8.Locked=true +PD1.GPIOParameters=GPIO_Label +RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE +SH.GPXTI12.0=GPIO_EXTI12 +PD1.GPIO_Label=SPI_D_SCK +PB12.GPIO_Label=BUTTON_RIGHT +ProjectManager.FirmwarePackage=STM32Cube FW_WB V1.9.0 +VP_ADC1_Vref_Input.Mode=IN-Vrefint +MxDb.Version=DB.6.0.0 +PB0.GPIOParameters=GPIO_Label +PA1.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP +ProjectManager.BackupPrevious=false +VP_SYS_VS_tim17.Signal=SYS_VS_tim17 +PC4.GPIO_Label=CC1101_G0 +FREERTOS.HEAP_NUMBER=4 +PB1.GPIO_Label=BUTTON_DOWN +NVIC.TIM2_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +SPI1.DataSize=SPI_DATASIZE_8BIT +PE4.GPIO_Label=NFC_CS +SPI2.CalculateBaudRate=4.0 MBits/s +PA8.Signal=GPXTI8 +RCC.PLLRCLKFreq_Value=64000000 +SH.GPXTI11.ConfNb=1 +PB6.Locked=true +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false +ProjectManager.HalAssertFull=false +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 +VP_TIM1_VS_ClockSourceINT.Mode=Internal +TIM16.Pulse=145 +PA0.Signal=S_TIM2_CH1 +PH3-BOOT0.Signal=GPIO_Analog +NVIC.HSEM_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true +PB9.Signal=TIM1_CH3N Mcu.Package=VFQFPN68 -Mcu.Pin0=PC13 -Mcu.Pin1=PC14-OSC32_IN -Mcu.Pin10=PA0 -Mcu.Pin11=PA1 -Mcu.Pin12=PA2 -Mcu.Pin13=PA3 -Mcu.Pin14=PA4 -Mcu.Pin15=PA5 -Mcu.Pin16=PA6 -Mcu.Pin17=PA7 -Mcu.Pin18=PA8 -Mcu.Pin19=PA9 -Mcu.Pin2=PC15-OSC32_OUT -Mcu.Pin20=PC4 -Mcu.Pin21=PC5 -Mcu.Pin22=PB2 -Mcu.Pin23=PB10 -Mcu.Pin24=PB11 -Mcu.Pin25=RF1 -Mcu.Pin26=OSC_OUT -Mcu.Pin27=OSC_IN -Mcu.Pin28=PB0 -Mcu.Pin29=PB1 -Mcu.Pin3=PH3-BOOT0 -Mcu.Pin30=PE4 -Mcu.Pin31=PB12 -Mcu.Pin32=PB13 -Mcu.Pin33=PB14 -Mcu.Pin34=PB15 -Mcu.Pin35=PC6 -Mcu.Pin36=PA10 -Mcu.Pin37=PA11 -Mcu.Pin38=PA12 -Mcu.Pin39=PA13 -Mcu.Pin4=PB8 -Mcu.Pin40=PA14 -Mcu.Pin41=PA15 -Mcu.Pin42=PC10 -Mcu.Pin43=PC11 -Mcu.Pin44=PC12 -Mcu.Pin45=PD0 -Mcu.Pin46=PD1 -Mcu.Pin47=PB3 -Mcu.Pin48=PB4 -Mcu.Pin49=PB5 -Mcu.Pin5=PB9 -Mcu.Pin50=PB6 -Mcu.Pin51=PB7 -Mcu.Pin52=VP_ADC1_TempSens_Input -Mcu.Pin53=VP_ADC1_Vref_Input -Mcu.Pin54=VP_COMP1_VS_VREFINT14 -Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V2 -Mcu.Pin56=VP_HSEM_VS_HSEM -Mcu.Pin57=VP_RTC_VS_RTC_Activate -Mcu.Pin58=VP_RTC_VS_RTC_Calendar -Mcu.Pin59=VP_SYS_VS_tim17 -Mcu.Pin6=PC0 -Mcu.Pin60=VP_TIM1_VS_ClockSourceINT -Mcu.Pin61=VP_TIM2_VS_ClockSourceINT +TIM2.Prescaler=64-1 +PB1.Signal=GPXTI1 +NVIC.TimeBase=TIM1_TRG_COM_TIM17_IRQn +SPI2.Mode=SPI_MODE_MASTER +PA2.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD +SH.GPXTI11.0=GPIO_EXTI11 +SH.GPXTI8.0=GPIO_EXTI8 +PA14.Locked=true +SH.GPXTI8.ConfNb=1 +NVIC.TimeBaseIP=TIM17 +RCC.LSCOPinFreq_Value=32000 +PA10.Signal=I2C1_SDA +VP_RTC_VS_RTC_Calendar.Mode=RTC_Calendar +FREERTOS.FootprintOK=true +PA5.GPIOParameters=GPIO_Label +PA1.PinState=GPIO_PIN_SET +NVIC.USB_LP_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true +PB14.GPIOParameters=GPIO_Label +VP_HSEM_VS_HSEM.Mode=HSEM_Activate +NVIC.EXTI2_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +RCC.PLLPoutputFreq_Value=64000000 +RCC.APB1TimFreq_Value=64000000 +FREERTOS.configGENERATE_RUN_TIME_STATS=1 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +RCC.LPUART1Freq_Value=64000000 +PB10.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PB13.Mode=Output Compare1 CH1N +TIM16.Prescaler=500 - 1 +PC15-OSC32_OUT.GPIOParameters=GPIO_Label +I2C1.CustomTiming=Disabled +PA4.GPIO_Label=PA4 +ProjectManager.CustomerFirmwarePackage= +PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +RCC.HSI48_VALUE=48000000 +PC2.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +PA6.GPIOParameters=GPIO_Label +SH.GPXTI10.0=GPIO_EXTI10 +PCC.Ble.Mode=NOT_SELECTED +PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +RCC.PLLQoutputFreq_Value=64000000 +ProjectManager.ProjectFileName=f3.ioc +RCC.SMPSFreq_Value=8000000 +PA3.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD +FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;app_main,8,1024,app,As external,NULL,Dynamic,NULL,NULL +ADC1.Rank-0\#ChannelRegularConversion=1 +PA15.GPIOParameters=GPIO_PuPd,GPIO_Label +Mcu.PinsNb=64 +PC11.Locked=true +VP_SYS_VS_tim17.Mode=TIM17 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,EnableAnalogWatchDog1,ContinuousConvMode +PC13.Locked=true +ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE +RCC.HCLK3Freq_Value=64000000 +PA9.GPIO_Label=I2C_SCL +PC13.Signal=GPXTI13 +FREERTOS.configCHECK_FOR_STACK_OVERFLOW=1 +PC2.Signal=GPXTI2 +PC6.Signal=GPIO_Output +PB11.GPIO_Label=BUTTON_LEFT +PD1.Signal=SPI2_SCK +SH.S_TIM16_CH1.0=TIM16_CH1,PWM Generation1 CH1 +VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer +SPI1.CLKPhase=SPI_PHASE_2EDGE +OSC_IN.Locked=true +RCC.HCLK2Freq_Value=32000000 +PC0.Signal=GPIO_Analog +PC14-OSC32_IN.Signal=RCC_OSC32_IN +PC11.GPIOParameters=PinState,GPIO_Label Mcu.Pin62=VP_TIM16_VS_ClockSourceINT Mcu.Pin63=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS +Mcu.Pin60=VP_TIM1_VS_ClockSourceINT +Mcu.Pin61=VP_TIM2_VS_ClockSourceINT +PD0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PC3.GPIOParameters=GPIO_Label +PB8.GPIO_Label=SPEAKER +PA11.Locked=true +PA15.Locked=true +PA8.GPIO_Label=RFID_PULL +PC15-OSC32_OUT.Locked=true +Mcu.Pin59=VP_SYS_VS_tim17 +SH.GPXTI2.ConfNb=1 +Mcu.Pin57=VP_RTC_VS_RTC_Activate +Mcu.Pin58=VP_RTC_VS_RTC_Calendar +PC12.PinState=GPIO_PIN_SET +USB_DEVICE.PRODUCT_STRING_CDC_FS=Flipper Control Virtual ComPort +Mcu.Pin51=PB7 +Mcu.Pin52=VP_ADC1_TempSens_Input +Mcu.Pin50=PB6 +Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V2 +Mcu.Pin56=VP_HSEM_VS_HSEM +Mcu.Pin53=VP_ADC1_Vref_Input +Mcu.Pin54=VP_COMP1_VS_VREFINT14 +PC6.Locked=true +PA9.Signal=I2C1_SCL +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +I2C1.Timing=0x10707DBC +PB11.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PB9.Locked=true +PB5.Locked=true +OSC_IN.Signal=RCC_OSC_IN +Mcu.Pin48=PB4 +Mcu.Pin49=PB5 +RCC.PLLSAI1PoutputFreq_Value=48000000 +Mcu.Pin46=PD1 +Mcu.Pin47=PB3 +PB10.Signal=GPXTI10 +PB14.Signal=GPIO_Analog +PA5.Signal=GPIO_Analog +Mcu.Pin40=PA14 +Mcu.Pin41=PA15 +Mcu.Pin44=PC12 +Mcu.Pin45=PD0 +Mcu.Pin42=PC10 +Mcu.Pin43=PC11 +RCC.Cortex2Freq_Value=32000000 +ProjectManager.LastFirmware=true +PD1.Mode=TX_Only_Simplex_Unidirect_Master +Mcu.Pin37=PA11 +PB4.GPIO_Label=SPI_R_MISO +PCC.Ble.DataLength=6 +Mcu.Pin38=PA12 +Mcu.Pin35=PC6 +PB15.GPIO_Label=SPI_D_MOSI +RCC.I2C1Freq_Value=64000000 +Mcu.Pin36=PA10 +SPI1.Mode=SPI_MODE_MASTER +Mcu.Pin39=PA13 +RCC.LCDFreq_Value=32768 +RCC.RNGFreq_Value=32000 +PC2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input +Mcu.Pin30=PE4 +NVIC.COMP_IRQn=true\:5\:0\:true\:false\:true\:false\:false\:true +PA1.GPIO_Label=LED_RED +Mcu.Pin33=PB14 +Mcu.Pin34=PB15 +Mcu.Pin31=PB12 +Mcu.Pin32=PB13 +PA9.Locked=true +VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true +PC10.GPIOParameters=GPIO_Label +PA13.Mode=Serial_Wire +ProjectManager.FreePins=false +PB10.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +RCC.LPTIM2Freq_Value=64000000 +Mcu.Pin26=OSC_OUT +Mcu.Pin27=OSC_IN +Mcu.Pin24=PB11 +ProjectManager.UnderRoot=false +Mcu.Pin25=RF1 +Mcu.Pin28=PB0 +Mcu.Pin29=PB1 +PB4.Locked=true +PA4.Signal=GPIO_Analog +Mcu.Pin22=PB2 +PB5.Signal=SPI1_MOSI +Mcu.Pin23=PB10 +Mcu.Pin20=PC4 +ADC1.master=1 +PA3.Locked=true +Mcu.Pin21=PC5 +PA5.GPIO_Label=PA5 +PA10.Locked=true +NVIC.ForceEnableDMAVector=true +OSC_IN.Mode=HSE-External-Oscillator +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PC12.GPIO_Label=SD_CS +ProjectManager.CompilerOptimize=6 +PA11.Signal=USB_DM +ProjectManager.HeapSize=0x200 +PA0.GPIOParameters=GPIO_Label +Mcu.Pin15=PA5 +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +Mcu.Pin16=PA6 +Mcu.Pin13=PA3 +Mcu.Pin14=PA4 +Mcu.Pin19=PA9 +ProjectManager.ComputerToolchain=false +Mcu.Pin17=PA7 +Mcu.Pin18=PA8 +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +Mcu.Pin11=PA1 +Mcu.Pin12=PA2 +PD0.GPIOParameters=GPIO_Speed,PinState,GPIO_Label +Mcu.Pin10=PA0 +SH.GPXTI10.ConfNb=1 +USB_DEVICE.APP_RX_DATA_SIZE=512 +TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +PC3.GPIO_Label=PC3 +PA3.PinState=GPIO_PIN_SET +PE4.PinState=GPIO_PIN_SET +RCC.PWRFreq_Value=64000000 +SPI2.DataSize=SPI_DATASIZE_8BIT +SH.SharedAnalog_PC5.ConfNb=2 +SH.GPXTI1.ConfNb=1 +PB12.GPIO_PuPd=GPIO_PULLUP +PD1.Locked=true +PB0.Signal=GPIO_Output +PA7.GPIOParameters=GPIO_Label +PC1.Signal=GPIO_Analog +PB12.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +Mcu.Family=STM32WB +SH.GPXTI1.0=GPIO_EXTI1 +ProjectManager.MainLocation=Src +OSC_OUT.GPIO_Label=QUARTZ_32KHZ_OUT +USB_DEVICE.CLASS_NAME_FS=CDC +RCC.SAI1Freq_Value=48000000 +RCC.CortexFreq_Value=64000000 +TIM2.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1 +ProjectManager.KeepUserCode=true +Mcu.UserName=STM32WB55RGVx +ADC1.ContinuousConvMode=DISABLE +RCC.RFWKPFreq_Value=976.5625 +PC10.Signal=GPIO_Analog +RCC.PLLSAI1RoutputFreq_Value=48000000 +PC5.Locked=true +PA0.GPIO_Label=IR_RX +PA12.GPIOParameters=GPIO_Speed +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_RTC_Init-RTC-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_SPI2_Init-SPI2-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_USB_Device_Init-USB_DEVICE-false-HAL-false,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM16_Init-TIM16-false-HAL-true,13-MX_COMP1_Init-COMP1-false-HAL-true,14-MX_RF_Init-RF-false-HAL-true,0-MX_HSEM_Init-HSEM-false-HAL-true +PC0.GPIOParameters=GPIO_Label +PA9.GPIOParameters=GPIO_Speed,GPIO_Label +PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW +PH3-BOOT0.GPIO_Label=BOOT0 +PA11.GPIOParameters=GPIO_Speed +PD0.GPIO_Label=CC1101_CS +PC0.GPIO_Label=PC0 +PA11.Mode=Device +PB0.GPIO_Label=DISPLAY_RST +VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar +PB11.GPIO_PuPd=GPIO_PULLUP +PC13.GPIO_Label=BUTTON_BACK +PB13.GPIO_Label=RFID_OUT +PB11.Signal=GPXTI11 +PB15.Signal=SPI2_MOSI +OSC_OUT.GPIOParameters=GPIO_Label +ProjectManager.StackSize=0x400 +PB5.GPIOParameters=GPIO_Label +VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 +SH.GPXTI2.0=GPIO_EXTI2 +RCC.I2C3Freq_Value=64000000 +Mcu.IP4=I2C1 +Mcu.IP5=NVIC +RCC.FCLKCortexFreq_Value=64000000 +USB_DEVICE.MANUFACTURER_STRING=Flipper +Mcu.IP2=FREERTOS +I2C1.IPParameters=Timing,CustomTiming +Mcu.IP3=HSEM +PA15.GPIO_Label=DISPLAY_BACKLIGHT +PB4.GPIOParameters=GPIO_Label +Mcu.IP0=ADC1 +PA12.Locked=true +Mcu.IP1=COMP1 +PA12.Signal=USB_DP +PE4.GPIOParameters=GPIO_Speed,PinState,GPIO_Label +Mcu.UserConstants= +RCC.VCOSAI1OutputFreq_Value=96000000 +TIM2.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING +PC1.GPIOParameters=GPIO_Label +SH.GPXTI13.ConfNb=1 +Mcu.ThirdPartyNb=0 +PB1.GPIO_PuPd=GPIO_PULLUP +RCC.HCLKFreq_Value=64000000 +Mcu.IPNb=18 +ProjectManager.PreviousToolchain= +PB1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +PA8.GPIOParameters=GPIO_Label +Mcu.Pin6=PC0 Mcu.Pin7=PC1 Mcu.Pin8=PC2 Mcu.Pin9=PC3 -Mcu.PinsNb=64 -Mcu.ThirdPartyNb=0 -Mcu.UserConstants= -Mcu.UserName=STM32WB55RGVx -MxCube.Version=6.0.1 -MxDb.Version=DB.6.0.0 -NVIC.ADC1_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.COMP_IRQn=true\:5\:0\:true\:false\:true\:false\:false\:true -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.EXTI15_10_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.EXTI1_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.EXTI2_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.EXTI9_5_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.ForceEnableDMAVector=true -NVIC.HSEM_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false -NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false -NVIC.SavedPendsvIrqHandlerGenerated=false -NVIC.SavedSvcallIrqHandlerGenerated=false -NVIC.SavedSystickIrqHandlerGenerated=true -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false -NVIC.TIM1_TRG_COM_TIM17_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true -NVIC.TIM2_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true -NVIC.TimeBase=TIM1_TRG_COM_TIM17_IRQn -NVIC.TimeBaseIP=TIM17 -NVIC.USB_LP_IRQn=true\:5\:0\:true\:false\:true\:true\:false\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -OSC_IN.GPIOParameters=GPIO_Label -OSC_IN.GPIO_Label=QUARTZ_32KHZ_IN -OSC_IN.Locked=true -OSC_IN.Mode=HSE-External-Oscillator -OSC_IN.Signal=RCC_OSC_IN -OSC_OUT.GPIOParameters=GPIO_Label -OSC_OUT.GPIO_Label=QUARTZ_32KHZ_OUT -OSC_OUT.Locked=true OSC_OUT.Mode=HSE-External-Oscillator +FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,HEAP_NUMBER,configUSE_TIMERS,configUSE_IDLE_HOOK,FootprintOK,configCHECK_FOR_STACK_OVERFLOW,configRECORD_STACK_HIGH_ADDRESS,configGENERATE_RUN_TIME_STATS,configENABLE_FPU OSC_OUT.Signal=RCC_OSC_OUT -PA0.GPIOParameters=GPIO_Label -PA0.GPIO_Label=IR_RX -PA0.Signal=S_TIM2_CH1 -PA1.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP -PA1.GPIO_Label=LED_RED -PA1.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD -PA1.GPIO_Speed=GPIO_SPEED_FREQ_LOW -PA1.Locked=true -PA1.PinState=GPIO_PIN_SET -PA1.Signal=GPIO_Output -PA10.GPIOParameters=GPIO_Speed,GPIO_Label -PA10.GPIO_Label=I2C_SDA -PA10.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PA10.Locked=true -PA10.Mode=I2C -PA10.Signal=I2C1_SDA -PA11.GPIOParameters=GPIO_Speed -PA11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PA11.Locked=true -PA11.Mode=Device -PA11.Signal=USB_DM -PA12.GPIOParameters=GPIO_Speed -PA12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PA12.Locked=true -PA12.Mode=Device -PA12.Signal=USB_DP -PA13.Locked=true -PA13.Mode=Serial_Wire -PA13.Signal=SYS_JTMS-SWDIO -PA14.Locked=true -PA14.Mode=Serial_Wire -PA14.Signal=SYS_JTCK-SWCLK -PA15.GPIOParameters=GPIO_PuPd,GPIO_Label -PA15.GPIO_Label=DISPLAY_BACKLIGHT -PA15.GPIO_PuPd=GPIO_PULLDOWN -PA15.Locked=true -PA15.Signal=GPIO_Output -PA2.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP -PA2.GPIO_Label=LED_GREEN -PA2.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD -PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW -PA2.Locked=true -PA2.PinState=GPIO_PIN_SET -PA2.Signal=GPIO_Output -PA3.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP -PA3.GPIO_Label=LED_BLUE -PA3.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD -PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW -PA3.Locked=true -PA3.PinState=GPIO_PIN_SET -PA3.Signal=GPIO_Output -PA4.GPIOParameters=GPIO_Label -PA4.GPIO_Label=PA4 -PA4.Signal=GPIO_Analog -PA5.GPIOParameters=GPIO_Label -PA5.GPIO_Label=PA5 -PA5.Signal=GPIO_Analog -PA6.GPIOParameters=GPIO_Label -PA6.GPIO_Label=PA6 -PA6.Signal=GPIO_Analog -PA7.GPIOParameters=GPIO_Label -PA7.GPIO_Label=PA7 -PA7.Signal=GPIO_Analog -PA8.GPIOParameters=GPIO_Label -PA8.GPIO_Label=RFID_PULL -PA8.Locked=true -PA8.Signal=GPXTI8 -PA9.GPIOParameters=GPIO_Speed,GPIO_Label -PA9.GPIO_Label=I2C_SCL -PA9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PA9.Locked=true -PA9.Mode=I2C -PA9.Signal=I2C1_SCL -PB0.GPIOParameters=GPIO_Label -PB0.GPIO_Label=DISPLAY_RST -PB0.Locked=true -PB0.Signal=GPIO_Output -PB1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PB1.GPIO_Label=BUTTON_DOWN -PB1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PB1.GPIO_PuPd=GPIO_PULLUP -PB1.Locked=true -PB1.Signal=GPXTI1 -PB10.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PB10.GPIO_Label=BUTTON_UP -PB10.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PB10.GPIO_PuPd=GPIO_PULLUP -PB10.Locked=true -PB10.Signal=GPXTI10 -PB11.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PB11.GPIO_Label=BUTTON_LEFT -PB11.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PB11.GPIO_PuPd=GPIO_PULLUP -PB11.Locked=true -PB11.Signal=GPXTI11 -PB12.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PB12.GPIO_Label=BUTTON_RIGHT -PB12.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PB12.GPIO_PuPd=GPIO_PULLUP -PB12.Locked=true -PB12.Signal=GPXTI12 -PB13.GPIOParameters=GPIO_Label -PB13.GPIO_Label=RFID_OUT -PB13.Locked=true -PB13.Mode=Output Compare1 CH1N -PB13.Signal=TIM1_CH1N -PB14.GPIOParameters=GPIO_Label -PB14.GPIO_Label=iBTN -PB14.Signal=GPIO_Analog -PB15.GPIOParameters=GPIO_Label -PB15.GPIO_Label=SPI_D_MOSI -PB15.Locked=true -PB15.Mode=TX_Only_Simplex_Unidirect_Master -PB15.Signal=SPI2_MOSI -PB2.GPIOParameters=GPIO_Label -PB2.GPIO_Label=PB2 -PB2.Signal=GPIO_Analog -PB3.GPIOParameters=GPIO_Label -PB3.GPIO_Label=SPI_R_SCK -PB3.Locked=true -PB3.Mode=Full_Duplex_Master -PB3.Signal=SPI1_SCK -PB4.GPIOParameters=GPIO_Label -PB4.GPIO_Label=SPI_R_MISO -PB4.Locked=true -PB4.Mode=Full_Duplex_Master -PB4.Signal=SPI1_MISO -PB5.GPIOParameters=GPIO_Label -PB5.GPIO_Label=SPI_R_MOSI -PB5.Locked=true -PB5.Mode=Full_Duplex_Master -PB5.Signal=SPI1_MOSI -PB6.Locked=true -PB6.Mode=Asynchronous -PB6.Signal=USART1_TX -PB7.Locked=true -PB7.Mode=Asynchronous -PB7.Signal=USART1_RX -PB8.GPIOParameters=GPIO_Label -PB8.GPIO_Label=SPEAKER -PB8.Locked=true -PB8.Signal=S_TIM16_CH1 -PB9.GPIOParameters=GPIO_Label -PB9.GPIO_Label=IR_TX -PB9.Locked=true -PB9.Mode=PWM Generation3 CH3N -PB9.Signal=TIM1_CH3N -PC0.GPIOParameters=GPIO_Label -PC0.GPIO_Label=PC0 -PC0.Signal=GPIO_Analog -PC1.GPIOParameters=GPIO_Label -PC1.GPIO_Label=PC1 -PC1.Signal=GPIO_Analog -PC10.GPIOParameters=GPIO_Label -PC10.GPIO_Label=PC10 -PC10.Signal=GPIO_Analog -PC11.GPIOParameters=PinState,GPIO_Label -PC11.GPIO_Label=DISPLAY_CS -PC11.Locked=true -PC11.PinState=GPIO_PIN_SET -PC11.Signal=GPIO_Output -PC12.GPIOParameters=GPIO_Speed,PinState,GPIO_Label -PC12.GPIO_Label=SD_CS -PC12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PC12.Locked=true -PC12.PinState=GPIO_PIN_SET -PC12.Signal=GPIO_Output -PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PC13.GPIO_Label=BUTTON_BACK -PC13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PC13.GPIO_PuPd=GPIO_PULLUP -PC13.Locked=true -PC13.Signal=GPXTI13 -PC14-OSC32_IN.GPIOParameters=GPIO_Label -PC14-OSC32_IN.GPIO_Label=QUARTZ_32MHZ_IN -PC14-OSC32_IN.Locked=true -PC14-OSC32_IN.Mode=LSE-External-Oscillator -PC14-OSC32_IN.Signal=RCC_OSC32_IN -PC15-OSC32_OUT.GPIOParameters=GPIO_Label -PC15-OSC32_OUT.GPIO_Label=QUARTZ_32MHZ_OUT -PC15-OSC32_OUT.Locked=true -PC15-OSC32_OUT.Mode=LSE-External-Oscillator -PC15-OSC32_OUT.Signal=RCC_OSC32_OUT -PC2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PC2.GPIO_Label=BUTTON_OK -PC2.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PC2.GPIO_PuPd=GPIO_PULLUP -PC2.Locked=true -PC2.Signal=GPXTI2 -PC3.GPIOParameters=GPIO_Label -PC3.GPIO_Label=PC3 -PC3.Signal=GPIO_Analog -PC4.GPIOParameters=GPIO_Label -PC4.GPIO_Label=CC1101_G0 -PC4.Locked=true -PC4.Signal=GPIO_Input -PC5.GPIOParameters=GPIO_Label -PC5.GPIO_Label=RFID_RF_IN -PC5.Locked=true -PC5.Signal=SharedAnalog_PC5 -PC6.GPIOParameters=GPIO_Label -PC6.GPIO_Label=DISPLAY_DI -PC6.Locked=true -PC6.Signal=GPIO_Output -PCC.Ble.ConnectionInterval=1000.0 -PCC.Ble.DataLength=6 -PCC.Ble.Mode=NOT_SELECTED -PCC.Ble.PowerLevel=Min -PD0.GPIOParameters=GPIO_Speed,PinState,GPIO_Label -PD0.GPIO_Label=CC1101_CS -PD0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PD0.Locked=true -PD0.PinState=GPIO_PIN_SET -PD0.Signal=GPIO_Output -PD1.GPIOParameters=GPIO_Label -PD1.GPIO_Label=SPI_D_SCK -PD1.Locked=true -PD1.Mode=TX_Only_Simplex_Unidirect_Master -PD1.Signal=SPI2_SCK -PE4.GPIOParameters=GPIO_Speed,PinState,GPIO_Label -PE4.GPIO_Label=NFC_CS -PE4.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH -PE4.Locked=true -PE4.PinState=GPIO_PIN_SET -PE4.Signal=GPIO_Output -PH3-BOOT0.GPIOParameters=GPIO_Label -PH3-BOOT0.GPIO_Label=BOOT0 -PH3-BOOT0.Locked=true -PH3-BOOT0.Signal=GPIO_Analog -PinOutPanel.RotationAngle=0 -ProjectManager.AskForMigrate=true -ProjectManager.BackupPrevious=false -ProjectManager.CompilerOptimize=6 -ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=true -ProjectManager.CustomerFirmwarePackage= -ProjectManager.DefaultFWLocation=true -ProjectManager.DeletePrevious=true -ProjectManager.DeviceId=STM32WB55RGVx -ProjectManager.FirmwarePackage=STM32Cube FW_WB V1.9.0 -ProjectManager.FreePins=false -ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 -ProjectManager.KeepUserCode=true -ProjectManager.LastFirmware=true -ProjectManager.LibraryCopy=2 -ProjectManager.MainLocation=Src -ProjectManager.NoMain=false -ProjectManager.PreviousToolchain= -ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=f3.ioc -ProjectManager.ProjectName=f3 -ProjectManager.RegisterCallBack= -ProjectManager.StackSize=0x400 -ProjectManager.TargetToolchain=Makefile -ProjectManager.ToolChainLocation= -ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_RTC_Init-RTC-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_SPI2_Init-SPI2-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_USB_Device_Init-USB_DEVICE-false-HAL-false,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM16_Init-TIM16-false-HAL-true,13-MX_COMP1_Init-COMP1-false-HAL-true,14-MX_RF_Init-RF-false-HAL-true,0-MX_HSEM_Init-HSEM-false-HAL-true -RCC.ADCFreq_Value=48000000 -RCC.AHB2CLKDivider=RCC_SYSCLK_DIV2 RCC.AHBFreq_Value=64000000 -RCC.APB1Freq_Value=64000000 -RCC.APB1TimFreq_Value=64000000 -RCC.APB2Freq_Value=64000000 -RCC.APB2TimFreq_Value=64000000 -RCC.APB3Freq_Value=16000000 -RCC.Cortex2Freq_Value=32000000 -RCC.CortexFreq_Value=64000000 -RCC.EnbaleCSS=true -RCC.FCLK2Freq_Value=32000000 -RCC.FCLKCortexFreq_Value=64000000 -RCC.FamilyName=M -RCC.HCLK2Freq_Value=32000000 -RCC.HCLK3Freq_Value=64000000 -RCC.HCLKFreq_Value=64000000 -RCC.HCLKRFFreq_Value=16000000 -RCC.HSE_VALUE=32000000 -RCC.HSI48_VALUE=48000000 -RCC.HSI_VALUE=16000000 -RCC.I2C1Freq_Value=64000000 -RCC.I2C3Freq_Value=64000000 -RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,EnbaleCSS,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSIOscState,PLLM,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSCLockSelectionVirtual,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value -RCC.LCDFreq_Value=32768 -RCC.LPTIM1Freq_Value=64000000 -RCC.LPTIM2Freq_Value=64000000 -RCC.LPUART1Freq_Value=64000000 -RCC.LSCOPinFreq_Value=32000 -RCC.LSI_VALUE=32000 -RCC.MCO1PinFreq_Value=64000000 -RCC.MSIOscState=DISABLED -RCC.PLLM=RCC_PLLM_DIV2 -RCC.PLLPoutputFreq_Value=64000000 -RCC.PLLQoutputFreq_Value=64000000 -RCC.PLLRCLKFreq_Value=64000000 -RCC.PLLSAI1N=6 -RCC.PLLSAI1PoutputFreq_Value=48000000 -RCC.PLLSAI1QoutputFreq_Value=48000000 -RCC.PLLSAI1RoutputFreq_Value=48000000 -RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE -RCC.PREFETCH_ENABLE=1 -RCC.PWRFreq_Value=64000000 -RCC.RFWKPFreq_Value=976.5625 -RCC.RNGFreq_Value=32000 -RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE -RCC.RTCFreq_Value=32768 -RCC.SAI1Freq_Value=48000000 -RCC.SMPS1Freq_Value=16000000 -RCC.SMPSCLockSelectionVirtual=RCC_SMPSCLKSOURCE_HSE -RCC.SMPSFreq_Value=8000000 -RCC.SYSCLKFreq_VALUE=64000000 -RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.USART1Freq_Value=64000000 -RCC.USBFreq_Value=48000000 -RCC.VCOInputFreq_Value=16000000 -RCC.VCOOutputFreq_Value=128000000 -RCC.VCOSAI1OutputFreq_Value=96000000 -RF1.Locked=true -RF1.Mode=RF1_Activate -RF1.Signal=RF_RF1 -SH.GPXTI1.0=GPIO_EXTI1 -SH.GPXTI1.ConfNb=1 -SH.GPXTI10.0=GPIO_EXTI10 -SH.GPXTI10.ConfNb=1 -SH.GPXTI11.0=GPIO_EXTI11 -SH.GPXTI11.ConfNb=1 -SH.GPXTI12.0=GPIO_EXTI12 -SH.GPXTI12.ConfNb=1 -SH.GPXTI13.0=GPIO_EXTI13 -SH.GPXTI13.ConfNb=1 -SH.GPXTI2.0=GPIO_EXTI2 -SH.GPXTI2.ConfNb=1 -SH.GPXTI8.0=GPIO_EXTI8 -SH.GPXTI8.ConfNb=1 -SH.S_TIM16_CH1.0=TIM16_CH1,PWM Generation1 CH1 -SH.S_TIM16_CH1.ConfNb=1 -SH.S_TIM2_CH1.0=TIM2_CH1,Input_Capture1_from_TI1 -SH.S_TIM2_CH1.1=TIM2_CH1,Input_Capture2_from_TI1 -SH.S_TIM2_CH1.ConfNb=2 -SH.SharedAnalog_PC5.0=COMP1_INP,INP -SH.SharedAnalog_PC5.1=ADC1_IN14,IN14-Single-Ended -SH.SharedAnalog_PC5.ConfNb=2 -SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 -SPI1.CLKPhase=SPI_PHASE_2EDGE -SPI1.CalculateBaudRate=4.0 MBits/s -SPI1.DataSize=SPI_DATASIZE_8BIT -SPI1.Direction=SPI_DIRECTION_2LINES -SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,CLKPhase -SPI1.Mode=SPI_MODE_MASTER -SPI1.VirtualType=VM_MASTER SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 -SPI2.CLKPhase=SPI_PHASE_1EDGE -SPI2.CalculateBaudRate=4.0 MBits/s -SPI2.DataSize=SPI_DATASIZE_8BIT -SPI2.Direction=SPI_DIRECTION_2LINES -SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPhase -SPI2.Mode=SPI_MODE_MASTER -SPI2.VirtualType=VM_MASTER -TIM1.Channel-Output\ Compare1\ CH1N=TIM_CHANNEL_1 -TIM1.Channel-PWM\ Generation3\ CH3N=TIM_CHANNEL_3 -TIM1.IPParameters=Channel-Output Compare1 CH1N,Channel-PWM Generation3 CH3N -TIM16.Channel=TIM_CHANNEL_1 -TIM16.IPParameters=Channel,Pulse,Prescaler,Period -TIM16.Period=291 -TIM16.Prescaler=500 - 1 -TIM16.Pulse=145 -TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE -TIM2.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1 +Mcu.Pin0=PC13 +Mcu.Pin1=PC14-OSC32_IN +GPIO.groupedBy=Show All +Mcu.Pin2=PC15-OSC32_OUT +Mcu.Pin3=PH3-BOOT0 +Mcu.Pin4=PB8 +Mcu.Pin5=PB9 +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_14 +RCC.HSE_VALUE=32000000 +RCC.FCLK2Freq_Value=32000000 +FREERTOS.configUSE_TIMERS=1 +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PH3-BOOT0.GPIOParameters=GPIO_Label +Mcu.IP10=SPI2 +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false +Mcu.IP12=TIM1 +Mcu.IP11=SYS +Mcu.IP17=USB_DEVICE +NVIC.TIM1_TRG_COM_TIM17_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true +PA2.PinState=GPIO_PIN_SET +Mcu.IP14=TIM16 +PB4.Mode=Full_Duplex_Master +Mcu.IP13=TIM2 +Mcu.IP16=USB +Mcu.IP15=USART1 +PC14-OSC32_IN.Mode=LSE-External-Oscillator +RCC.VCOInputFreq_Value=16000000 +PD0.PinState=GPIO_PIN_SET +PA14.Mode=Serial_Wire +PE4.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PC11.GPIO_Label=DISPLAY_CS +PB5.Mode=Full_Duplex_Master +File.Version=6 +PA10.GPIO_Label=I2C_SDA +PC13.GPIO_PuPd=GPIO_PULLUP +PB3.GPIOParameters=GPIO_Label +SH.S_TIM2_CH1.ConfNb=2 +PB7.Signal=USART1_RX +PB8.Locked=true +PE4.Signal=GPIO_Output +PB0.Locked=true +FREERTOS.configTOTAL_HEAP_SIZE=40960 +PC14-OSC32_IN.GPIOParameters=GPIO_Label +ProjectManager.ProjectName=f3 +RCC.APB3Freq_Value=16000000 +PA6.Signal=GPIO_Analog TIM2.Channel-Input_Capture2_from_TI1=TIM_CHANNEL_2 -TIM2.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING -TIM2.IPParameters=Channel-Input_Capture1_from_TI1,ICPolarity_CH1,AutoReloadPreload,Prescaler,Channel-Input_Capture2_from_TI1 -TIM2.Prescaler=64-1 -USART1.IPParameters=VirtualMode-Asynchronous -USART1.VirtualMode-Asynchronous=VM_ASYNC -USB_DEVICE.APP_RX_DATA_SIZE=512 -USB_DEVICE.APP_TX_DATA_SIZE=512 -USB_DEVICE.CLASS_NAME_FS=CDC -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,MANUFACTURER_STRING,PRODUCT_STRING_CDC_FS,APP_RX_DATA_SIZE,APP_TX_DATA_SIZE -USB_DEVICE.MANUFACTURER_STRING=Flipper -USB_DEVICE.PRODUCT_STRING_CDC_FS=Flipper Control Virtual ComPort -USB_DEVICE.VirtualMode=Cdc -USB_DEVICE.VirtualModeFS=Cdc_FS -VP_ADC1_TempSens_Input.Mode=IN-TempSens -VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input -VP_ADC1_Vref_Input.Mode=IN-Vrefint -VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input -VP_COMP1_VS_VREFINT14.Mode=VREFINT_14 -VP_COMP1_VS_VREFINT14.Signal=COMP1_VS_VREFINT14 -VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 -VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2 -VP_HSEM_VS_HSEM.Mode=HSEM_Activate -VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM -VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled -VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate -VP_RTC_VS_RTC_Calendar.Mode=RTC_Calendar -VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar -VP_SYS_VS_tim17.Mode=TIM17 -VP_SYS_VS_tim17.Signal=SYS_VS_tim17 -VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer -VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT -VP_TIM1_VS_ClockSourceINT.Mode=Internal -VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT -VP_TIM2_VS_ClockSourceINT.Mode=Internal -VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +RCC.EnbaleCSS=true +ProjectManager.ToolChainLocation= +PA2.GPIO_Label=LED_GREEN +RCC.LSI_VALUE=32000 +PB11.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +PA15.Signal=GPIO_Output VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS +RCC.MSIOscState=DISABLED +SPI2.CLKPhase=SPI_PHASE_1EDGE +PA10.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PB5.GPIO_Label=SPI_R_MOSI +PC4.Locked=true +PC14-OSC32_IN.GPIO_Label=QUARTZ_32MHZ_IN +SPI2.Direction=SPI_DIRECTION_2LINES +PC5.Signal=SharedAnalog_PC5 +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 +OSC_IN.GPIO_Label=QUARTZ_32KHZ_IN +PC2.GPIO_Label=BUTTON_OK +PC14-OSC32_IN.Locked=true +PA12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +COMP1.TriggerMode=COMP_TRIGGERMODE_IT_RISING_FALLING +PB15.Locked=true +PB3.Locked=true +PB4.Signal=SPI1_MISO +RCC.PLLSAI1N=6 +PA3.Signal=GPIO_Output +PA2.Locked=true +PB3.GPIO_Label=SPI_R_SCK +VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +SH.S_TIM2_CH1.1=TIM2_CH1,Input_Capture2_from_TI1 +SH.S_TIM2_CH1.0=TIM2_CH1,Input_Capture1_from_TI1 +PB8.GPIOParameters=GPIO_Label +PB9.GPIO_Label=IR_TX +PC10.GPIO_Label=PC10 +PA10.Mode=I2C +ProjectManager.NoMain=false +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,CLKPhase +USB_DEVICE.VirtualModeFS=Cdc_FS +PC4.GPIO_PuPd=GPIO_PULLDOWN +NVIC.SavedSvcallIrqHandlerGenerated=false +PC11.Signal=GPIO_Output +PC4.Signal=GPXTI4 +ProjectManager.DefaultFWLocation=true +VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM +OSC_IN.GPIOParameters=GPIO_Label +PB12.Locked=true +ProjectManager.DeletePrevious=true +PB10.Locked=true +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,MANUFACTURER_STRING,PRODUCT_STRING_CDC_FS,APP_RX_DATA_SIZE,APP_TX_DATA_SIZE +TIM16.Channel=TIM_CHANNEL_1 +RCC.AHB2CLKDivider=RCC_SYSCLK_DIV2 +RCC.FamilyName=M +PB9.GPIOParameters=GPIO_Label +PC12.GPIOParameters=GPIO_Speed,PinState,GPIO_Label +USART1.VirtualMode-Asynchronous=VM_ASYNC +PA13.Signal=SYS_JTMS-SWDIO +FREERTOS.configUSE_IDLE_HOOK=1 +VP_COMP1_VS_VREFINT14.Mode=VREFINT_14 +PA9.Mode=I2C +TIM1.Channel-Output\ Compare1\ CH1N=TIM_CHANNEL_1 +FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 +ProjectManager.TargetToolchain=Makefile +PB10.GPIO_Label=BUTTON_UP +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +RCC.HCLKRFFreq_Value=16000000 +PC5.GPIOParameters=GPIO_Label +PB9.Mode=PWM Generation3 CH3N +PB2.GPIOParameters=GPIO_Label +SH.GPXTI12.ConfNb=1 +PE4.Locked=true +SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPhase +ADC1.EnableAnalogWatchDog1=false +PC2.Locked=true +ProjectManager.RegisterCallBack= +RCC.USBFreq_Value=48000000 +TIM1.Channel-PWM\ Generation3\ CH3N=TIM_CHANNEL_3 +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PA1.Signal=GPIO_Output +PB1.Locked=true +RCC.SMPSCLockSelectionVirtual=RCC_SMPSCLKSOURCE_HSE board=custom +RCC.VCOOutputFreq_Value=128000000 +RCC.SMPS1Freq_Value=16000000 +PB15.Mode=TX_Only_Simplex_Unidirect_Master +TIM16.Period=291 +NVIC.SavedSystickIrqHandlerGenerated=true +RCC.APB2Freq_Value=64000000 +PC11.PinState=GPIO_PIN_SET +COMP1.IPParameters=TriggerMode,Hysteresis,Mode +MxCube.Version=6.0.1 +VP_TIM2_VS_ClockSourceINT.Mode=Internal +PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PA1.GPIO_Speed=GPIO_SPEED_FREQ_LOW +SH.SharedAnalog_PC5.0=COMP1_INP,INP +RCC.PLLSAI1QoutputFreq_Value=48000000 +RCC.ADCFreq_Value=48000000 +PC1.GPIO_Label=PC1 +PA10.GPIOParameters=GPIO_Speed,GPIO_Label +VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input +SH.SharedAnalog_PC5.1=ADC1_IN14,IN14-Single-Ended +OSC_OUT.Locked=true +PA4.GPIOParameters=GPIO_Label +PC2.GPIO_PuPd=GPIO_PULLUP +PB15.GPIOParameters=GPIO_Label +RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,EnbaleCSS,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSIOscState,PLLM,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSCLockSelectionVirtual,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value +ProjectManager.AskForMigrate=true +Mcu.Name=STM32WB55RGVx +NVIC.SavedPendsvIrqHandlerGenerated=false +PA2.Signal=GPIO_Output +Mcu.IP8=RTC +VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2 +Mcu.IP9=SPI1 +Mcu.IP6=RCC +Mcu.IP7=RF +ProjectManager.CoupleFile=true +PB3.Signal=SPI1_SCK +RCC.SYSCLKFreq_VALUE=64000000 +PA7.GPIO_Label=PA7 +PA1.Locked=true +SH.GPXTI4.0=GPIO_EXTI4 +PA12.Mode=Device +PCC.Ble.ConnectionInterval=1000.0 +KeepUserPlacement=false +PC13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +PC5.GPIO_Label=RFID_RF_IN +PA13.Locked=true +RF1.Mode=RF1_Activate +PB7.Mode=Asynchronous +NVIC.EXTI9_5_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true +USB_DEVICE.APP_TX_DATA_SIZE=512 +PA14.Signal=SYS_JTCK-SWCLK +PB2.GPIO_Label=PB2 +SH.GPXTI4.ConfNb=1 +PC6.GPIOParameters=GPIO_Label +PB12.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +RCC.HSI_VALUE=16000000 +ADC1.NbrOfConversionFlag=1 +RCC.PLLM=RCC_PLLM_DIV2 +PA15.GPIO_PuPd=GPIO_PULLDOWN +PB7.Locked=true +PB8.Signal=S_TIM16_CH1 +PA9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +TIM16.IPParameters=Channel,Pulse,Prescaler,Period +RCC.APB1Freq_Value=64000000 +PC12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +USB_DEVICE.VirtualMode=Cdc +PB11.Locked=true +ProjectManager.DeviceId=STM32WB55RGVx +PB12.Signal=GPXTI12 +ProjectManager.LibraryCopy=2 +PA3.GPIO_Label=LED_BLUE +PB1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PA7.Signal=GPIO_Analog +PA1.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD diff --git a/firmware/targets/local/api-hal/api-hal-gpio.c b/firmware/targets/local/api-hal/api-hal-gpio.c index 574b28a3..88458e9e 100644 --- a/firmware/targets/local/api-hal/api-hal-gpio.c +++ b/firmware/targets/local/api-hal/api-hal-gpio.c @@ -49,3 +49,7 @@ bool hal_gpio_read(const GpioPin* gpio) { // TODO emulate pin state? return false; } + +void enable_cc1101_irq() { + printf("enable cc1101 irq\n"); +} diff --git a/firmware/targets/local/api-hal/api-hal-gpio.h b/firmware/targets/local/api-hal/api-hal-gpio.h index 10097b5a..0fa4e5eb 100644 --- a/firmware/targets/local/api-hal/api-hal-gpio.h +++ b/firmware/targets/local/api-hal/api-hal-gpio.h @@ -50,4 +50,6 @@ void hal_gpio_init( void hal_gpio_write(const GpioPin* gpio, const bool state); // read value from GPIO, false = LOW, true = HIGH -bool hal_gpio_read(const GpioPin* gpio); \ No newline at end of file +bool hal_gpio_read(const GpioPin* gpio); + +void enable_cc1101_irq();