Refactor F2/local before F3 merge (#220)
* add files from f3 * rollback lfs * Move assets from LFS * remove lfs from build Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
							
								
								
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,5 +1 @@ | |||||||
| *.pdf filter=lfs diff=lfs merge=lfs -text | 
 | ||||||
| *.gif filter=lfs diff=lfs merge=lfs -text |  | ||||||
| *.png filter=lfs diff=lfs merge=lfs -text |  | ||||||
| *.jpg filter=lfs diff=lfs merge=lfs -text |  | ||||||
| *.jpeg filter=lfs diff=lfs merge=lfs -text |  | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -15,7 +15,6 @@ jobs: | |||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|         with: |         with: | ||||||
|             submodules: true |             submodules: true | ||||||
|             lfs: true |  | ||||||
| 
 | 
 | ||||||
|       - uses: satackey/action-docker-layer-caching@v0.0.8 |       - uses: satackey/action-docker-layer-caching@v0.0.8 | ||||||
|         continue-on-error: true |         continue-on-error: true | ||||||
|  | |||||||
| @ -46,6 +46,10 @@ const FlipperStartupApp FLIPPER_STARTUP[] = { | |||||||
|     {.app = input_task, .name = "input_task", .libs = {0}}, |     {.app = input_task, .name = "input_task", .libs = {0}}, | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef APP_EXAMPLE_INPUT_DUMP | ||||||
|  |     {.app = application_input_dump, .name = "input dump", .libs = {1, FURI_LIB{"input_task"}}}, | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #ifdef APP_GUI | #ifdef APP_GUI | ||||||
|     {.app = backlight_control, .name = "backlight_control", .libs = {1, FURI_LIB{"input_task"}}}, |     {.app = backlight_control, .name = "backlight_control", .libs = {1, FURI_LIB{"input_task"}}}, | ||||||
|     {.app = gui_task, .name = "gui_task", .libs = {0}}, |     {.app = gui_task, .name = "gui_task", .libs = {0}}, | ||||||
| @ -102,7 +106,7 @@ const FlipperStartupApp FLIPPER_STARTUP[] = { | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef APP_SPEAKER_DEMO | #ifdef APP_SPEAKER_DEMO | ||||||
|     {.app = coreglitch_demo_0, .name = "coreglitch_demo_0", .libs = ""}, |     {.app = coreglitch_demo_0, .name = "coreglitch_demo_0", .libs = {0}}, | ||||||
| #endif | #endif | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,8 +7,15 @@ static void event_cb(const void* value, void* ctx) { | |||||||
| const uint32_t BACKLIGHT_TIME = 10000; | const uint32_t BACKLIGHT_TIME = 10000; | ||||||
| 
 | 
 | ||||||
| void backlight_control(void* p) { | void backlight_control(void* p) { | ||||||
|     // TODO use FURI
 |     // create pin
 | ||||||
|     HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_SET); |     GpioPin backlight = backlight_gpio; | ||||||
|  | 
 | ||||||
|  |     // TODO open record
 | ||||||
|  |     GpioPin* backlight_record = &backlight; | ||||||
|  | 
 | ||||||
|  |     // configure pin
 | ||||||
|  |     gpio_init(backlight_record, GpioModeOutputPushPull); | ||||||
|  |     gpio_write(backlight_record, true); | ||||||
| 
 | 
 | ||||||
|     StaticSemaphore_t event_descriptor; |     StaticSemaphore_t event_descriptor; | ||||||
|     SemaphoreHandle_t update = xSemaphoreCreateCountingStatic(255, 0, &event_descriptor); |     SemaphoreHandle_t update = xSemaphoreCreateCountingStatic(255, 0, &event_descriptor); | ||||||
| @ -24,9 +31,9 @@ void backlight_control(void* p) { | |||||||
|     while(1) { |     while(1) { | ||||||
|         // wait for event
 |         // wait for event
 | ||||||
|         if(xSemaphoreTake(update, BACKLIGHT_TIME) == pdTRUE) { |         if(xSemaphoreTake(update, BACKLIGHT_TIME) == pdTRUE) { | ||||||
|             HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_SET); |             gpio_write(backlight_record, true); | ||||||
|         } else { |         } else { | ||||||
|             HAL_GPIO_WritePin(DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin, GPIO_PIN_RESET); |             gpio_write(backlight_record, false); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -1,5 +1,6 @@ | |||||||
| #include "flipper_v2.h" | #include "flipper_v2.h" | ||||||
| #include "cc1101-workaround/cc1101.h" | #include "cc1101-workaround/cc1101.h" | ||||||
|  | #include "spi.h" | ||||||
| 
 | 
 | ||||||
| // ******************************************************************************
 | // ******************************************************************************
 | ||||||
| #define WRITE_BURST 0x40 | #define WRITE_BURST 0x40 | ||||||
| @ -27,34 +28,14 @@ CC1101::CC1101(GpioPin* ss_pin) { | |||||||
| //******************************************************************************
 | //******************************************************************************
 | ||||||
| //SpiInit
 | //SpiInit
 | ||||||
| /******************************************************************************/ | /******************************************************************************/ | ||||||
| extern SPI_HandleTypeDef hspi3; | extern SPI_HandleTypeDef SPI_R; | ||||||
| void CC1101::SpiInit(void) { | void CC1101::SpiInit(void) { | ||||||
|     //initialize spi pins
 |     //initialize spi pins
 | ||||||
| 
 | 
 | ||||||
|     //Enable spi master, MSB, SPI mode 0, FOSC/4
 |     //Enable spi master, MSB, SPI mode 0, FOSC/4
 | ||||||
|     SpiMode(0); |     SpiMode(0); | ||||||
| 
 | 
 | ||||||
|     if(HAL_SPI_DeInit(&hspi3) != HAL_OK) { |     CC1101_SPI_Reconfigure(); | ||||||
|         Error_Handler(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     hspi3.Init.Mode = SPI_MODE_MASTER; |  | ||||||
|     hspi3.Init.Direction = SPI_DIRECTION_2LINES; |  | ||||||
|     hspi3.Init.DataSize = SPI_DATASIZE_8BIT; |  | ||||||
|     hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; |  | ||||||
|     hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; |  | ||||||
|     hspi3.Init.NSS = SPI_NSS_SOFT; |  | ||||||
|     hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; |  | ||||||
|     hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; |  | ||||||
|     hspi3.Init.TIMode = SPI_TIMODE_DISABLE; |  | ||||||
|     hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |  | ||||||
|     hspi3.Init.CRCPolynomial = 7; |  | ||||||
|     hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; |  | ||||||
|     hspi3.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; |  | ||||||
| 
 |  | ||||||
|     if(HAL_SPI_Init(&hspi3) != HAL_OK) { |  | ||||||
|         Error_Handler(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CC1101::SpiEnd(void) { | void CC1101::SpiEnd(void) { | ||||||
| @ -99,7 +80,7 @@ uint8_t CC1101::SpiTransfer(uint8_t value) { | |||||||
|     uint8_t buf[1] = {value}; |     uint8_t buf[1] = {value}; | ||||||
|     uint8_t rxbuf[1] = {0}; |     uint8_t rxbuf[1] = {0}; | ||||||
| 
 | 
 | ||||||
|     HAL_SPI_TransmitReceive(&hspi3, buf, rxbuf, 1, HAL_MAX_DELAY); |     HAL_SPI_TransmitReceive(&SPI_R, buf, rxbuf, 1, HAL_MAX_DELAY); | ||||||
| 
 | 
 | ||||||
|     return rxbuf[0]; |     return rxbuf[0]; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #include "flipper.h" | #include "flipper.h" | ||||||
| #include "u8g2/u8g2.h" | #include "u8g2/u8g2.h" | ||||||
| 
 | 
 | ||||||
| extern TIM_HandleTypeDef htim5; | extern TIM_HandleTypeDef SPEAKER_TIM; | ||||||
| 
 | 
 | ||||||
| void coreglitch_demo_0(void* p) { | void coreglitch_demo_0(void* p) { | ||||||
|     FuriRecordSubscriber* log = get_default_log(); |     FuriRecordSubscriber* log = get_default_log(); | ||||||
| @ -40,7 +40,8 @@ void coreglitch_demo_0(void* p) { | |||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // TODO get sound from FURI
 |             // TODO get sound from FURI
 | ||||||
|             hal_pwm_set(width, freq, &htim5, TIM_CHANNEL_4); |             hal_pwm_set(width, freq, &SPEAKER_TIM, SPEAKER_CH); | ||||||
|  | 
 | ||||||
|             // delay(1);
 |             // delay(1);
 | ||||||
| 
 | 
 | ||||||
|             cnt++; |             cnt++; | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| #include "u8g2/u8g2.h" | #include "u8g2/u8g2.h" | ||||||
| #include "flipper.h" | #include "flipper.h" | ||||||
|  | #include "main.h" | ||||||
| 
 | 
 | ||||||
| extern SPI_HandleTypeDef hspi1; | extern SPI_HandleTypeDef SPI_D; | ||||||
| 
 | 
 | ||||||
| // TODO: fix log
 | // TODO: fix log
 | ||||||
| #ifdef DEBUG | #ifdef DEBUG | ||||||
| @ -63,7 +64,7 @@ static uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, voi | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|         // TODO change it to FuriRecord SPI
 |         // TODO change it to FuriRecord SPI
 | ||||||
|         HAL_SPI_Transmit(&hspi1, (uint8_t*)arg_ptr, arg_int, 10000); |         HAL_SPI_Transmit(&SPI_D, (uint8_t*)arg_ptr, arg_int, 10000); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|     case U8X8_MSG_BYTE_SET_DC: |     case U8X8_MSG_BYTE_SET_DC: | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| void application_blink(void* p) { | void application_blink(void* p) { | ||||||
|     // create pin
 |     // create pin
 | ||||||
|     GpioPin led = {.pin = GPIO_PIN_8, .port = GPIOA}; |     GpioPin led = led_gpio[0]; | ||||||
| 
 | 
 | ||||||
|     // TODO open record
 |     // TODO open record
 | ||||||
|     GpioPin* led_record = &led; |     GpioPin* led_record = &led; | ||||||
|  | |||||||
| @ -50,55 +50,37 @@ void fatfs_list(void* p) { | |||||||
|     QueueHandle_t event_queue = xQueueCreate(2, sizeof(AppEvent)); |     QueueHandle_t event_queue = xQueueCreate(2, sizeof(AppEvent)); | ||||||
| 
 | 
 | ||||||
|     furi_log = get_default_log(); |     furi_log = get_default_log(); | ||||||
|  |     fuprintf(furi_log, "[fatfs_list] app start\n"); | ||||||
| 
 | 
 | ||||||
|     FuriRecordSubscriber* fb_record = |     FuriRecordSubscriber* fb_record = | ||||||
|         furi_open_deprecated("u8g2_fb", false, false, NULL, NULL, NULL); |         furi_open_deprecated("u8g2_fb", false, false, NULL, NULL, NULL); | ||||||
|     if(fb_record == NULL) { |     if(fb_record == NULL) { | ||||||
|         fuprintf(furi_log, "[widget][fatfs_list] cannot create fb record\n"); |         fuprintf(furi_log, "[fatfs_list] cannot create fb record\n"); | ||||||
|         furiac_exit(NULL); |         furiac_exit(NULL); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     PubSub* event_record = furi_open("input_events"); |     PubSub* event_record = furi_open("input_events"); | ||||||
|     if(event_record == NULL) { |     if(event_record == NULL) { | ||||||
|         fuprintf(furi_log, "[widget][fatfs_list] cannot open input_events record\n"); |         fuprintf(furi_log, "[fatfs_list] cannot open input_events record\n"); | ||||||
|         furiac_exit(NULL); |         furiac_exit(NULL); | ||||||
|     } |     } | ||||||
|     PubSubItem* subscription = subscribe_pubsub(event_record, event_cb, event_queue); |     PubSubItem* subscription = subscribe_pubsub(event_record, event_cb, event_queue); | ||||||
|     if(subscription == NULL) { |     if(subscription == NULL) { | ||||||
|         fuprintf(furi_log, "[widget][fatfs_list] cannot register input_events callback\n"); |         fuprintf(furi_log, "[fatfs_list] cannot register input_events callback\n"); | ||||||
|         furiac_exit(NULL); |         furiac_exit(NULL); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // clear display
 |  | ||||||
|     u8g2_t* fb = furi_take(fb_record); |  | ||||||
|     u8g2_ClearBuffer(fb); |  | ||||||
|     furi_commit(fb_record); |  | ||||||
| 
 |  | ||||||
|     bsp_result = BSP_SD_Init(); |     bsp_result = BSP_SD_Init(); | ||||||
| 
 | 
 | ||||||
|     if(bsp_result != 0) { |     if(bsp_result != 0) { | ||||||
|         furi_take(fb_record); |         fuprintf(furi_log, "[fatfs_list] SD card init error\n"); | ||||||
| 
 |  | ||||||
|         u8g2_SetFont(fb, u8g2_font_6x10_mf); |  | ||||||
|         u8g2_SetDrawColor(fb, 1); |  | ||||||
|         u8g2_SetFontMode(fb, 1); |  | ||||||
|         u8g2_DrawStr(fb, 0, 12, "SD card init error"); |  | ||||||
| 
 |  | ||||||
|         furi_commit(fb_record); |  | ||||||
|         furiac_exit(NULL); |         furiac_exit(NULL); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     result = f_mount(&SD_FatFs, (TCHAR const*)SD_Path, 1); |     result = f_mount(&SD_FatFs, (TCHAR const*)SD_Path, 1); | ||||||
| 
 | 
 | ||||||
|     if(result != FR_OK) { |     if(result != FR_OK) { | ||||||
|         furi_take(fb_record); |         fuprintf(furi_log, "[fatfs_list] SD card mount error\n"); | ||||||
| 
 |  | ||||||
|         u8g2_SetFont(fb, u8g2_font_6x10_mf); |  | ||||||
|         u8g2_SetDrawColor(fb, 1); |  | ||||||
|         u8g2_SetFontMode(fb, 1); |  | ||||||
|         u8g2_DrawStr(fb, 0, 12, "SD card mount error"); |  | ||||||
| 
 |  | ||||||
|         furi_commit(fb_record); |  | ||||||
|         furiac_exit(NULL); |         furiac_exit(NULL); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -123,12 +105,6 @@ void fatfs_list(void* p) { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // get display and draw
 |  | ||||||
|             furi_take(fb_record); |  | ||||||
|             u8g2_ClearBuffer(fb); |  | ||||||
|             u8g2_SetFont(fb, u8g2_font_6x10_mf); |  | ||||||
|             u8g2_SetDrawColor(fb, 1); |  | ||||||
|             u8g2_SetFontMode(fb, 1); |  | ||||||
|             line_current = 1; |             line_current = 1; | ||||||
| 
 | 
 | ||||||
|             // open root dir
 |             // open root dir
 | ||||||
| @ -156,8 +132,7 @@ void fatfs_list(void* p) { | |||||||
|                     } else { |                     } else { | ||||||
|                         snprintf(str_buffer, STR_BUFFER_SIZE, "FIL %s\n", fno.fname); |                         snprintf(str_buffer, STR_BUFFER_SIZE, "FIL %s\n", fno.fname); | ||||||
|                     } |                     } | ||||||
| 
 |                     fuprintf(furi_log, str_buffer); | ||||||
|                     u8g2_DrawStr(fb, 0, line_size * (line_current - line_position), str_buffer); |  | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 line_current++; |                 line_current++; | ||||||
|  | |||||||
| @ -29,6 +29,8 @@ void application_input_dump(void* p) { | |||||||
|     furi_check(event_record); |     furi_check(event_record); | ||||||
|     subscribe_pubsub(event_record, event_cb, NULL); |     subscribe_pubsub(event_record, event_cb, NULL); | ||||||
| 
 | 
 | ||||||
|  |     printf("Example app [input dump]\n"); | ||||||
|  | 
 | ||||||
|     for(;;) { |     for(;;) { | ||||||
|         delay(100); |         delay(100); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| #include "u8g2/u8g2.h" | #include "u8g2/u8g2.h" | ||||||
| #include "flipper.h" | #include "flipper.h" | ||||||
|  | #include <main.h> | ||||||
| 
 | 
 | ||||||
| extern SPI_HandleTypeDef hspi1; | extern SPI_HandleTypeDef SPI_D; | ||||||
| 
 | 
 | ||||||
| // TODO: fix log
 | // TODO: fix log
 | ||||||
| #ifdef DEBUG | #ifdef DEBUG | ||||||
| @ -60,7 +61,7 @@ uint8_t u8x8_hw_spi_stm32(u8x8_t* u8x8, uint8_t msg, uint8_t arg_int, void* arg_ | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|         // TODO change it to FuriRecord SPI
 |         // TODO change it to FuriRecord SPI
 | ||||||
|         HAL_SPI_Transmit(&hspi1, (uint8_t*)arg_ptr, arg_int, 10000); |         HAL_SPI_Transmit(&SPI_D, (uint8_t*)arg_ptr, arg_int, 10000); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|     case U8X8_MSG_BYTE_SET_DC: |     case U8X8_MSG_BYTE_SET_DC: | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| #include <input/input.h> | #include <input/input.h> | ||||||
| #include <input_priv.h> |  | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <flipper_v2.h> | #include <flipper_v2.h> | ||||||
| 
 | 
 | ||||||
| @ -54,7 +53,14 @@ void input_task(void* p) { | |||||||
|     for(;;) { |     for(;;) { | ||||||
|         bool changed = false; |         bool changed = false; | ||||||
|         for(uint32_t i = 0; i < INPUT_COUNT; i++) { |         for(uint32_t i = 0; i < INPUT_COUNT; i++) { | ||||||
|             bool input_state = gpio_read(&input_gpio[i]) ^ input_invert[i]; |             bool input_state = false; | ||||||
|  | 
 | ||||||
|  |             // dirty hack, f3 has no CHARGING pin
 | ||||||
|  |             // TODO rewrite this
 | ||||||
|  |             if(i < GPIO_INPUT_PINS_COUNT) { | ||||||
|  |                 input_state = gpio_read(&input_gpio[i]) ^ input_invert[i]; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             if(input_state) { |             if(input_state) { | ||||||
|                 if(debounce_counters[i] < DEBOUNCE_TICKS) { |                 if(debounce_counters[i] < DEBOUNCE_TICKS) { | ||||||
|                     debounce_counters[i] += 1; |                     debounce_counters[i] += 1; | ||||||
| @ -103,7 +109,7 @@ void input_task(void* p) { | |||||||
| 
 | 
 | ||||||
| void HAL_GPIO_EXTI_Callback(uint16_t pin) { | void HAL_GPIO_EXTI_Callback(uint16_t pin) { | ||||||
| #ifdef APP_NFC | #ifdef APP_NFC | ||||||
|     if(pin == RFID_PULL_Pin) { |     if(pin == NFC_IRQ_Pin) { | ||||||
|         nfc_isr(); |         nfc_isr(); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ | |||||||
| typedef enum { | typedef enum { | ||||||
|     EventTypeTick, |     EventTypeTick, | ||||||
|     EventTypeKey, |     EventTypeKey, | ||||||
|  |     EventTypeLed, | ||||||
| } EventType; | } EventType; | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| @ -121,13 +122,9 @@ void render_samsung(CanvasApi* canvas, State* state) { | |||||||
| void input_carrier(AppEvent* event, State* state) { | void input_carrier(AppEvent* event, State* state) { | ||||||
|     if(event->value.input.input == InputOk) { |     if(event->value.input.input == InputOk) { | ||||||
|         if(event->value.input.state) { |         if(event->value.input.state) { | ||||||
|             hal_pwm_set( |             irda_pwm_set(duty_cycles[state->carrier_duty_cycle_id], state->carrier_freq); | ||||||
|                 duty_cycles[state->carrier_duty_cycle_id], |  | ||||||
|                 state->carrier_freq, |  | ||||||
|                 &htim2, |  | ||||||
|                 TIM_CHANNEL_4); |  | ||||||
|         } else { |         } else { | ||||||
|             hal_pwm_stop(&htim2, TIM_CHANNEL_4); |             irda_pwm_stop(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,18 +4,18 @@ | |||||||
| 
 | 
 | ||||||
| void ir_nec_preambula(void) { | void ir_nec_preambula(void) { | ||||||
|     // 9ms carrier + 4.5ms pause
 |     // 9ms carrier + 4.5ms pause
 | ||||||
|     hal_pwm_set(NEC_DUTY_CYCLE, NEC_CARRIER_FREQUENCY, &htim2, TIM_CHANNEL_4); |     irda_pwm_set(NEC_DUTY_CYCLE, NEC_CARRIER_FREQUENCY); | ||||||
|     delay_us(9000); |     delay_us(9000); | ||||||
|     hal_pwm_stop(&htim2, TIM_CHANNEL_4); |     irda_pwm_stop(); | ||||||
|     delay_us(4500); |     delay_us(4500); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ir_nec_send_bit(bool bit) { | void ir_nec_send_bit(bool bit) { | ||||||
|     // 0 is 562.5us carrier + 1687.5us pause
 |     // 0 is 562.5us carrier + 1687.5us pause
 | ||||||
|     // 1 is 562.5us carrier + 562.5us pause
 |     // 1 is 562.5us carrier + 562.5us pause
 | ||||||
|     hal_pwm_set(NEC_DUTY_CYCLE, NEC_CARRIER_FREQUENCY, &htim2, TIM_CHANNEL_4); |     irda_pwm_set(NEC_DUTY_CYCLE, NEC_CARRIER_FREQUENCY); | ||||||
|     delay_us(562.5); |     delay_us(562.5); | ||||||
|     hal_pwm_stop(&htim2, TIM_CHANNEL_4); |     irda_pwm_stop(); | ||||||
|     if(bit) { |     if(bit) { | ||||||
|         delay_us(562.5); |         delay_us(562.5); | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| // our tx pin is TIM2_CH4
 | // our tx pin is TIM2_CH4
 | ||||||
| extern TIM_HandleTypeDef htim2; | extern TIM_HandleTypeDef TIM_A; | ||||||
| 
 | 
 | ||||||
| #define RC5_CARRIER_FREQUENCY 36000 | #define RC5_CARRIER_FREQUENCY 36000 | ||||||
| #define RC5_DUTY_CYCLE 0.33 | #define RC5_DUTY_CYCLE 0.33 | ||||||
|  | |||||||
| @ -3,16 +3,16 @@ | |||||||
| #include "irda_protocols.h" | #include "irda_protocols.h" | ||||||
| 
 | 
 | ||||||
| void ir_samsung_preambula(void) { | void ir_samsung_preambula(void) { | ||||||
|     hal_pwm_set(SAMSUNG_DUTY_CYCLE, SAMSUNG_CARRIER_FREQUENCY, &htim2, TIM_CHANNEL_4); |     irda_pwm_set(SAMSUNG_DUTY_CYCLE, SAMSUNG_CARRIER_FREQUENCY); | ||||||
|     delay_us(4500); |     delay_us(4500); | ||||||
|     hal_pwm_stop(&htim2, TIM_CHANNEL_4); |     irda_pwm_stop(); | ||||||
|     delay_us(4500); |     delay_us(4500); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ir_samsung_send_bit(bool bit) { | void ir_samsung_send_bit(bool bit) { | ||||||
|     hal_pwm_set(SAMSUNG_DUTY_CYCLE, SAMSUNG_CARRIER_FREQUENCY, &htim2, TIM_CHANNEL_4); |     irda_pwm_set(SAMSUNG_DUTY_CYCLE, SAMSUNG_CARRIER_FREQUENCY); | ||||||
|     delay_us(560); |     delay_us(560); | ||||||
|     hal_pwm_stop(&htim2, TIM_CHANNEL_4); |     irda_pwm_stop(); | ||||||
|     if(bit) { |     if(bit) { | ||||||
|         delay_us(1590); |         delay_us(1590); | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
| @ -43,7 +43,7 @@ static void input_callback(InputEvent* input_event, void* ctx) { | |||||||
|     osMessageQueuePut(event_queue, &event, 0, 0); |     osMessageQueuePut(event_queue, &event, 0, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| extern TIM_HandleTypeDef htim15; | extern TIM_HandleTypeDef TIM_C; | ||||||
| void em4100_emulation(uint8_t* data, GpioPin* pin); | void em4100_emulation(uint8_t* data, GpioPin* pin); | ||||||
| void prepare_data(uint32_t ID, uint32_t VENDOR, uint8_t* data); | void prepare_data(uint32_t ID, uint32_t VENDOR, uint8_t* data); | ||||||
| 
 | 
 | ||||||
| @ -51,7 +51,7 @@ void lf_rfid_workaround(void* p) { | |||||||
|     osMessageQueueId_t event_queue = osMessageQueueNew(1, sizeof(AppEvent), NULL); |     osMessageQueueId_t event_queue = osMessageQueueNew(1, sizeof(AppEvent), NULL); | ||||||
| 
 | 
 | ||||||
|     // create pin
 |     // create pin
 | ||||||
|     GpioPin pull_pin = {.pin = GPIO_PIN_15, .port = GPIOB}; |     GpioPin pull_pin = {.pin = RFID_PULL_Pin, .port = RFID_PULL_GPIO_Port}; | ||||||
|     // TODO open record
 |     // TODO open record
 | ||||||
|     GpioPin* pull_pin_record = &pull_pin; |     GpioPin* pull_pin_record = &pull_pin; | ||||||
| 
 | 
 | ||||||
| @ -92,7 +92,7 @@ void lf_rfid_workaround(void* p) { | |||||||
|             if(event.type == EventTypeKey) { |             if(event.type == EventTypeKey) { | ||||||
|                 // press events
 |                 // press events
 | ||||||
|                 if(event.value.input.state && event.value.input.input == InputBack) { |                 if(event.value.input.state && event.value.input.input == InputBack) { | ||||||
|                     hal_pwmn_stop(&htim15, TIM_CHANNEL_1); // TODO: move to furiac_onexit
 |                     hal_pwmn_stop(&TIM_C, TIM_CHANNEL_1); // TODO: move to furiac_onexit
 | ||||||
|                     gpio_init(pull_pin_record, GpioModeInput); |                     gpio_init(pull_pin_record, GpioModeInput); | ||||||
|                     // TODO remove all widgets create by app
 |                     // TODO remove all widgets create by app
 | ||||||
|                     widget_enabled_set(widget, false); |                     widget_enabled_set(widget, false); | ||||||
| @ -122,7 +122,7 @@ void lf_rfid_workaround(void* p) { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         hal_pwmn_set( |         hal_pwmn_set( | ||||||
|             state->on ? 0.5 : 0.0, (float)(state->freq_khz * 1000), &htim15, TIM_CHANNEL_1); |             state->on ? 0.5 : 0.0, (float)(state->freq_khz * 1000), &LFRFID_TIM, LFRFID_CH); | ||||||
| 
 | 
 | ||||||
|         if(!state->on) { |         if(!state->on) { | ||||||
|             em4100_emulation(emulation_data, pull_pin_record); |             em4100_emulation(emulation_data, pull_pin_record); | ||||||
|  | |||||||
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 652 B | 
| Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 2.6 KiB | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 257 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 257 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 252 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 251 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 251 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 248 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 251 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 254 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 237 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 242 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 237 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 236 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 231 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 237 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 250 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 247 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 243 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 243 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 256 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 250 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 244 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 247 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 249 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 248 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 242 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 228 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 231 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 242 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 258 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 256 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 254 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 256 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 260 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 256 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 260 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 252 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 255 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 262 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 235 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 233 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 231 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 233 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 226 B | 
| Before Width: | Height: | Size: 128 B After Width: | Height: | Size: 237 B | 
| @ -18,6 +18,7 @@ extern "C" { | |||||||
| #include "api-basic/check.h" | #include "api-basic/check.h" | ||||||
| 
 | 
 | ||||||
| #include "api-hal/api-gpio.h" | #include "api-hal/api-gpio.h" | ||||||
|  | #include "api-hal-resources.h" | ||||||
| 
 | 
 | ||||||
| #include "gui/gui.h" | #include "gui/gui.h" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,139 +1,163 @@ | |||||||
| /* USER CODE BEGIN Header */ | /* USER CODE BEGIN Header */ | ||||||
| /**
 | /**
 | ||||||
|   ****************************************************************************** |   ****************************************************************************** | ||||||
|   * @file           : main.h |   * @file           : main.h | ||||||
|   * @brief          : Header for main.c file. |   * @brief          : Header for main.c file. | ||||||
|   *                   This file contains the common defines of the application. |   *                   This file contains the common defines of the application. | ||||||
|   ****************************************************************************** |   ****************************************************************************** | ||||||
|   * @attention |   * @attention | ||||||
|   * |   * | ||||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. |   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||||
|   * All rights reserved.</center></h2> |   * All rights reserved.</center></h2> | ||||||
|   * |   * | ||||||
|   * This software component is licensed by ST under Ultimate Liberty license |   * This software component is licensed by ST under Ultimate Liberty license | ||||||
|   * SLA0044, the "License"; You may not use this file except in compliance with |   * SLA0044, the "License"; You may not use this file except in compliance with | ||||||
|   * the License. You may obtain a copy of the License at: |   * the License. You may obtain a copy of the License at: | ||||||
|   *                             www.st.com/SLA0044 |   *                             www.st.com/SLA0044 | ||||||
|   * |   * | ||||||
|   ****************************************************************************** |   ****************************************************************************** | ||||||
|   */ |   */ | ||||||
| /* USER CODE END Header */ | /* USER CODE END Header */ | ||||||
| 
 | 
 | ||||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | /* Define to prevent recursive inclusion -------------------------------------*/ | ||||||
| #ifndef __MAIN_H | #ifndef __MAIN_H | ||||||
| #define __MAIN_H | #define __MAIN_H | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* Includes ------------------------------------------------------------------*/ | /* Includes ------------------------------------------------------------------*/ | ||||||
| #include "stm32l4xx_hal.h" | #include "stm32l4xx_hal.h" | ||||||
| 
 | 
 | ||||||
| /* Private includes ----------------------------------------------------------*/ | /* Private includes ----------------------------------------------------------*/ | ||||||
| /* USER CODE BEGIN Includes */ | /* USER CODE BEGIN Includes */ | ||||||
| 
 | 
 | ||||||
| /* USER CODE END Includes */ | /* USER CODE END Includes */ | ||||||
| 
 | 
 | ||||||
| /* Exported types ------------------------------------------------------------*/ | /* Exported types ------------------------------------------------------------*/ | ||||||
| /* USER CODE BEGIN ET */ | /* USER CODE BEGIN ET */ | ||||||
| 
 | 
 | ||||||
| /* USER CODE END ET */ | /* USER CODE END ET */ | ||||||
| 
 | 
 | ||||||
| /* Exported constants --------------------------------------------------------*/ | /* Exported constants --------------------------------------------------------*/ | ||||||
| /* USER CODE BEGIN EC */ | /* USER CODE BEGIN EC */ | ||||||
| 
 | 
 | ||||||
| /* USER CODE END EC */ | /* USER CODE END EC */ | ||||||
| 
 | 
 | ||||||
| /* Exported macro ------------------------------------------------------------*/ | /* Exported macro ------------------------------------------------------------*/ | ||||||
| /* USER CODE BEGIN EM */ | /* USER CODE BEGIN EM */ | ||||||
| 
 | 
 | ||||||
| /* USER CODE END EM */ | /* USER CODE END EM */ | ||||||
| 
 | 
 | ||||||
| /* Exported functions prototypes ---------------------------------------------*/ | /* Exported functions prototypes ---------------------------------------------*/ | ||||||
| void Error_Handler(void); | void Error_Handler(void); | ||||||
| 
 | 
 | ||||||
| /* USER CODE BEGIN EFP */ | /* USER CODE BEGIN EFP */ | ||||||
| 
 | 
 | ||||||
| /* USER CODE END EFP */ | /* USER CODE END EFP */ | ||||||
| 
 | 
 | ||||||
| /* Private defines -----------------------------------------------------------*/ | /* Private defines -----------------------------------------------------------*/ | ||||||
| #define BUTTON_BACK_Pin GPIO_PIN_13 | #define BUTTON_BACK_Pin GPIO_PIN_13 | ||||||
| #define BUTTON_BACK_GPIO_Port GPIOC | #define BUTTON_BACK_GPIO_Port GPIOC | ||||||
| #define BUTTON_BACK_EXTI_IRQn EXTI15_10_IRQn | #define BUTTON_BACK_EXTI_IRQn EXTI15_10_IRQn | ||||||
| #define CHRG_Pin GPIO_PIN_2 | #define CHRG_Pin GPIO_PIN_2 | ||||||
| #define CHRG_GPIO_Port GPIOC | #define CHRG_GPIO_Port GPIOC | ||||||
| #define CHRG_EXTI_IRQn EXTI2_IRQn | #define CHRG_EXTI_IRQn EXTI2_IRQn | ||||||
| #define BATT_V_Pin GPIO_PIN_3 | #define BATT_V_Pin GPIO_PIN_3 | ||||||
| #define BATT_V_GPIO_Port GPIOC | #define BATT_V_GPIO_Port GPIOC | ||||||
| #define IR_RX_Pin GPIO_PIN_0 | #define IR_RX_Pin GPIO_PIN_0 | ||||||
| #define IR_RX_GPIO_Port GPIOA | #define IR_RX_GPIO_Port GPIOA | ||||||
| #define BUTTON_DOWN_Pin GPIO_PIN_1 | #define BUTTON_DOWN_Pin GPIO_PIN_1 | ||||||
| #define BUTTON_DOWN_GPIO_Port GPIOA | #define BUTTON_DOWN_GPIO_Port GPIOA | ||||||
| #define BUTTON_DOWN_EXTI_IRQn EXTI1_IRQn | #define BUTTON_DOWN_EXTI_IRQn EXTI1_IRQn | ||||||
| #define DISPLAY_DI_Pin GPIO_PIN_2 | #define DISPLAY_DI_Pin GPIO_PIN_2 | ||||||
| #define DISPLAY_DI_GPIO_Port GPIOA | #define DISPLAY_DI_GPIO_Port GPIOA | ||||||
| #define SPEAKER_Pin GPIO_PIN_3 | #define SPEAKER_Pin GPIO_PIN_3 | ||||||
| #define SPEAKER_GPIO_Port GPIOA | #define SPEAKER_GPIO_Port GPIOA | ||||||
| #define NFC_CS_Pin GPIO_PIN_4 | #define NFC_CS_Pin GPIO_PIN_4 | ||||||
| #define NFC_CS_GPIO_Port GPIOC | #define NFC_CS_GPIO_Port GPIOC | ||||||
| #define RFID_RF_IN_Pin GPIO_PIN_5 | #define RFID_RF_IN_Pin GPIO_PIN_5 | ||||||
| #define RFID_RF_IN_GPIO_Port GPIOC | #define RFID_RF_IN_GPIO_Port GPIOC | ||||||
| #define BUTTON_UP_Pin GPIO_PIN_0 | #define BUTTON_UP_Pin GPIO_PIN_0 | ||||||
| #define BUTTON_UP_GPIO_Port GPIOB | #define BUTTON_UP_GPIO_Port GPIOB | ||||||
| #define BUTTON_UP_EXTI_IRQn EXTI0_IRQn | #define BUTTON_UP_EXTI_IRQn EXTI0_IRQn | ||||||
| #define LED_BLUE_Pin GPIO_PIN_1 | #define LED_BLUE_Pin GPIO_PIN_1 | ||||||
| #define LED_BLUE_GPIO_Port GPIOB | #define LED_BLUE_GPIO_Port GPIOB | ||||||
| #define DISPLAY_RST_Pin GPIO_PIN_10 | #define DISPLAY_RST_Pin GPIO_PIN_10 | ||||||
| #define DISPLAY_RST_GPIO_Port GPIOB | #define DISPLAY_RST_GPIO_Port GPIOB | ||||||
| #define IR_TX_Pin GPIO_PIN_11 | #define IR_TX_Pin GPIO_PIN_11 | ||||||
| #define IR_TX_GPIO_Port GPIOB | #define IR_TX_GPIO_Port GPIOB | ||||||
| #define RFID_OUT_Pin GPIO_PIN_13 | #define RFID_OUT_Pin GPIO_PIN_13 | ||||||
| #define RFID_OUT_GPIO_Port GPIOB | #define RFID_OUT_GPIO_Port GPIOB | ||||||
| #define LED_GREEN_Pin GPIO_PIN_14 | #define LED_GREEN_Pin GPIO_PIN_14 | ||||||
| #define LED_GREEN_GPIO_Port GPIOB | #define LED_GREEN_GPIO_Port GPIOB | ||||||
| #define RFID_PULL_Pin GPIO_PIN_15 | #define RFID_PULL_Pin GPIO_PIN_15 | ||||||
| #define RFID_PULL_GPIO_Port GPIOB | #define RFID_PULL_GPIO_Port GPIOB | ||||||
| #define RFID_PULL_EXTI_IRQn EXTI15_10_IRQn | #define RFID_PULL_EXTI_IRQn EXTI15_10_IRQn | ||||||
| #define VIBRO_Pin GPIO_PIN_6 | #define VIBRO_Pin GPIO_PIN_6 | ||||||
| #define VIBRO_GPIO_Port GPIOC | #define VIBRO_GPIO_Port GPIOC | ||||||
| #define iButton_Pin GPIO_PIN_7 | #define iButton_Pin GPIO_PIN_7 | ||||||
| #define iButton_GPIO_Port GPIOC | #define iButton_GPIO_Port GPIOC | ||||||
| #define DISPLAY_CS_Pin GPIO_PIN_8 | #define DISPLAY_CS_Pin GPIO_PIN_8 | ||||||
| #define DISPLAY_CS_GPIO_Port GPIOC | #define DISPLAY_CS_GPIO_Port GPIOC | ||||||
| #define SD_CS_Pin GPIO_PIN_9 | #define SD_CS_Pin GPIO_PIN_9 | ||||||
| #define SD_CS_GPIO_Port GPIOC | #define SD_CS_GPIO_Port GPIOC | ||||||
| #define LED_RED_Pin GPIO_PIN_8 | #define LED_RED_Pin GPIO_PIN_8 | ||||||
| #define LED_RED_GPIO_Port GPIOA | #define LED_RED_GPIO_Port GPIOA | ||||||
| #define TMS_Pin GPIO_PIN_13 | #define TMS_Pin GPIO_PIN_13 | ||||||
| #define TMS_GPIO_Port GPIOA | #define TMS_GPIO_Port GPIOA | ||||||
| #define TCK_Pin GPIO_PIN_14 | #define TCK_Pin GPIO_PIN_14 | ||||||
| #define TCK_GPIO_Port GPIOA | #define TCK_GPIO_Port GPIOA | ||||||
| #define CC1101_CS_Pin GPIO_PIN_15 | #define CC1101_CS_Pin GPIO_PIN_15 | ||||||
| #define CC1101_CS_GPIO_Port GPIOA | #define CC1101_CS_GPIO_Port GPIOA | ||||||
| #define BUTTON_LEFT_Pin GPIO_PIN_4 | #define BUTTON_LEFT_Pin GPIO_PIN_4 | ||||||
| #define BUTTON_LEFT_GPIO_Port GPIOB | #define BUTTON_LEFT_GPIO_Port GPIOB | ||||||
| #define BUTTON_LEFT_EXTI_IRQn EXTI4_IRQn | #define BUTTON_LEFT_EXTI_IRQn EXTI4_IRQn | ||||||
| #define DISPLAY_BACKLIGHT_Pin GPIO_PIN_6 | #define DISPLAY_BACKLIGHT_Pin GPIO_PIN_6 | ||||||
| #define DISPLAY_BACKLIGHT_GPIO_Port GPIOB | #define DISPLAY_BACKLIGHT_GPIO_Port GPIOB | ||||||
| #define CC1101_G0_Pin GPIO_PIN_7 | #define CC1101_G0_Pin GPIO_PIN_7 | ||||||
| #define CC1101_G0_GPIO_Port GPIOB | #define CC1101_G0_GPIO_Port GPIOB | ||||||
| #define BUTTON_RIGHT_Pin GPIO_PIN_8 | #define BUTTON_RIGHT_Pin GPIO_PIN_8 | ||||||
| #define BUTTON_RIGHT_GPIO_Port GPIOB | #define BUTTON_RIGHT_GPIO_Port GPIOB | ||||||
| #define BUTTON_RIGHT_EXTI_IRQn EXTI9_5_IRQn | #define BUTTON_RIGHT_EXTI_IRQn EXTI9_5_IRQn | ||||||
| #define BUTTON_OK_Pin GPIO_PIN_9 | #define BUTTON_OK_Pin GPIO_PIN_9 | ||||||
| #define BUTTON_OK_GPIO_Port GPIOB | #define BUTTON_OK_GPIO_Port GPIOB | ||||||
| #define BUTTON_OK_EXTI_IRQn EXTI9_5_IRQn | #define BUTTON_OK_EXTI_IRQn EXTI9_5_IRQn | ||||||
| /* USER CODE BEGIN Private defines */ | /* USER CODE BEGIN Private defines */ | ||||||
| 
 | 
 | ||||||
| #define MISO_PIN GpioPin{.port = GPIOC, .pin = GPIO_PIN_11} | #define MISO_PIN GpioPin{.port = GPIOC, .pin = GPIO_PIN_11} | ||||||
| 
 | 
 | ||||||
| /* USER CODE END Private defines */ | #define SPI_R hspi3 | ||||||
| 
 | #define SPI_D hspi1 | ||||||
| #ifdef __cplusplus | #define SPI_SD_HANDLE SPI_R | ||||||
| } | 
 | ||||||
| #endif | extern TIM_HandleTypeDef htim2; | ||||||
| 
 | extern TIM_HandleTypeDef htim5; | ||||||
| #endif /* __MAIN_H */ | extern TIM_HandleTypeDef htim15; | ||||||
| 
 | 
 | ||||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | #define TIM_A htim2 | ||||||
|  | #define TIM_B htim5 | ||||||
|  | #define TIM_C htim15 | ||||||
|  | 
 | ||||||
|  | #define SPEAKER_TIM htim5 | ||||||
|  | #define SPEAKER_CH TIM_CHANNEL_4 | ||||||
|  | 
 | ||||||
|  | #define LFRFID_TIM htim15 | ||||||
|  | #define LFRFID_CH TIM_CHANNEL_1 | ||||||
|  | 
 | ||||||
|  | #define IRDA_TIM htim2 | ||||||
|  | #define IRDA_CH TIM_CHANNEL_4 | ||||||
|  | 
 | ||||||
|  | #define NFC_IRQ_Pin RFID_PULL_Pin | ||||||
|  | #define NFC_IRQ_GPIO_Port RFID_PULL_GPIO_Port | ||||||
|  | 
 | ||||||
|  | /* USER CODE END Private defines */ | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #endif /* __MAIN_H */ | ||||||
|  | 
 | ||||||
|  | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||||
|  | |||||||
| @ -41,7 +41,10 @@ void MX_SPI1_Init(void); | |||||||
| void MX_SPI3_Init(void); | void MX_SPI3_Init(void); | ||||||
| 
 | 
 | ||||||
| /* USER CODE BEGIN Prototypes */ | /* USER CODE BEGIN Prototypes */ | ||||||
| 
 | void NFC_SPI_Reconfigure(); | ||||||
|  | void SD_SPI_Reconfigure_Slow(); | ||||||
|  | void SD_SPI_Reconfigure_Fast(); | ||||||
|  | void CC1101_SPI_Reconfigure(); | ||||||
| /* USER CODE END Prototypes */ | /* USER CODE END Prototypes */ | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
|  | |||||||
| @ -4,9 +4,6 @@ | |||||||
| #define SD_CS_LOW() HAL_GPIO_WritePin(SD_CS_GPIO_Port, SD_CS_Pin, GPIO_PIN_RESET) | #define SD_CS_LOW() HAL_GPIO_WritePin(SD_CS_GPIO_Port, SD_CS_Pin, GPIO_PIN_RESET) | ||||||
| #define SD_CS_HIGH() HAL_GPIO_WritePin(SD_CS_GPIO_Port, SD_CS_Pin, GPIO_PIN_SET) | #define SD_CS_HIGH() HAL_GPIO_WritePin(SD_CS_GPIO_Port, SD_CS_Pin, GPIO_PIN_SET) | ||||||
| 
 | 
 | ||||||
| #define SPI_SD_INSTANCE SPI3 |  | ||||||
| #define SPI_SD_HANDLE hspi3 |  | ||||||
| 
 |  | ||||||
| const uint32_t SpiTimeout = 1000; | const uint32_t SpiTimeout = 1000; | ||||||
| extern SPI_HandleTypeDef SPI_SD_HANDLE; | extern SPI_HandleTypeDef SPI_SD_HANDLE; | ||||||
| uint8_t SD_IO_WriteByte(uint8_t Data); | uint8_t SD_IO_WriteByte(uint8_t Data); | ||||||
| @ -64,46 +61,6 @@ __attribute__((unused)) static void SPIx_Write(uint8_t Value) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SD_SPI_Slow_Init(void) { |  | ||||||
|     SPI_SD_HANDLE.Instance = SPI_SD_INSTANCE; |  | ||||||
|     SPI_SD_HANDLE.Init.Mode = SPI_MODE_MASTER; |  | ||||||
|     SPI_SD_HANDLE.Init.Direction = SPI_DIRECTION_2LINES; |  | ||||||
|     SPI_SD_HANDLE.Init.DataSize = SPI_DATASIZE_8BIT; |  | ||||||
|     SPI_SD_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW; |  | ||||||
|     SPI_SD_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE; |  | ||||||
|     SPI_SD_HANDLE.Init.NSS = SPI_NSS_SOFT; |  | ||||||
|     SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; |  | ||||||
|     SPI_SD_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB; |  | ||||||
|     SPI_SD_HANDLE.Init.TIMode = SPI_TIMODE_DISABLE; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCPolynomial = 7; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; |  | ||||||
|     SPI_SD_HANDLE.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; |  | ||||||
|     if(HAL_SPI_Init(&SPI_SD_HANDLE) != HAL_OK) { |  | ||||||
|         Error_Handler(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void SD_SPI_Fast_Init(void) { |  | ||||||
|     SPI_SD_HANDLE.Instance = SPI_SD_INSTANCE; |  | ||||||
|     SPI_SD_HANDLE.Init.Mode = SPI_MODE_MASTER; |  | ||||||
|     SPI_SD_HANDLE.Init.Direction = SPI_DIRECTION_2LINES; |  | ||||||
|     SPI_SD_HANDLE.Init.DataSize = SPI_DATASIZE_8BIT; |  | ||||||
|     SPI_SD_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW; |  | ||||||
|     SPI_SD_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE; |  | ||||||
|     SPI_SD_HANDLE.Init.NSS = SPI_NSS_SOFT; |  | ||||||
|     SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; |  | ||||||
|     SPI_SD_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB; |  | ||||||
|     SPI_SD_HANDLE.Init.TIMode = SPI_TIMODE_DISABLE; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCPolynomial = 7; |  | ||||||
|     SPI_SD_HANDLE.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; |  | ||||||
|     SPI_SD_HANDLE.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; |  | ||||||
|     if(HAL_SPI_Init(&SPI_SD_HANDLE) != HAL_OK) { |  | ||||||
|         Error_Handler(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /******************************************************************************
 | /******************************************************************************
 | ||||||
|                             LINK OPERATIONS |                             LINK OPERATIONS | ||||||
|  *******************************************************************************/ |  *******************************************************************************/ | ||||||
|  | |||||||
| @ -91,6 +91,7 @@ | |||||||
| #include "stdlib.h" | #include "stdlib.h" | ||||||
| #include "string.h" | #include "string.h" | ||||||
| #include "stdio.h" | #include "stdio.h" | ||||||
|  | #include "spi.h" | ||||||
| 
 | 
 | ||||||
| /** @addtogroup BSP
 | /** @addtogroup BSP
 | ||||||
|   * @{ |   * @{ | ||||||
| @ -290,7 +291,7 @@ static uint8_t SD_ReadData(void); | |||||||
|   */ |   */ | ||||||
| uint8_t BSP_SD_Init(void) { | uint8_t BSP_SD_Init(void) { | ||||||
|     /* Init to maximum slow speed */ |     /* Init to maximum slow speed */ | ||||||
|     SD_SPI_Slow_Init(); |     SD_SPI_Reconfigure_Slow(); | ||||||
| 
 | 
 | ||||||
|     /* Configure IO functionalities for SD pin */ |     /* Configure IO functionalities for SD pin */ | ||||||
|     SD_IO_Init(); |     SD_IO_Init(); | ||||||
| @ -300,7 +301,7 @@ uint8_t BSP_SD_Init(void) { | |||||||
|     uint8_t res = SD_GoIdleState(); |     uint8_t res = SD_GoIdleState(); | ||||||
| 
 | 
 | ||||||
|     /* Init to maximum fastest speed */ |     /* Init to maximum fastest speed */ | ||||||
|     SD_SPI_Fast_Init(); |     SD_SPI_Reconfigure_Fast(); | ||||||
| 
 | 
 | ||||||
|     /* SD initialized and set to SPI mode properly */ |     /* SD initialized and set to SPI mode properly */ | ||||||
|     return res; |     return res; | ||||||
|  | |||||||
| @ -88,7 +88,6 @@ int main(void) | |||||||
|   SystemClock_Config(); |   SystemClock_Config(); | ||||||
| 
 | 
 | ||||||
|   /* USER CODE BEGIN SysInit */ |   /* USER CODE BEGIN SysInit */ | ||||||
| 
 |  | ||||||
|   /* USER CODE END SysInit */ |   /* USER CODE END SysInit */ | ||||||
| 
 | 
 | ||||||
|   /* Initialize all configured peripherals */ |   /* Initialize all configured peripherals */ | ||||||
|  | |||||||
| @ -175,6 +175,101 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) | |||||||
| 
 | 
 | ||||||
| /* USER CODE BEGIN 1 */ | /* USER CODE BEGIN 1 */ | ||||||
| 
 | 
 | ||||||
|  | void NFC_SPI_Reconfigure() { | ||||||
|  |   if (HAL_SPI_DeInit(&SPI_R) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   SPI_R.Init.Mode = SPI_MODE_MASTER; | ||||||
|  |   SPI_R.Init.Direction = SPI_DIRECTION_2LINES; | ||||||
|  |   SPI_R.Init.DataSize = SPI_DATASIZE_8BIT; | ||||||
|  |   SPI_R.Init.CLKPolarity = SPI_POLARITY_LOW; | ||||||
|  |   SPI_R.Init.CLKPhase = SPI_PHASE_2EDGE; | ||||||
|  |   SPI_R.Init.NSS = SPI_NSS_SOFT; | ||||||
|  |   SPI_R.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; | ||||||
|  |   SPI_R.Init.FirstBit = SPI_FIRSTBIT_MSB; | ||||||
|  |   SPI_R.Init.TIMode = SPI_TIMODE_DISABLE; | ||||||
|  |   SPI_R.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | ||||||
|  |   SPI_R.Init.CRCPolynomial = 7; | ||||||
|  |   SPI_R.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; | ||||||
|  |   SPI_R.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; | ||||||
|  | 
 | ||||||
|  |   if (HAL_SPI_Init(&SPI_R) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void SD_SPI_Reconfigure_Slow(void) { | ||||||
|  |   if (HAL_SPI_DeInit(&SPI_SD_HANDLE) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   SPI_SD_HANDLE.Init.Mode = SPI_MODE_MASTER; | ||||||
|  |   SPI_SD_HANDLE.Init.Direction = SPI_DIRECTION_2LINES; | ||||||
|  |   SPI_SD_HANDLE.Init.DataSize = SPI_DATASIZE_8BIT; | ||||||
|  |   SPI_SD_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW; | ||||||
|  |   SPI_SD_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE; | ||||||
|  |   SPI_SD_HANDLE.Init.NSS = SPI_NSS_SOFT; | ||||||
|  |   SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; | ||||||
|  |   SPI_SD_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB; | ||||||
|  |   SPI_SD_HANDLE.Init.TIMode = SPI_TIMODE_DISABLE; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCPolynomial = 7; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; | ||||||
|  |   SPI_SD_HANDLE.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; | ||||||
|  | 
 | ||||||
|  |   if(HAL_SPI_Init(&SPI_SD_HANDLE) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void SD_SPI_Reconfigure_Fast(void) { | ||||||
|  |   if (HAL_SPI_DeInit(&SPI_SD_HANDLE) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   SPI_SD_HANDLE.Init.Mode = SPI_MODE_MASTER; | ||||||
|  |   SPI_SD_HANDLE.Init.Direction = SPI_DIRECTION_2LINES; | ||||||
|  |   SPI_SD_HANDLE.Init.DataSize = SPI_DATASIZE_8BIT; | ||||||
|  |   SPI_SD_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW; | ||||||
|  |   SPI_SD_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE; | ||||||
|  |   SPI_SD_HANDLE.Init.NSS = SPI_NSS_SOFT; | ||||||
|  |   SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; | ||||||
|  |   SPI_SD_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB; | ||||||
|  |   SPI_SD_HANDLE.Init.TIMode = SPI_TIMODE_DISABLE; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCPolynomial = 7; | ||||||
|  |   SPI_SD_HANDLE.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; | ||||||
|  |   SPI_SD_HANDLE.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; | ||||||
|  | 
 | ||||||
|  |   if(HAL_SPI_Init(&SPI_SD_HANDLE) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void CC1101_SPI_Reconfigure(void) { | ||||||
|  |   if(HAL_SPI_DeInit(&SPI_R) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   SPI_R.Init.Mode = SPI_MODE_MASTER; | ||||||
|  |   SPI_R.Init.Direction = SPI_DIRECTION_2LINES; | ||||||
|  |   SPI_R.Init.DataSize = SPI_DATASIZE_8BIT; | ||||||
|  |   SPI_R.Init.CLKPolarity = SPI_POLARITY_LOW; | ||||||
|  |   SPI_R.Init.CLKPhase = SPI_PHASE_1EDGE; | ||||||
|  |   SPI_R.Init.NSS = SPI_NSS_SOFT; | ||||||
|  |   SPI_R.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; | ||||||
|  |   SPI_R.Init.FirstBit = SPI_FIRSTBIT_MSB; | ||||||
|  |   SPI_R.Init.TIMode = SPI_TIMODE_DISABLE; | ||||||
|  |   SPI_R.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | ||||||
|  |   SPI_R.Init.CRCPolynomial = 7; | ||||||
|  |   SPI_R.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; | ||||||
|  |   SPI_R.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; | ||||||
|  | 
 | ||||||
|  |   if(HAL_SPI_Init(&SPI_R) != HAL_OK) { | ||||||
|  |       Error_Handler(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| /* USER CODE END 1 */ | /* USER CODE END 1 */ | ||||||
| 
 | 
 | ||||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||||
|  | |||||||
| @ -40,4 +40,12 @@ void hal_pwm_stop(TIM_HandleTypeDef* tim, uint32_t channel) { | |||||||
| 
 | 
 | ||||||
| void hal_pwmn_stop(TIM_HandleTypeDef* tim, uint32_t channel) { | void hal_pwmn_stop(TIM_HandleTypeDef* tim, uint32_t channel) { | ||||||
|     HAL_TIMEx_PWMN_Stop(tim, channel); |     HAL_TIMEx_PWMN_Stop(tim, channel); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void irda_pwm_set(float value, float freq){ | ||||||
|  |     hal_pwm_set(value, freq, &IRDA_TIM, IRDA_CH); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void irda_pwm_stop(){ | ||||||
|  |     hal_pwm_stop(&IRDA_TIM, IRDA_CH); | ||||||
| } | } | ||||||
| @ -6,3 +6,6 @@ void hal_pwm_set(float value, float freq, TIM_HandleTypeDef* tim, uint32_t chann | |||||||
| void hal_pwmn_set(float value, float freq, TIM_HandleTypeDef* tim, uint32_t channel); | void hal_pwmn_set(float value, float freq, TIM_HandleTypeDef* tim, uint32_t channel); | ||||||
| void hal_pwm_stop(TIM_HandleTypeDef* tim, uint32_t channel); | void hal_pwm_stop(TIM_HandleTypeDef* tim, uint32_t channel); | ||||||
| void hal_pwmn_stop(TIM_HandleTypeDef* tim, uint32_t channel); | void hal_pwmn_stop(TIM_HandleTypeDef* tim, uint32_t channel); | ||||||
|  | 
 | ||||||
|  | void irda_pwm_set(float value, float freq); | ||||||
|  | void irda_pwm_stop(); | ||||||
| @ -1,22 +1,18 @@ | |||||||
| #ifndef __INPUT_PRIV_H |  | ||||||
| #define __INPUT_PRIV_H |  | ||||||
| 
 |  | ||||||
| #include "main.h" | #include "main.h" | ||||||
| #include "flipper_v2.h" | #include "flipper_v2.h" | ||||||
| 
 | 
 | ||||||
| #define DEBOUNCE_TICKS 10 | #define DEBOUNCE_TICKS 10 | ||||||
| 
 | 
 | ||||||
| const GpioPin input_gpio[] = { | const GpioPin input_gpio[GPIO_INPUT_PINS_COUNT] = { | ||||||
|     {BUTTON_UP_GPIO_Port, BUTTON_UP_Pin}, |     {BUTTON_UP_GPIO_Port, BUTTON_UP_Pin}, | ||||||
|     {BUTTON_DOWN_GPIO_Port, BUTTON_DOWN_Pin}, |     {BUTTON_DOWN_GPIO_Port, BUTTON_DOWN_Pin}, | ||||||
|     {BUTTON_RIGHT_GPIO_Port, BUTTON_RIGHT_Pin}, |     {BUTTON_RIGHT_GPIO_Port, BUTTON_RIGHT_Pin}, | ||||||
|     {BUTTON_LEFT_GPIO_Port, BUTTON_LEFT_Pin}, |     {BUTTON_LEFT_GPIO_Port, BUTTON_LEFT_Pin}, | ||||||
|     {BUTTON_OK_GPIO_Port, BUTTON_OK_Pin}, |     {BUTTON_OK_GPIO_Port, BUTTON_OK_Pin}, | ||||||
|     {BUTTON_BACK_GPIO_Port, BUTTON_BACK_Pin}, |     {BUTTON_BACK_GPIO_Port, BUTTON_BACK_Pin}, | ||||||
|     {CHRG_GPIO_Port, CHRG_Pin} |     {CHRG_GPIO_Port, CHRG_Pin}}; | ||||||
| }; |  | ||||||
| 
 | 
 | ||||||
| const bool input_invert[] = { | const bool input_invert[GPIO_INPUT_PINS_COUNT] = { | ||||||
|     false, // {BUTTON_UP_GPIO_Port, BUTTON_UP_Pin},
 |     false, // {BUTTON_UP_GPIO_Port, BUTTON_UP_Pin},
 | ||||||
|     false, // {BUTTON_DOWN_GPIO_Port, BUTTON_DOWN_Pin},
 |     false, // {BUTTON_DOWN_GPIO_Port, BUTTON_DOWN_Pin},
 | ||||||
|     false, // {BUTTON_RIGHT_GPIO_Port, BUTTON_RIGHT_Pin},
 |     false, // {BUTTON_RIGHT_GPIO_Port, BUTTON_RIGHT_Pin},
 | ||||||
| @ -26,4 +22,9 @@ const bool input_invert[] = { | |||||||
|     true, // {CHRG_GPIO_Port, CHRG_Pin}
 |     true, // {CHRG_GPIO_Port, CHRG_Pin}
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif /* __INPUT_PRIV_H */ | const GpioPin led_gpio[3] = { | ||||||
|  |     {LED_RED_GPIO_Port, LED_RED_Pin}, | ||||||
|  |     {LED_GREEN_GPIO_Port, LED_GREEN_Pin}, | ||||||
|  |     {LED_BLUE_GPIO_Port, LED_BLUE_Pin}}; | ||||||
|  | 
 | ||||||
|  | const GpioPin backlight_gpio = {DISPLAY_BACKLIGHT_GPIO_Port, DISPLAY_BACKLIGHT_Pin}; | ||||||
							
								
								
									
										12
									
								
								firmware/targets/f2/api-hal/api-hal-resources.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,12 @@ | |||||||
|  | #pragma once | ||||||
|  | #include "main.h" | ||||||
|  | #include "flipper_v2.h" | ||||||
|  | 
 | ||||||
|  | #define DEBOUNCE_TICKS 10 | ||||||
|  | #define GPIO_INPUT_PINS_COUNT 7 | ||||||
|  | 
 | ||||||
|  | extern const GpioPin input_gpio[GPIO_INPUT_PINS_COUNT]; | ||||||
|  | extern const bool input_invert[GPIO_INPUT_PINS_COUNT]; | ||||||
|  | 
 | ||||||
|  | extern const GpioPin led_gpio[3]; | ||||||
|  | extern const GpioPin backlight_gpio; | ||||||
| @ -1,506 +1,506 @@ | |||||||
| #MicroXplorer Configuration settings - do not modify | #MicroXplorer Configuration settings - do not modify | ||||||
| PB13.GPIOParameters=GPIO_Label | ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4 | ||||||
| PC7.GPIOParameters=GPIO_ModeDefaultPP,GPIO_Speed,GPIO_PuPd,GPIO_Label |  | ||||||
| PA15\ (JTDI).GPIOParameters=PinState,GPIO_Label |  | ||||||
| RCC.USART1Freq_Value=64000000 |  | ||||||
| TIM8.ICPolarity_CH2=TIM_INPUTCHANNELPOLARITY_BOTHEDGE |  | ||||||
| SPI3.Direction=SPI_DIRECTION_2LINES |  | ||||||
| PC10.GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| SPI3.VirtualType=VM_MASTER |  | ||||||
| SPI1.VirtualType=VM_MASTER |  | ||||||
| VP_ADC1_TempSens_Input.Mode=IN-TempSens |  | ||||||
| PC12.Locked=true |  | ||||||
| SH.GPXTI9.0=GPIO_EXTI9 |  | ||||||
| PC12.Signal=SPI3_MOSI |  | ||||||
| PB14.GPIO_Label=LED_GREEN |  | ||||||
| PC7.Locked=true |  | ||||||
| PA13\ (JTMS-SWDIO).Locked=true |  | ||||||
| PC6.GPIO_Label=VIBRO |  | ||||||
| PC3.Locked=true |  | ||||||
| PA3.GPIOParameters=GPIO_Label |  | ||||||
| PB6.GPIO_Label=DISPLAY_BACKLIGHT |  | ||||||
| PA15\ (JTDI).Signal=GPIO_Output |  | ||||||
| PC15-OSC32_OUT\ (PC15).Mode=LSE-External-Oscillator |  | ||||||
| PC5.Mode=INP |  | ||||||
| USART1.IPParameters=VirtualMode-Asynchronous |  | ||||||
| PB13.Signal=TIM15_CH1N |  | ||||||
| VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT |  | ||||||
| PA2.GPIOParameters=GPIO_Label |  | ||||||
| PinOutPanel.RotationAngle=0 |  | ||||||
| RCC.MCO1PinFreq_Value=64000000 |  | ||||||
| RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK |  | ||||||
| TIM15.Channel-Output\ Compare1\ CH1N=TIM_CHANNEL_1 |  | ||||||
| PC14-OSC32_IN\ (PC14).Mode=LSE-External-Oscillator |  | ||||||
| SH.GPXTI13.0=GPIO_EXTI13 |  | ||||||
| PA14\ (JTCK-SWCLK).Signal=SYS_JTCK-SWCLK |  | ||||||
| RCC.LPTIM1Freq_Value=64000000 |  | ||||||
| NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false |  | ||||||
| NVIC.EXTI1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true |  | ||||||
| PB4\ (NJTRST).GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING |  | ||||||
| RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_SYSCLK |  | ||||||
| SPI1.Direction=SPI_DIRECTION_2LINES |  | ||||||
| RCC.APB2TimFreq_Value=64000000 |  | ||||||
| PB6.Signal=GPIO_Output |  | ||||||
| PC7.Signal=S_TIM8_CH2 |  | ||||||
| SPI1.CalculateBaudRate=4.0 MBits/s |  | ||||||
| PC3.Signal=ADCx_IN4 |  | ||||||
| RCC.SAI2Freq_Value=13714285.714285715 |  | ||||||
| PA1.GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| RCC.PREFETCH_ENABLE=1 |  | ||||||
| PB13.Locked=true |  | ||||||
| RCC.USART3Freq_Value=64000000 |  | ||||||
| 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 |  | ||||||
| PA0.Locked=true |  | ||||||
| PB2.Signal=GPIO_Analog |  | ||||||
| PA8.Locked=true |  | ||||||
| PA4.Locked=true |  | ||||||
| ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.16.0 |  | ||||||
| VP_ADC1_Vref_Input.Mode=IN-Vrefint |  | ||||||
| MxDb.Version=DB.6.0.0 |  | ||||||
| PB0.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI |  | ||||||
| PA1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI |  | ||||||
| ProjectManager.BackupPrevious=false |  | ||||||
| VP_SYS_VS_tim17.Signal=SYS_VS_tim17 |  | ||||||
| PC4.GPIO_Label=NFC_CS |  | ||||||
| PB1.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM |  | ||||||
| FREERTOS.HEAP_NUMBER=4 |  | ||||||
| PB1.GPIO_Label=LED_BLUE |  | ||||||
| SPI1.DataSize=SPI_DATASIZE_8BIT |  | ||||||
| PC7.GPIO_ModeDefaultPP=GPIO_MODE_AF_OD |  | ||||||
| PA8.Signal=GPIO_Output |  | ||||||
| PA8.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD |  | ||||||
| RCC.PLLRCLKFreq_Value=64000000 |  | ||||||
| SH.ADCx_IN4.ConfNb=1 |  | ||||||
| PB6.Locked=true |  | ||||||
| NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false |  | ||||||
| ProjectManager.HalAssertFull=false |  | ||||||
| ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 |  | ||||||
| PA0.Signal=ADCx_IN5 |  | ||||||
| PC8.GPIOParameters=GPIO_Label |  | ||||||
| Mcu.Package=LQFP64 |  | ||||||
| PB9.Signal=GPXTI9 |  | ||||||
| PB1.Signal=GPIO_Output |  | ||||||
| PA5.Locked=true |  | ||||||
| NVIC.TimeBase=TIM1_TRG_COM_TIM17_IRQn |  | ||||||
| SPI3.Mode=SPI_MODE_MASTER |  | ||||||
| SH.GPXTI8.0=GPIO_EXTI8 |  | ||||||
| SH.GPXTI8.ConfNb=1 |  | ||||||
| NVIC.TimeBaseIP=TIM17 |  | ||||||
| RCC.LSCOPinFreq_Value=32000 |  | ||||||
| PA10.Signal=USART1_RX |  | ||||||
| PB9.GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| FREERTOS.FootprintOK=true |  | ||||||
| RCC.DFSDMFreq_Value=64000000 |  | ||||||
| PC11.Mode=Full_Duplex_Master |  | ||||||
| PB14.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP |  | ||||||
| NVIC.EXTI2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true |  | ||||||
| RCC.PLLPoutputFreq_Value=18285714.285714287 |  | ||||||
| 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 |  | ||||||
| USB_OTG_FS.IPParameters=VirtualMode |  | ||||||
| PB13.Mode=Output Compare1 CH1N |  | ||||||
| PB10.GPIOParameters=GPIO_Label |  | ||||||
| PC12.GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| PA13\ (JTMS-SWDIO).Signal=SYS_JTMS-SWDIO |  | ||||||
| PA13\ (JTMS-SWDIO).GPIOParameters=GPIO_Label |  | ||||||
| PH0-OSC_IN\ (PH0).Mode=HSE-External-Oscillator |  | ||||||
| PA8.GPIO_Speed=GPIO_SPEED_FREQ_HIGH |  | ||||||
| ProjectManager.CustomerFirmwarePackage=../../../lib/STM32CubeL4 |  | ||||||
| PC4.GPIOParameters=PinState,GPIO_Label |  | ||||||
| PC2.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING |  | ||||||
| NVIC.EXTI4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true |  | ||||||
| RCC.PLLQoutputFreq_Value=64000000 |  | ||||||
| ProjectManager.ProjectFileName=cube.ioc |  | ||||||
| FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;app_main,8,128,app,As external,NULL,Dynamic,NULL,NULL |  | ||||||
| ADC1.Rank-0\#ChannelRegularConversion=1 |  | ||||||
| TIM5.IPParameters=Prescaler,Period,Channel-PWM Generation4 CH4,Pulse-PWM Generation4 CH4 |  | ||||||
| Mcu.PinsNb=58 |  | ||||||
| PC4.PinState=GPIO_PIN_SET |  | ||||||
| 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,NbrOfConversion | ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,NbrOfConversion | ||||||
| PC13.Locked=true |  | ||||||
| ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE |  | ||||||
| PC13.Signal=GPXTI13 |  | ||||||
| RCC.SWPMI1Freq_Value=64000000 |  | ||||||
| FREERTOS.configCHECK_FOR_STACK_OVERFLOW=1 |  | ||||||
| PB8.GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| PC6.Signal=GPIO_Output |  | ||||||
| PC2.Signal=GPXTI2 |  | ||||||
| PB11.GPIO_Label=IR_TX |  | ||||||
| PC9.PinState=GPIO_PIN_SET |  | ||||||
| SH.GPXTI0.ConfNb=1 |  | ||||||
| SPI1.CLKPhase=SPI_PHASE_1EDGE |  | ||||||
| PC0.Signal=GPIO_Analog |  | ||||||
| PB14.Locked=true |  | ||||||
| PC11.GPIOParameters=GPIO_PuPd |  | ||||||
| SH.S_TIM8_CH2.0=TIM8_CH2,Input_Capture2_from_TI2 |  | ||||||
| PC3.GPIOParameters=GPIO_Label |  | ||||||
| PB8.GPIO_Label=BUTTON_RIGHT |  | ||||||
| PA11.Locked=true |  | ||||||
| PA8.GPIO_Label=LED_RED |  | ||||||
| SH.GPXTI2.ConfNb=1 |  | ||||||
| Mcu.Pin57=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS |  | ||||||
| PB14.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM |  | ||||||
| Mcu.Pin51=VP_ADC1_TempSens_Input |  | ||||||
| Mcu.Pin52=VP_ADC1_Vref_Input |  | ||||||
| Mcu.Pin50=PB9 |  | ||||||
| Mcu.Pin55=VP_SYS_VS_tim17 |  | ||||||
| Mcu.Pin56=VP_TIM8_VS_ClockSourceINT |  | ||||||
| Mcu.Pin53=VP_COMP1_VS_VREFINT12 |  | ||||||
| Mcu.Pin54=VP_FREERTOS_VS_CMSIS_V2 |  | ||||||
| PC6.Locked=true |  | ||||||
| PA9.Signal=USART1_TX |  | ||||||
| PB11.GPIOParameters=GPIO_Label |  | ||||||
| PB5.Locked=true |  | ||||||
| PB9.Locked=true |  | ||||||
| VP_TIM8_VS_ClockSourceINT.Mode=Internal |  | ||||||
| PC7.GPIO_PuPd=GPIO_NOPULL |  | ||||||
| Mcu.Pin48=PB7 |  | ||||||
| Mcu.Pin49=PB8 |  | ||||||
| RCC.PLLSAI1PoutputFreq_Value=13714285.714285715 |  | ||||||
| Mcu.Pin46=PB5 |  | ||||||
| Mcu.Pin47=PB6 |  | ||||||
| PB10.Signal=GPIO_Output |  | ||||||
| PB14.Signal=GPIO_Output |  | ||||||
| RCC.PLLSAI2RoutputFreq_Value=32000000 |  | ||||||
| PA5.Signal=GPIO_Analog |  | ||||||
| Mcu.Pin40=PC10 |  | ||||||
| Mcu.Pin41=PC11 |  | ||||||
| PC12.Mode=Full_Duplex_Master |  | ||||||
| Mcu.Pin44=PB3 (JTDO-TRACESWO) |  | ||||||
| Mcu.Pin45=PB4 (NJTRST) |  | ||||||
| Mcu.Pin42=PC12 |  | ||||||
| Mcu.Pin43=PD2 |  | ||||||
| ProjectManager.LastFirmware=true |  | ||||||
| Mcu.Pin37=PA13 (JTMS-SWDIO) |  | ||||||
| Mcu.Pin38=PA14 (JTCK-SWCLK) |  | ||||||
| PB15.GPIO_Label=RFID_PULL |  | ||||||
| Mcu.Pin35=PA11 |  | ||||||
| RCC.I2C1Freq_Value=64000000 |  | ||||||
| Mcu.Pin36=PA12 |  | ||||||
| SPI1.Mode=SPI_MODE_MASTER |  | ||||||
| Mcu.Pin39=PA15 (JTDI) |  | ||||||
| PB3\ (JTDO-TRACESWO).Mode=TX_Only_Simplex_Unidirect_Master |  | ||||||
| RCC.RNGFreq_Value=48000000 |  | ||||||
| PC2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI |  | ||||||
| VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input |  | ||||||
| Mcu.Pin30=PC8 |  | ||||||
| PA1.GPIO_Label=BUTTON_DOWN |  | ||||||
| Mcu.Pin33=PA9 |  | ||||||
| Mcu.Pin34=PA10 |  | ||||||
| Mcu.Pin31=PC9 |  | ||||||
| SH.ADCx_IN4.0=ADC1_IN4,IN4-Single-Ended |  | ||||||
| Mcu.Pin32=PA8 |  | ||||||
| PA9.Locked=true |  | ||||||
| NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false |  | ||||||
| PC10.GPIOParameters=GPIO_PuPd |  | ||||||
| SH.S_TIM5_CH4.ConfNb=1 |  | ||||||
| ProjectManager.FreePins=false |  | ||||||
| PC9.GPIOParameters=PinState,GPIO_Label |  | ||||||
| RCC.LPTIM2Freq_Value=64000000 |  | ||||||
| Mcu.Pin26=PB14 |  | ||||||
| Mcu.Pin27=PB15 |  | ||||||
| Mcu.Pin24=PB12 |  | ||||||
| ProjectManager.UnderRoot=false |  | ||||||
| Mcu.Pin25=PB13 |  | ||||||
| TIM8.Period=32768-1 |  | ||||||
| Mcu.Pin28=PC6 |  | ||||||
| PC7.GPIO_Label=iButton |  | ||||||
| Mcu.Pin29=PC7 |  | ||||||
| PA13\ (JTMS-SWDIO).Mode=Serial_Wire |  | ||||||
| PA4.Signal=GPIO_Analog |  | ||||||
| Mcu.Pin22=PB10 |  | ||||||
| PB5.Signal=SPI1_MOSI |  | ||||||
| Mcu.Pin23=PB11 |  | ||||||
| Mcu.Pin20=PB1 |  | ||||||
| ADC1.master=1 | ADC1.master=1 | ||||||
| PA3.Locked=true | ADC1.NbrOfConversion=1 | ||||||
| Mcu.Pin21=PB2 | ADC1.NbrOfConversionFlag=1 | ||||||
| PA10.Locked=true | ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE | ||||||
| PA14\ (JTCK-SWCLK).Locked=true | ADC1.Rank-0\#ChannelRegularConversion=1 | ||||||
| NVIC.ForceEnableDMAVector=true | ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 | ||||||
| NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | board=NUCLEO-L476RG | ||||||
| ProjectManager.CompilerOptimize=6 | boardIOC=true | ||||||
| PA11.Signal=USB_OTG_FS_DM | File.Version=6 | ||||||
| ProjectManager.HeapSize=0x200 | FREERTOS.configCHECK_FOR_STACK_OVERFLOW=1 | ||||||
| PA0.GPIOParameters=GPIO_Label | FREERTOS.configGENERATE_RUN_TIME_STATS=1 | ||||||
| Mcu.Pin15=PA6 | FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 | ||||||
| NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | FREERTOS.configTOTAL_HEAP_SIZE=40960 | ||||||
| Mcu.Pin16=PA7 | FREERTOS.configUSE_IDLE_HOOK=1 | ||||||
| Mcu.Pin13=PA4 | FREERTOS.configUSE_TIMERS=1 | ||||||
| Mcu.Pin14=PA5 | FREERTOS.FootprintOK=true | ||||||
| Mcu.Pin19=PB0 | FREERTOS.HEAP_NUMBER=4 | ||||||
| SH.GPXTI15.ConfNb=1 | 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 | ||||||
| ProjectManager.ComputerToolchain=false | FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;app_main,8,128,app,As external,NULL,Dynamic,NULL,NULL | ||||||
| Mcu.Pin17=PC4 | GPIO.groupedBy=Group By Peripherals | ||||||
| Mcu.Pin18=PC5 | KeepUserPlacement=false | ||||||
| SH.ADCx_IN5.0=ADC1_IN5,IN5-Single-Ended |  | ||||||
| NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 |  | ||||||
| Mcu.Pin11=PA2 |  | ||||||
| Mcu.Pin12=PA3 |  | ||||||
| Mcu.Pin10=PA1 |  | ||||||
| PC3.GPIO_Label=BATT_V |  | ||||||
| RCC.PWRFreq_Value=64000000 |  | ||||||
| PA15\ (JTDI).PinState=GPIO_PIN_SET |  | ||||||
| SH.ADCx_IN5.ConfNb=1 |  | ||||||
| PB4\ (NJTRST).GPIO_Label=BUTTON_LEFT |  | ||||||
| PB1.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD |  | ||||||
| SH.GPXTI1.ConfNb=1 |  | ||||||
| PD2.Signal=GPIO_Analog |  | ||||||
| PB6.GPIO_Speed=GPIO_SPEED_FREQ_LOW |  | ||||||
| RCC.I2C2Freq_Value=64000000 |  | ||||||
| PB0.Signal=GPXTI0 |  | ||||||
| PB4\ (NJTRST).GPIO_PuPd=GPIO_PULLDOWN |  | ||||||
| PC0.Locked=true |  | ||||||
| PC1.Signal=GPIO_Analog |  | ||||||
| Mcu.Family=STM32L4 | Mcu.Family=STM32L4 | ||||||
| SH.GPXTI1.0=GPIO_EXTI1 | Mcu.IP0=ADC1 | ||||||
| ProjectManager.MainLocation=Src | Mcu.IP10=TIM15 | ||||||
| USB_DEVICE.CLASS_NAME_FS=CDC | Mcu.IP11=USART1 | ||||||
| RCC.SAI1Freq_Value=13714285.714285715 | Mcu.IP12=USB_DEVICE | ||||||
| RCC.CortexFreq_Value=64000000 | Mcu.IP13=USB_OTG_FS | ||||||
| ProjectManager.KeepUserCode=true | Mcu.IP1=COMP1 | ||||||
| Mcu.UserName=STM32L476RGTx |  | ||||||
| PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN |  | ||||||
| PH0-OSC_IN\ (PH0).Locked=true |  | ||||||
| PC10.Locked=true |  | ||||||
| PC10.Signal=SPI3_SCK |  | ||||||
| RCC.PLLSAI1RoutputFreq_Value=48000000 |  | ||||||
| PA0.GPIO_Label=IR_RX |  | ||||||
| ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_SPI1_Init-SPI1-false-HAL-true,4-MX_SPI3_Init-SPI3-false-HAL-true,5-MX_ADC1_Init-ADC1-false-HAL-true,6-MX_COMP1_Init-COMP1-false-HAL-true,7-MX_TIM5_Init-TIM5-false-HAL-true,8-MX_TIM15_Init-TIM15-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,11-MX_TIM8_Init-TIM8-false-HAL-true |  | ||||||
| PA11.Mode=Device_Only |  | ||||||
| PC9.Locked=true |  | ||||||
| TIM5.Pulse-PWM\ Generation4\ CH4=145 |  | ||||||
| PB0.GPIO_Label=BUTTON_UP |  | ||||||
| RCC.USART2Freq_Value=64000000 |  | ||||||
| PD2.Locked=true |  | ||||||
| VP_COMP1_VS_VREFINT12.Signal=COMP1_VS_VREFINT12 |  | ||||||
| PC13.GPIO_Label=BUTTON_BACK |  | ||||||
| PC1.Locked=true |  | ||||||
| PB13.GPIO_Label=RFID_OUT |  | ||||||
| PB11.Signal=GPIO_Output |  | ||||||
| PB15.Signal=GPXTI15 |  | ||||||
| ProjectManager.StackSize=0x400 |  | ||||||
| PB3\ (JTDO-TRACESWO).Signal=SPI1_SCK |  | ||||||
| VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 |  | ||||||
| SH.GPXTI2.0=GPIO_EXTI2 |  | ||||||
| RCC.I2C3Freq_Value=64000000 |  | ||||||
| Mcu.IP4=RCC |  | ||||||
| RCC.FCLKCortexFreq_Value=64000000 |  | ||||||
| Mcu.IP5=SPI1 |  | ||||||
| Mcu.IP2=FREERTOS | Mcu.IP2=FREERTOS | ||||||
| Mcu.IP3=NVIC | Mcu.IP3=NVIC | ||||||
| PC11.GPIO_PuPd=GPIO_PULLDOWN | Mcu.IP4=RCC | ||||||
| Mcu.IP0=ADC1 | Mcu.IP5=SPI1 | ||||||
| Mcu.IP1=COMP1 | Mcu.IP6=SPI3 | ||||||
| PA12.Locked=true | Mcu.IP7=SYS | ||||||
| PA12.Signal=USB_OTG_FS_DP | Mcu.IP8=TIM5 | ||||||
| PB8.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | Mcu.IP9=TIM8 | ||||||
| SPI1.CLKPolarity=SPI_POLARITY_LOW |  | ||||||
| Mcu.UserConstants= |  | ||||||
| RCC.VCOSAI1OutputFreq_Value=96000000 |  | ||||||
| SPI3.CLKPolarity=SPI_POLARITY_LOW |  | ||||||
| RCC.SDMMCFreq_Value=48000000 |  | ||||||
| PA14\ (JTCK-SWCLK).GPIOParameters=GPIO_Label |  | ||||||
| SH.GPXTI13.ConfNb=1 |  | ||||||
| Mcu.ThirdPartyNb=0 |  | ||||||
| RCC.HCLKFreq_Value=64000000 |  | ||||||
| Mcu.IPNb=14 | Mcu.IPNb=14 | ||||||
| ProjectManager.PreviousToolchain= | Mcu.Name=STM32L476R(C-E-G)Tx | ||||||
| PA8.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP | Mcu.Package=LQFP64 | ||||||
|  | Mcu.Pin0=PC13 | ||||||
|  | Mcu.Pin10=PA1 | ||||||
|  | Mcu.Pin11=PA2 | ||||||
|  | Mcu.Pin12=PA3 | ||||||
|  | Mcu.Pin13=PA4 | ||||||
|  | Mcu.Pin14=PA5 | ||||||
|  | Mcu.Pin15=PA6 | ||||||
|  | Mcu.Pin16=PA7 | ||||||
|  | Mcu.Pin17=PC4 | ||||||
|  | Mcu.Pin18=PC5 | ||||||
|  | Mcu.Pin19=PB0 | ||||||
|  | Mcu.Pin1=PC14-OSC32_IN (PC14) | ||||||
|  | Mcu.Pin20=PB1 | ||||||
|  | Mcu.Pin21=PB2 | ||||||
|  | Mcu.Pin22=PB10 | ||||||
|  | Mcu.Pin23=PB11 | ||||||
|  | Mcu.Pin24=PB12 | ||||||
|  | Mcu.Pin25=PB13 | ||||||
|  | Mcu.Pin26=PB14 | ||||||
|  | Mcu.Pin27=PB15 | ||||||
|  | Mcu.Pin28=PC6 | ||||||
|  | Mcu.Pin29=PC7 | ||||||
|  | Mcu.Pin2=PC15-OSC32_OUT (PC15) | ||||||
|  | Mcu.Pin30=PC8 | ||||||
|  | Mcu.Pin31=PC9 | ||||||
|  | Mcu.Pin32=PA8 | ||||||
|  | Mcu.Pin33=PA9 | ||||||
|  | Mcu.Pin34=PA10 | ||||||
|  | Mcu.Pin35=PA11 | ||||||
|  | Mcu.Pin36=PA12 | ||||||
|  | Mcu.Pin37=PA13 (JTMS-SWDIO) | ||||||
|  | Mcu.Pin38=PA14 (JTCK-SWCLK) | ||||||
|  | Mcu.Pin39=PA15 (JTDI) | ||||||
|  | Mcu.Pin3=PH0-OSC_IN (PH0) | ||||||
|  | Mcu.Pin40=PC10 | ||||||
|  | Mcu.Pin41=PC11 | ||||||
|  | Mcu.Pin42=PC12 | ||||||
|  | Mcu.Pin43=PD2 | ||||||
|  | Mcu.Pin44=PB3 (JTDO-TRACESWO) | ||||||
|  | Mcu.Pin45=PB4 (NJTRST) | ||||||
|  | Mcu.Pin46=PB5 | ||||||
|  | Mcu.Pin47=PB6 | ||||||
|  | Mcu.Pin48=PB7 | ||||||
|  | Mcu.Pin49=PB8 | ||||||
|  | Mcu.Pin4=PH1-OSC_OUT (PH1) | ||||||
|  | Mcu.Pin50=PB9 | ||||||
|  | Mcu.Pin51=VP_ADC1_TempSens_Input | ||||||
|  | Mcu.Pin52=VP_ADC1_Vref_Input | ||||||
|  | Mcu.Pin53=VP_COMP1_VS_VREFINT12 | ||||||
|  | Mcu.Pin54=VP_FREERTOS_VS_CMSIS_V2 | ||||||
|  | Mcu.Pin55=VP_SYS_VS_tim17 | ||||||
|  | Mcu.Pin56=VP_TIM8_VS_ClockSourceINT | ||||||
|  | Mcu.Pin57=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS | ||||||
|  | Mcu.Pin5=PC0 | ||||||
| Mcu.Pin6=PC1 | Mcu.Pin6=PC1 | ||||||
| PB9.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING |  | ||||||
| Mcu.Pin7=PC2 | Mcu.Pin7=PC2 | ||||||
| Mcu.Pin8=PC3 | Mcu.Pin8=PC3 | ||||||
| Mcu.Pin9=PA0 | Mcu.Pin9=PA0 | ||||||
| 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 | Mcu.PinsNb=58 | ||||||
| RCC.AHBFreq_Value=64000000 | Mcu.ThirdPartyNb=0 | ||||||
| Mcu.Pin0=PC13 | Mcu.UserConstants= | ||||||
| SPI3.DataSize=SPI_DATASIZE_8BIT | Mcu.UserName=STM32L476RGTx | ||||||
| Mcu.Pin1=PC14-OSC32_IN (PC14) | MxCube.Version=6.0.1 | ||||||
| TIM8.IPParameters=Channel-Input_Capture2_from_TI2,ICPolarity_CH2,Prescaler,Period | MxDb.Version=DB.6.0.0 | ||||||
| GPIO.groupedBy=Group By Peripherals | NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | ||||||
| Mcu.Pin2=PC15-OSC32_OUT (PC15) |  | ||||||
| Mcu.Pin3=PH0-OSC_IN (PH0) |  | ||||||
| Mcu.Pin4=PH1-OSC_OUT (PH1) |  | ||||||
| Mcu.Pin5=PC0 |  | ||||||
| ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4 |  | ||||||
| PH1-OSC_OUT\ (PH1).Mode=HSE-External-Oscillator |  | ||||||
| RCC.HSE_VALUE=16000000 |  | ||||||
| FREERTOS.configUSE_TIMERS=1 |  | ||||||
| NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | ||||||
| Mcu.IP10=TIM15 | NVIC.EXTI0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
|  | NVIC.EXTI15_10_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true | ||||||
|  | NVIC.EXTI1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
|  | NVIC.EXTI2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
|  | NVIC.EXTI4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
|  | NVIC.EXTI9_5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
|  | NVIC.ForceEnableDMAVector=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\:false | ||||||
|  | NVIC.OTG_FS_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true | ||||||
|  | NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false | ||||||
|  | NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 | ||||||
|  | NVIC.SavedPendsvIrqHandlerGenerated=true | ||||||
|  | NVIC.SavedSvcallIrqHandlerGenerated=true | ||||||
|  | NVIC.SavedSystickIrqHandlerGenerated=true | ||||||
|  | NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false | ||||||
| NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:true\:false | NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:true\:false | ||||||
| Mcu.IP12=USB_DEVICE |  | ||||||
| Mcu.IP11=USART1 |  | ||||||
| PB0.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING |  | ||||||
| NVIC.TIM1_TRG_COM_TIM17_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true | NVIC.TIM1_TRG_COM_TIM17_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true | ||||||
| Mcu.IP13=USB_OTG_FS | NVIC.TIM8_CC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | ||||||
| RCC.VCOInputFreq_Value=8000000 | NVIC.TimeBase=TIM1_TRG_COM_TIM17_IRQn | ||||||
| TIM5.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 | NVIC.TimeBaseIP=TIM17 | ||||||
| PB5.Mode=TX_Only_Simplex_Unidirect_Master | NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false | ||||||
| File.Version=6 | PA0.GPIOParameters=GPIO_Label | ||||||
| PC13.GPIO_PuPd=GPIO_PULLDOWN | PA0.GPIO_Label=IR_RX | ||||||
| PB7.Signal=GPIO_Input | PA0.Locked=true | ||||||
| PB8.Locked=true | PA0.Signal=ADCx_IN5 | ||||||
| PB6.GPIOParameters=GPIO_Speed,GPIO_Label | PA1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
| PB0.Locked=true | PA1.GPIO_Label=BUTTON_DOWN | ||||||
| FREERTOS.configTOTAL_HEAP_SIZE=40960 | PA1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
| VP_COMP1_VS_VREFINT12.Mode=VREFINT_12 | PA1.GPIO_PuPd=GPIO_PULLDOWN | ||||||
| ProjectManager.ProjectName=cube | PA1.Locked=true | ||||||
| PB1.PinState=GPIO_PIN_SET | PA1.Signal=GPXTI1 | ||||||
| PB7.GPIO_Label=CC1101_G0 | PA10.Locked=true | ||||||
| PB4\ (NJTRST).Locked=true | PA10.Mode=Asynchronous | ||||||
|  | PA10.Signal=USART1_RX | ||||||
|  | PA11.Locked=true | ||||||
|  | PA11.Mode=Device_Only | ||||||
|  | PA11.Signal=USB_OTG_FS_DM | ||||||
|  | PA12.Locked=true | ||||||
|  | PA12.Mode=Device_Only | ||||||
|  | PA12.Signal=USB_OTG_FS_DP | ||||||
|  | PA13\ (JTMS-SWDIO).GPIOParameters=GPIO_Label | ||||||
|  | PA13\ (JTMS-SWDIO).GPIO_Label=TMS | ||||||
|  | PA13\ (JTMS-SWDIO).Locked=true | ||||||
|  | PA13\ (JTMS-SWDIO).Mode=Serial_Wire | ||||||
|  | PA13\ (JTMS-SWDIO).Signal=SYS_JTMS-SWDIO | ||||||
|  | PA14\ (JTCK-SWCLK).GPIOParameters=GPIO_Label | ||||||
|  | PA14\ (JTCK-SWCLK).GPIO_Label=TCK | ||||||
|  | PA14\ (JTCK-SWCLK).Locked=true | ||||||
|  | PA14\ (JTCK-SWCLK).Mode=Serial_Wire | ||||||
|  | PA14\ (JTCK-SWCLK).Signal=SYS_JTCK-SWCLK | ||||||
|  | PA15\ (JTDI).GPIOParameters=PinState,GPIO_Label | ||||||
|  | PA15\ (JTDI).GPIO_Label=CC1101_CS | ||||||
|  | PA15\ (JTDI).Locked=true | ||||||
|  | PA15\ (JTDI).PinState=GPIO_PIN_SET | ||||||
|  | PA15\ (JTDI).Signal=GPIO_Output | ||||||
|  | PA2.GPIOParameters=GPIO_Label | ||||||
|  | PA2.GPIO_Label=DISPLAY_DI | ||||||
|  | PA2.Locked=true | ||||||
|  | PA2.Signal=GPIO_Output | ||||||
|  | PA3.GPIOParameters=GPIO_Label | ||||||
|  | PA3.GPIO_Label=SPEAKER | ||||||
|  | PA3.Locked=true | ||||||
|  | PA3.Signal=S_TIM5_CH4 | ||||||
|  | PA4.Locked=true | ||||||
|  | PA4.Signal=GPIO_Analog | ||||||
|  | PA5.Locked=true | ||||||
|  | PA5.Signal=GPIO_Analog | ||||||
|  | PA6.Locked=true | ||||||
| PA6.Signal=GPIO_Analog | PA6.Signal=GPIO_Analog | ||||||
| PA7.Locked=true | PA7.Locked=true | ||||||
| PB15.GPIO_PuPd=GPIO_PULLDOWN | PA7.Signal=GPIO_Analog | ||||||
| NVIC.OTG_FS_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true | PA8.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP | ||||||
| ProjectManager.ToolChainLocation= | PA8.GPIO_Label=LED_RED | ||||||
| PA2.GPIO_Label=DISPLAY_DI | PA8.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD | ||||||
| RCC.LSI_VALUE=32000 | PA8.GPIO_Speed=GPIO_SPEED_FREQ_HIGH | ||||||
| SH.GPXTI0.0=GPIO_EXTI0 | PA8.Locked=true | ||||||
| USB_OTG_FS.VirtualMode=Device_Only |  | ||||||
| VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS |  | ||||||
| PC14-OSC32_IN\ (PC14).Locked=true |  | ||||||
| TIM8.Prescaler=64-1 |  | ||||||
| PC4.Locked=true |  | ||||||
| SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase |  | ||||||
| PC5.Signal=COMP1_INP |  | ||||||
| SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 |  | ||||||
| PA1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING |  | ||||||
| PC2.GPIO_Label=CHRG |  | ||||||
| PA8.PinState=GPIO_PIN_SET | PA8.PinState=GPIO_PIN_SET | ||||||
| PB15.Locked=true | PA8.Signal=GPIO_Output | ||||||
| PB3\ (JTDO-TRACESWO).Locked=true | PA9.Locked=true | ||||||
| RCC.PLLSAI1N=12 |  | ||||||
| PA3.Signal=S_TIM5_CH4 |  | ||||||
| PA2.Locked=true |  | ||||||
| RCC.MSI_VALUE=4000000 |  | ||||||
| RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE |  | ||||||
| PA14\ (JTCK-SWCLK).Mode=Serial_Wire |  | ||||||
| PB8.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI |  | ||||||
| PB9.GPIO_Label=BUTTON_OK |  | ||||||
| PA10.Mode=Asynchronous |  | ||||||
| PC9.GPIO_Label=SD_CS |  | ||||||
| ProjectManager.NoMain=false |  | ||||||
| SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase |  | ||||||
| USB_DEVICE.VirtualModeFS=Cdc_FS |  | ||||||
| NVIC.SavedSvcallIrqHandlerGenerated=true |  | ||||||
| PC11.Signal=SPI3_MISO |  | ||||||
| PC8.Signal=GPIO_Output |  | ||||||
| PC4.Signal=GPIO_Output |  | ||||||
| PC10.Mode=Full_Duplex_Master |  | ||||||
| ProjectManager.DefaultFWLocation=false |  | ||||||
| PC15-OSC32_OUT\ (PC15).Signal=RCC_OSC32_OUT |  | ||||||
| PB12.Locked=true |  | ||||||
| PA14\ (JTCK-SWCLK).GPIO_Label=TCK |  | ||||||
| ProjectManager.DeletePrevious=true |  | ||||||
| PB10.Locked=true |  | ||||||
| RCC.VCOSAI2OutputFreq_Value=64000000 |  | ||||||
| boardIOC=true |  | ||||||
| USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS |  | ||||||
| RCC.FamilyName=M |  | ||||||
| PH1-OSC_OUT\ (PH1).Signal=RCC_OSC_OUT |  | ||||||
| PB9.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI |  | ||||||
| PC8.GPIO_Label=DISPLAY_CS |  | ||||||
| PC12.GPIOParameters=GPIO_PuPd |  | ||||||
| USART1.VirtualMode-Asynchronous=VM_ASYNC |  | ||||||
| FREERTOS.configUSE_IDLE_HOOK=1 |  | ||||||
| PA9.Mode=Asynchronous | PA9.Mode=Asynchronous | ||||||
| PB4\ (NJTRST).GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | PA9.Signal=USART1_TX | ||||||
| NVIC.TIM8_CC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | PB0.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
| PB14.PinState=GPIO_PIN_SET | PB0.GPIO_Label=BUTTON_UP | ||||||
| FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 | PB0.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
| ProjectManager.TargetToolchain=Makefile | PB0.GPIO_PuPd=GPIO_PULLDOWN | ||||||
| PB10.GPIO_Label=DISPLAY_RST | PB0.Locked=true | ||||||
| PB7.GPIOParameters=GPIO_Label | PB0.Signal=GPXTI0 | ||||||
| VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS | PB1.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP | ||||||
| PC5.GPIOParameters=GPIO_Label | PB1.GPIO_Label=LED_BLUE | ||||||
| PC2.Locked=true | PB1.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD | ||||||
| ProjectManager.RegisterCallBack= | PB1.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM | ||||||
| PC15-OSC32_OUT\ (PC15).Locked=true |  | ||||||
| RCC.USBFreq_Value=48000000 |  | ||||||
| TIM15.IPParameters=Channel-Output Compare1 CH1N |  | ||||||
| PB14.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD |  | ||||||
| PA1.Signal=GPXTI1 |  | ||||||
| PB1.Locked=true | PB1.Locked=true | ||||||
| PB15.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING | PB1.PinState=GPIO_PIN_SET | ||||||
| PH1-OSC_OUT\ (PH1).Locked=true | PB1.Signal=GPIO_Output | ||||||
| board=NUCLEO-L476RG | PB10.GPIOParameters=GPIO_Label | ||||||
| SPI3.CLKPhase=SPI_PHASE_2EDGE | PB10.GPIO_Label=DISPLAY_RST | ||||||
| PC7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM | PB10.Locked=true | ||||||
| RCC.VCOOutputFreq_Value=128000000 | PB10.Signal=GPIO_Output | ||||||
| NVIC.SavedSystickIrqHandlerGenerated=true | PB11.GPIOParameters=GPIO_Label | ||||||
| RCC.APB2Freq_Value=64000000 | PB11.GPIO_Label=IR_TX | ||||||
| RCC.UART4Freq_Value=64000000 | PB11.Locked=true | ||||||
| SPI3.CalculateBaudRate=1000.0 KBits/s | PB11.Signal=GPIO_Output | ||||||
| MxCube.Version=6.0.1 | PB12.Locked=true | ||||||
| PA13\ (JTMS-SWDIO).GPIO_Label=TMS | PB12.Signal=GPIO_Analog | ||||||
| PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | PB13.GPIOParameters=GPIO_Label | ||||||
| RCC.PLLSAI1QoutputFreq_Value=48000000 | PB13.GPIO_Label=RFID_OUT | ||||||
| RCC.ADCFreq_Value=64000000 | PB13.Locked=true | ||||||
| SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64 | PB13.Mode=Output Compare1 CH1N | ||||||
| VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input | PB13.Signal=TIM15_CH1N | ||||||
| SH.S_TIM5_CH4.0=TIM5_CH4,PWM Generation4 CH4 | PB14.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP | ||||||
| PC2.GPIO_PuPd=GPIO_PULLUP | PB14.GPIO_Label=LED_GREEN | ||||||
| RCC.UART5Freq_Value=64000000 | PB14.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD | ||||||
|  | PB14.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM | ||||||
|  | PB14.Locked=true | ||||||
|  | PB14.PinState=GPIO_PIN_SET | ||||||
|  | PB14.Signal=GPIO_Output | ||||||
| PB15.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | PB15.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
| ADC1.NbrOfConversion=1 | PB15.GPIO_Label=RFID_PULL | ||||||
| PA15\ (JTDI).GPIO_Label=CC1101_CS | PB15.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING | ||||||
| RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DFSDMFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSAI2PoutputFreq_Value,PLLSAI2RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMCFreq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value,VCOSAI2OutputFreq_Value | PB15.GPIO_PuPd=GPIO_PULLDOWN | ||||||
| ProjectManager.AskForMigrate=true | PB15.Locked=true | ||||||
| Mcu.Name=STM32L476R(C-E-G)Tx | PB15.Signal=GPXTI15 | ||||||
| NVIC.SavedPendsvIrqHandlerGenerated=true |  | ||||||
| PA2.Signal=GPIO_Output |  | ||||||
| PB2.Locked=true | PB2.Locked=true | ||||||
| Mcu.IP8=TIM5 | PB2.Signal=GPIO_Analog | ||||||
| VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2 | PB3\ (JTDO-TRACESWO).Locked=true | ||||||
| Mcu.IP9=TIM8 | PB3\ (JTDO-TRACESWO).Mode=TX_Only_Simplex_Unidirect_Master | ||||||
| Mcu.IP6=SPI3 | PB3\ (JTDO-TRACESWO).Signal=SPI1_SCK | ||||||
| Mcu.IP7=SYS | PB4\ (NJTRST).GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
| ProjectManager.CoupleFile=true | PB4\ (NJTRST).GPIO_Label=BUTTON_LEFT | ||||||
| NVIC.EXTI0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | PB4\ (NJTRST).GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
| RCC.SYSCLKFreq_VALUE=64000000 | PB4\ (NJTRST).GPIO_PuPd=GPIO_PULLDOWN | ||||||
| PA1.Locked=true | PB4\ (NJTRST).Locked=true | ||||||
| PA12.Mode=Device_Only | PB4\ (NJTRST).Signal=GPXTI4 | ||||||
| SH.GPXTI4.0=GPIO_EXTI4 | PB5.Locked=true | ||||||
| RCC.PLLSAI2PoutputFreq_Value=9142857.142857144 | PB5.Mode=TX_Only_Simplex_Unidirect_Master | ||||||
| KeepUserPlacement=false | PB5.Signal=SPI1_MOSI | ||||||
| TIM5.Prescaler=500 - 1 | PB6.GPIOParameters=GPIO_Speed,GPIO_Label | ||||||
|  | PB6.GPIO_Label=DISPLAY_BACKLIGHT | ||||||
|  | PB6.GPIO_Speed=GPIO_SPEED_FREQ_LOW | ||||||
|  | PB6.Locked=true | ||||||
|  | PB6.Signal=GPIO_Output | ||||||
|  | PB7.GPIOParameters=GPIO_Label | ||||||
|  | PB7.GPIO_Label=CC1101_G0 | ||||||
|  | PB7.Locked=true | ||||||
|  | PB7.Signal=GPIO_Input | ||||||
|  | PB8.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
|  | PB8.GPIO_Label=BUTTON_RIGHT | ||||||
|  | PB8.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
|  | PB8.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PB8.Locked=true | ||||||
|  | PB8.Signal=GPXTI8 | ||||||
|  | PB9.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
|  | PB9.GPIO_Label=BUTTON_OK | ||||||
|  | PB9.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
|  | PB9.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PB9.Locked=true | ||||||
|  | PB9.Signal=GPXTI9 | ||||||
|  | PC0.Locked=true | ||||||
|  | PC0.Signal=GPIO_Analog | ||||||
|  | PC1.Locked=true | ||||||
|  | PC1.Signal=GPIO_Analog | ||||||
|  | PC10.GPIOParameters=GPIO_PuPd | ||||||
|  | PC10.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PC10.Locked=true | ||||||
|  | PC10.Mode=Full_Duplex_Master | ||||||
|  | PC10.Signal=SPI3_SCK | ||||||
|  | PC11.GPIOParameters=GPIO_PuPd | ||||||
|  | PC11.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PC11.Locked=true | ||||||
|  | PC11.Mode=Full_Duplex_Master | ||||||
|  | PC11.Signal=SPI3_MISO | ||||||
|  | PC12.GPIOParameters=GPIO_PuPd | ||||||
|  | PC12.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PC12.Locked=true | ||||||
|  | PC12.Mode=Full_Duplex_Master | ||||||
|  | PC12.Signal=SPI3_MOSI | ||||||
|  | PC13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
|  | PC13.GPIO_Label=BUTTON_BACK | ||||||
| PC13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | PC13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING | ||||||
| PC5.GPIO_Label=RFID_RF_IN | PC13.GPIO_PuPd=GPIO_PULLDOWN | ||||||
|  | PC13.Locked=true | ||||||
|  | PC13.Signal=GPXTI13 | ||||||
|  | PC14-OSC32_IN\ (PC14).Locked=true | ||||||
|  | PC14-OSC32_IN\ (PC14).Mode=LSE-External-Oscillator | ||||||
| PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN | PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN | ||||||
| SH.GPXTI9.ConfNb=1 | PC15-OSC32_OUT\ (PC15).Locked=true | ||||||
| NVIC.EXTI9_5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true | PC15-OSC32_OUT\ (PC15).Mode=LSE-External-Oscillator | ||||||
| SH.GPXTI4.ConfNb=1 | PC15-OSC32_OUT\ (PC15).Signal=RCC_OSC32_OUT | ||||||
|  | PC2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI | ||||||
|  | PC2.GPIO_Label=CHRG | ||||||
|  | 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=BATT_V | ||||||
|  | PC3.Locked=true | ||||||
|  | PC3.Signal=ADCx_IN4 | ||||||
|  | PC4.GPIOParameters=PinState,GPIO_Label | ||||||
|  | PC4.GPIO_Label=NFC_CS | ||||||
|  | PC4.Locked=true | ||||||
|  | PC4.PinState=GPIO_PIN_SET | ||||||
|  | PC4.Signal=GPIO_Output | ||||||
|  | PC5.GPIOParameters=GPIO_Label | ||||||
|  | PC5.GPIO_Label=RFID_RF_IN | ||||||
|  | PC5.Mode=INP | ||||||
|  | PC5.Signal=COMP1_INP | ||||||
| PC6.GPIOParameters=GPIO_Label | PC6.GPIOParameters=GPIO_Label | ||||||
|  | PC6.GPIO_Label=VIBRO | ||||||
|  | PC6.Locked=true | ||||||
|  | PC6.Signal=GPIO_Output | ||||||
|  | PC7.GPIOParameters=GPIO_ModeDefaultPP,GPIO_Speed,GPIO_PuPd,GPIO_Label | ||||||
|  | PC7.GPIO_Label=iButton | ||||||
|  | PC7.GPIO_ModeDefaultPP=GPIO_MODE_AF_OD | ||||||
|  | PC7.GPIO_PuPd=GPIO_NOPULL | ||||||
|  | PC7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM | ||||||
|  | PC7.Locked=true | ||||||
|  | PC7.Signal=S_TIM8_CH2 | ||||||
|  | PC8.GPIOParameters=GPIO_Label | ||||||
|  | PC8.GPIO_Label=DISPLAY_CS | ||||||
|  | PC8.Locked=true | ||||||
|  | PC8.Signal=GPIO_Output | ||||||
|  | PC9.GPIOParameters=PinState,GPIO_Label | ||||||
|  | PC9.GPIO_Label=SD_CS | ||||||
|  | PC9.Locked=true | ||||||
|  | PC9.PinState=GPIO_PIN_SET | ||||||
|  | PC9.Signal=GPIO_Output | ||||||
|  | PD2.Locked=true | ||||||
|  | PD2.Signal=GPIO_Analog | ||||||
|  | PH0-OSC_IN\ (PH0).Locked=true | ||||||
|  | PH0-OSC_IN\ (PH0).Mode=HSE-External-Oscillator | ||||||
|  | PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN | ||||||
|  | PH1-OSC_OUT\ (PH1).Locked=true | ||||||
|  | PH1-OSC_OUT\ (PH1).Mode=HSE-External-Oscillator | ||||||
|  | PH1-OSC_OUT\ (PH1).Signal=RCC_OSC_OUT | ||||||
|  | PinOutPanel.RotationAngle=0 | ||||||
|  | ProjectManager.AskForMigrate=true | ||||||
|  | ProjectManager.BackupPrevious=false | ||||||
|  | ProjectManager.CompilerOptimize=6 | ||||||
|  | ProjectManager.ComputerToolchain=false | ||||||
|  | ProjectManager.CoupleFile=true | ||||||
|  | ProjectManager.CustomerFirmwarePackage=../../../lib/STM32CubeL4 | ||||||
|  | ProjectManager.DefaultFWLocation=false | ||||||
|  | ProjectManager.DeletePrevious=true | ||||||
|  | ProjectManager.DeviceId=STM32L476RGTx | ||||||
|  | ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.16.0 | ||||||
|  | ProjectManager.FreePins=false | ||||||
|  | ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_SPI1_Init-SPI1-false-HAL-true,4-MX_SPI3_Init-SPI3-false-HAL-true,5-MX_ADC1_Init-ADC1-false-HAL-true,6-MX_COMP1_Init-COMP1-false-HAL-true,7-MX_TIM5_Init-TIM5-false-HAL-true,8-MX_TIM15_Init-TIM15-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,11-MX_TIM8_Init-TIM8-false-HAL-true | ||||||
|  | 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=cube.ioc | ||||||
|  | ProjectManager.ProjectName=cube | ||||||
|  | ProjectManager.RegisterCallBack= | ||||||
|  | ProjectManager.StackSize=0x400 | ||||||
|  | ProjectManager.TargetToolchain=Makefile | ||||||
|  | ProjectManager.ToolChainLocation= | ||||||
|  | ProjectManager.UnderRoot=false | ||||||
|  | RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_SYSCLK | ||||||
|  | RCC.ADCFreq_Value=64000000 | ||||||
|  | RCC.AHBFreq_Value=64000000 | ||||||
|  | RCC.APB1Freq_Value=64000000 | ||||||
|  | RCC.APB1TimFreq_Value=64000000 | ||||||
|  | RCC.APB2Freq_Value=64000000 | ||||||
|  | RCC.APB2TimFreq_Value=64000000 | ||||||
|  | RCC.CortexFreq_Value=64000000 | ||||||
|  | RCC.DFSDMFreq_Value=64000000 | ||||||
|  | RCC.FamilyName=M | ||||||
|  | RCC.FCLKCortexFreq_Value=64000000 | ||||||
|  | RCC.HCLKFreq_Value=64000000 | ||||||
|  | RCC.HSE_VALUE=16000000 | ||||||
| RCC.HSI_VALUE=16000000 | RCC.HSI_VALUE=16000000 | ||||||
| ADC1.NbrOfConversionFlag=1 | RCC.I2C1Freq_Value=64000000 | ||||||
| SH.GPXTI15.0=GPIO_EXTI15 | RCC.I2C2Freq_Value=64000000 | ||||||
|  | RCC.I2C3Freq_Value=64000000 | ||||||
|  | RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DFSDMFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSAI2PoutputFreq_Value,PLLSAI2RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMCFreq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value,VCOSAI2OutputFreq_Value | ||||||
|  | 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.MSI_VALUE=4000000 | ||||||
| RCC.PLLM=2 | RCC.PLLM=2 | ||||||
| RCC.PLLN=16 | RCC.PLLN=16 | ||||||
| TIM8.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2 | RCC.PLLPoutputFreq_Value=18285714.285714287 | ||||||
| PB7.Locked=true | RCC.PLLQoutputFreq_Value=64000000 | ||||||
| PB8.Signal=GPXTI8 | RCC.PLLRCLKFreq_Value=64000000 | ||||||
| PC8.Locked=true | RCC.PLLSAI1N=12 | ||||||
| TIM5.Period=291 | RCC.PLLSAI1PoutputFreq_Value=13714285.714285715 | ||||||
| PC9.Signal=GPIO_Output | RCC.PLLSAI1QoutputFreq_Value=48000000 | ||||||
| PA15\ (JTDI).Locked=true | RCC.PLLSAI1RoutputFreq_Value=48000000 | ||||||
| RCC.APB1Freq_Value=64000000 | RCC.PLLSAI2PoutputFreq_Value=9142857.142857144 | ||||||
| USB_DEVICE.VirtualMode=Cdc | RCC.PLLSAI2RoutputFreq_Value=32000000 | ||||||
| PB11.Locked=true | RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE | ||||||
| ProjectManager.DeviceId=STM32L476RGTx | RCC.PREFETCH_ENABLE=1 | ||||||
|  | RCC.PWRFreq_Value=64000000 | ||||||
|  | RCC.RNGFreq_Value=48000000 | ||||||
|  | RCC.SAI1Freq_Value=13714285.714285715 | ||||||
|  | RCC.SAI2Freq_Value=13714285.714285715 | ||||||
|  | RCC.SDMMCFreq_Value=48000000 | ||||||
|  | RCC.SWPMI1Freq_Value=64000000 | ||||||
|  | RCC.SYSCLKFreq_VALUE=64000000 | ||||||
|  | RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK | ||||||
|  | RCC.UART4Freq_Value=64000000 | ||||||
|  | RCC.UART5Freq_Value=64000000 | ||||||
|  | RCC.USART1Freq_Value=64000000 | ||||||
|  | RCC.USART2Freq_Value=64000000 | ||||||
|  | RCC.USART3Freq_Value=64000000 | ||||||
|  | RCC.USBFreq_Value=48000000 | ||||||
|  | RCC.VCOInputFreq_Value=8000000 | ||||||
|  | RCC.VCOOutputFreq_Value=128000000 | ||||||
|  | RCC.VCOSAI1OutputFreq_Value=96000000 | ||||||
|  | RCC.VCOSAI2OutputFreq_Value=64000000 | ||||||
|  | SH.ADCx_IN4.0=ADC1_IN4,IN4-Single-Ended | ||||||
|  | SH.ADCx_IN4.ConfNb=1 | ||||||
|  | SH.ADCx_IN5.0=ADC1_IN5,IN5-Single-Ended | ||||||
|  | SH.ADCx_IN5.ConfNb=1 | ||||||
|  | SH.GPXTI0.0=GPIO_EXTI0 | ||||||
|  | SH.GPXTI0.ConfNb=1 | ||||||
|  | SH.GPXTI1.0=GPIO_EXTI1 | ||||||
|  | SH.GPXTI1.ConfNb=1 | ||||||
|  | SH.GPXTI13.0=GPIO_EXTI13 | ||||||
|  | SH.GPXTI13.ConfNb=1 | ||||||
|  | SH.GPXTI15.0=GPIO_EXTI15 | ||||||
|  | SH.GPXTI15.ConfNb=1 | ||||||
|  | SH.GPXTI2.0=GPIO_EXTI2 | ||||||
|  | SH.GPXTI2.ConfNb=1 | ||||||
|  | SH.GPXTI4.0=GPIO_EXTI4 | ||||||
|  | SH.GPXTI4.ConfNb=1 | ||||||
|  | SH.GPXTI8.0=GPIO_EXTI8 | ||||||
|  | SH.GPXTI8.ConfNb=1 | ||||||
|  | SH.GPXTI9.0=GPIO_EXTI9 | ||||||
|  | SH.GPXTI9.ConfNb=1 | ||||||
|  | SH.S_TIM5_CH4.0=TIM5_CH4,PWM Generation4 CH4 | ||||||
|  | SH.S_TIM5_CH4.ConfNb=1 | ||||||
|  | SH.S_TIM8_CH2.0=TIM8_CH2,Input_Capture2_from_TI2 | ||||||
| SH.S_TIM8_CH2.ConfNb=1 | SH.S_TIM8_CH2.ConfNb=1 | ||||||
| PB12.Signal=GPIO_Analog | SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 | ||||||
| ProjectManager.LibraryCopy=2 | SPI1.CalculateBaudRate=4.0 MBits/s | ||||||
| PB0.GPIO_PuPd=GPIO_PULLDOWN | SPI1.CLKPhase=SPI_PHASE_1EDGE | ||||||
| PA3.GPIO_Label=SPEAKER | SPI1.CLKPolarity=SPI_POLARITY_LOW | ||||||
| PB1.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP | SPI1.DataSize=SPI_DATASIZE_8BIT | ||||||
| PA7.Signal=GPIO_Analog | SPI1.Direction=SPI_DIRECTION_2LINES | ||||||
| PB4\ (NJTRST).Signal=GPXTI4 | SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase | ||||||
| PA6.Locked=true | SPI1.Mode=SPI_MODE_MASTER | ||||||
|  | SPI1.VirtualType=VM_MASTER | ||||||
|  | SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64 | ||||||
|  | SPI3.CalculateBaudRate=1000.0 KBits/s | ||||||
|  | SPI3.CLKPhase=SPI_PHASE_2EDGE | ||||||
|  | SPI3.CLKPolarity=SPI_POLARITY_LOW | ||||||
|  | SPI3.DataSize=SPI_DATASIZE_8BIT | ||||||
|  | SPI3.Direction=SPI_DIRECTION_2LINES | ||||||
|  | SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase | ||||||
|  | SPI3.Mode=SPI_MODE_MASTER | ||||||
|  | SPI3.VirtualType=VM_MASTER | ||||||
|  | TIM15.Channel-Output\ Compare1\ CH1N=TIM_CHANNEL_1 | ||||||
|  | TIM15.IPParameters=Channel-Output Compare1 CH1N | ||||||
|  | TIM5.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 | ||||||
|  | TIM5.IPParameters=Prescaler,Period,Channel-PWM Generation4 CH4,Pulse-PWM Generation4 CH4 | ||||||
|  | TIM5.Period=291 | ||||||
|  | TIM5.Prescaler=500 - 1 | ||||||
|  | TIM5.Pulse-PWM\ Generation4\ CH4=145 | ||||||
|  | TIM8.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2 | ||||||
|  | TIM8.ICPolarity_CH2=TIM_INPUTCHANNELPOLARITY_BOTHEDGE | ||||||
|  | TIM8.IPParameters=Channel-Input_Capture2_from_TI2,ICPolarity_CH2,Prescaler,Period | ||||||
|  | TIM8.Period=32768-1 | ||||||
|  | TIM8.Prescaler=64-1 | ||||||
|  | USART1.IPParameters=VirtualMode-Asynchronous | ||||||
|  | USART1.VirtualMode-Asynchronous=VM_ASYNC | ||||||
|  | USB_DEVICE.CLASS_NAME_FS=CDC | ||||||
|  | USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS | ||||||
|  | USB_DEVICE.VirtualMode=Cdc | ||||||
|  | USB_DEVICE.VirtualModeFS=Cdc_FS | ||||||
|  | USB_OTG_FS.IPParameters=VirtualMode | ||||||
|  | USB_OTG_FS.VirtualMode=Device_Only | ||||||
|  | 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_VREFINT12.Mode=VREFINT_12 | ||||||
|  | VP_COMP1_VS_VREFINT12.Signal=COMP1_VS_VREFINT12 | ||||||
|  | VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 | ||||||
|  | VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2 | ||||||
|  | VP_SYS_VS_tim17.Mode=TIM17 | ||||||
|  | VP_SYS_VS_tim17.Signal=SYS_VS_tim17 | ||||||
|  | VP_TIM8_VS_ClockSourceINT.Mode=Internal | ||||||
|  | VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT | ||||||
|  | VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS | ||||||
|  | VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS | ||||||
|  | |||||||
| @ -1,5 +1,7 @@ | |||||||
| TOOLCHAIN = arm | TOOLCHAIN = arm | ||||||
| 
 | 
 | ||||||
|  | DEBUG_AGENT		= set -m; st-util -n --semihosting | ||||||
|  | 
 | ||||||
| BOOT_ADDRESS	= 0x08000000 | BOOT_ADDRESS	= 0x08000000 | ||||||
| FW_ADDRESS		= 0x08008000 | FW_ADDRESS		= 0x08008000 | ||||||
| OS_OFFSET		= 0x00008000 | OS_OFFSET		= 0x00008000 | ||||||
|  | |||||||
 coreglitch
						coreglitch