-
Notifications
You must be signed in to change notification settings - Fork 1k
feat: rename Blues Wireless (blues.io) to Blues (blues.com) and add CYGNET R4 #2371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
+867
−92
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
296 changes: 296 additions & 0 deletions
296
variants/STM32L4xx/L431C(B-C)(T-U)/PeripheralPins_CYGNET_L4.c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,296 @@ | ||
/* | ||
******************************************************************************* | ||
* Copyright (c) 2020, STMicroelectronics | ||
* All rights reserved. | ||
* | ||
* This software component is licensed by ST under BSD 3-Clause license, | ||
* the "License"; You may not use this file except in compliance with the | ||
* License. You may obtain a copy of the License at: | ||
* opensource.org/licenses/BSD-3-Clause | ||
* | ||
******************************************************************************* | ||
*/ | ||
/* | ||
* Manually generated by Blues with knowledge of the CYGNET schematic | ||
*/ | ||
#if defined(ARDUINO_CYGNET_L4) | ||
#include "Arduino.h" | ||
#include "PeripheralPins.h" | ||
|
||
/* ===== | ||
* Notes: | ||
* - The pins mentioned Px_y_ALTz are alternative possibilities which use other | ||
* HW peripheral instances. You can use them the same way as any other "normal" | ||
* pin (i.e. analogWrite(PA7_ALT1, 128);). | ||
* | ||
* - Commented lines are alternative possibilities which are not used per default. | ||
* If you change them, you will have to know what you do | ||
* ===== | ||
*/ | ||
|
||
//*** ADC *** | ||
|
||
#ifdef HAL_ADC_MODULE_ENABLED | ||
WEAK const PinMap PinMap_ADC[] = { | ||
{PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 - A0 | ||
{PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 - A1 | ||
{PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 - A2 | ||
{PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 - A3 | ||
{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 - BAT_VOLTAGE | ||
{PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 - CK | ||
{PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 - MI | ||
{PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 - A5 | ||
{PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 - D11 | ||
{PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16 - A4 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** DAC *** | ||
|
||
#ifdef HAL_DAC_MODULE_ENABLED | ||
WEAK const PinMap PinMap_DAC[] = { | ||
// {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 - BAT_VOLTAGE | ||
{PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 - CK | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** I2C *** | ||
|
||
#ifdef HAL_I2C_MODULE_ENABLED | ||
WEAK const PinMap PinMap_I2C_SDA[] = { | ||
{PA_10, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - RX | ||
{PB_4, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, // - D13 | ||
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - SDA | ||
{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - D6 | ||
// {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - LPUART1_VCP_TX | ||
{PB_14, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - D9 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_I2C_MODULE_ENABLED | ||
WEAK const PinMap PinMap_I2C_SCL[] = { | ||
{PA_7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, // - A5 | ||
{PA_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - TX | ||
{PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - SCL | ||
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - D5 | ||
// {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - LPUART1_VCP_RX | ||
{PB_13, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - D10 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** No I3C *** | ||
|
||
//*** TIM *** | ||
|
||
#ifdef HAL_TIM_MODULE_ENABLED | ||
WEAK const PinMap PinMap_TIM[] = { | ||
{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - A0 | ||
{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - A1 | ||
{PA_1_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 1)}, // TIM15_CH1N - A1 | ||
{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - A2 | ||
{PA_2_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 0)}, // TIM15_CH1 - A2 | ||
{PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - A3 | ||
{PA_3_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 2, 0)}, // TIM15_CH2 - A3 | ||
{PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - CK | ||
{PA_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1 - MI | ||
{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - A5 | ||
{PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 - LED_BUILTIN | ||
{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 - TX | ||
{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 - RX | ||
// {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 - USB_DM | ||
// {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - CHARGE_DETECT | ||
{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - D11 | ||
{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - A4 | ||
// {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - USER_BTN | ||
{PB_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 1)}, // TIM16_CH1N - SCL | ||
{PB_8, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1 - D5 | ||
// {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - LPUART1_VCP_RX | ||
// {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - LPUART1_VCP_TX | ||
{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - D10 | ||
{PB_13_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 1)}, // TIM15_CH1N - D10 | ||
{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - D9 | ||
{PB_14_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 0)}, // TIM15_CH1 - D9 | ||
{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - D12 | ||
{PB_15_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 2, 0)}, // TIM15_CH2 - D12 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** UART *** | ||
|
||
#ifdef HAL_UART_MODULE_ENABLED | ||
WEAK const PinMap PinMap_UART_TX[] = { | ||
{PA_2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A2 | ||
{PA_2_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A2 | ||
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - TX | ||
{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - SCL | ||
{PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - LPUART1_VCP_RX | ||
{PB_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - LPUART1_VCP_TX | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_UART_MODULE_ENABLED | ||
WEAK const PinMap PinMap_UART_RX[] = { | ||
{PA_3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A3 | ||
{PA_3_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A3 | ||
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - RX | ||
// {PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART2)}, // - CHARGE_DETECT | ||
{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - SDA | ||
{PB_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - LPUART1_VCP_RX | ||
{PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - LPUART1_VCP_TX | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_UART_MODULE_ENABLED | ||
WEAK const PinMap PinMap_UART_RTS[] = { | ||
{PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A1 | ||
// {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USB_DP | ||
// {PA_15, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - CHARGE_DETECT | ||
{PB_1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A4 | ||
{PB_1_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - A4 | ||
// {PB_3, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USER_BTN | ||
// {PB_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - NC | ||
{PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - D9 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_UART_MODULE_ENABLED | ||
WEAK const PinMap PinMap_UART_CTS[] = { | ||
{PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A0 | ||
{PA_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - MI | ||
{PA_6_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - MI | ||
// {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USB_DM | ||
{PB_4, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - D13 | ||
{PB_13, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - D10 | ||
{PB_13_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - D10 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** SPI *** | ||
|
||
#ifdef HAL_SPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_SPI_MOSI[] = { | ||
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - A5 | ||
// {PA_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USB_DP | ||
{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - MO | ||
{PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - MO | ||
{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D12 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_SPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_SPI_MISO[] = { | ||
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - MI | ||
// {PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USB_DM | ||
{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - D13 | ||
{PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - D13 | ||
{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D9 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_SPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_SPI_SCLK[] = { | ||
{PA_1, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - A1 | ||
{PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - CK | ||
// {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USER_BTN | ||
// {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - USER_BTN | ||
// {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - LPUART1_VCP_RX | ||
{PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D10 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_SPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_SPI_SSEL[] = { | ||
// {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - BAT_VOLTAGE | ||
// {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - BAT_VOLTAGE | ||
// {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - CHARGE_DETECT | ||
// {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - CHARGE_DETECT | ||
{PB_0, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - D11 | ||
{PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D6 | ||
// {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - NC | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** CAN *** | ||
|
||
#if defined(HAL_CAN_MODULE_ENABLED) || defined(HAL_CAN_LEGACY_MODULE_ENABLED) | ||
WEAK const PinMap PinMap_CAN_RD[] = { | ||
// {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - USB_DM | ||
{PB_8, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - D5 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#if defined(HAL_CAN_MODULE_ENABLED) || defined(HAL_CAN_LEGACY_MODULE_ENABLED) | ||
WEAK const PinMap PinMap_CAN_TD[] = { | ||
// {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - USB_DP | ||
{PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - D6 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** No ETHERNET *** | ||
|
||
//*** QUADSPI *** | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_DATA0[] = { | ||
{PB_1, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO0 - A4 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_DATA1[] = { | ||
{PB_0, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO1 - D11 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_DATA2[] = { | ||
{PA_7, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO2 - A5 | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_DATA3[] = { | ||
{PA_6, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO3 - MI | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_SCLK[] = { | ||
{PA_3, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_CLK - A3 | ||
// {PB_10, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_CLK - LPUART1_VCP_RX | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
#ifdef HAL_QSPI_MODULE_ENABLED | ||
WEAK const PinMap PinMap_QUADSPI_SSEL[] = { | ||
{PA_2, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS - A2 | ||
// {PB_11, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS - LPUART1_VCP_TX | ||
{NC, NP, 0} | ||
}; | ||
#endif | ||
|
||
//*** No USB *** | ||
|
||
//*** No SD *** | ||
|
||
#endif /* !CUSTOM_PERIPHERAL_PINS */ |
168 changes: 168 additions & 0 deletions
168
variants/STM32L4xx/L431C(B-C)(T-U)/variant_CYGNET_L4.cpp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
/* | ||
******************************************************************************* | ||
* Copyright (c) 2020, STMicroelectronics | ||
* All rights reserved. | ||
* | ||
* This software component is licensed by ST under BSD 3-Clause license, | ||
* the "License"; You may not use this file except in compliance with the | ||
* License. You may obtain a copy of the License at: | ||
* opensource.org/licenses/BSD-3-Clause | ||
* | ||
******************************************************************************* | ||
*/ | ||
#if defined(ARDUINO_CYGNET_L4) | ||
#include "pins_arduino.h" | ||
|
||
// Digital PinName array | ||
const PinName digitalPin[] = { | ||
PA_0, // 0 - A0/D0 | ||
PA_1, // 1 - A1/D1 | ||
PA_2, // 2 - A2/D2 | ||
PA_3, // 3 - A3/D3 | ||
PB_1, // 4 - A4/D4 | ||
PB_8, // 5 - D5 | ||
PB_9, // 6 - D6 | ||
PA_4, // 7 - BAT_VOLTAGE | ||
PA_8, // 8 - LED_BUILTIN | ||
PB_14, // 9 - D9 | ||
PB_13, // 10 - D10 | ||
PB_0, // 11 - D11 | ||
PB_15, // 12 - D12 | ||
PB_4, // 13 - D13 | ||
PA_5, // 14 - CK | ||
PA_6, // 15 - MI | ||
PA_7, // 16 - A5 | ||
PA_9, // 17 - TX | ||
PA_10, // 18 - RX | ||
PA_11, // 19 - USB_DM | ||
PA_12, // 20 - USB_DP | ||
PA_13, // 21 - SWDIO | ||
PA_14, // 22 - SWCLK | ||
PA_15, // 23 - CHARGE_DETECT | ||
PB_3, // 24 - USER_BTN | ||
PB_5, // 25 - MO | ||
PB_6, // 26 - SCL | ||
PB_7, // 27 - SDA | ||
PB_10, // 28 - LPUART1_VCP_RX | ||
PB_11, // 29 - LPUART1_VCP_TX | ||
PC_13, // 30 - USB_DETECT | ||
PC_14, // 31 - OSC32_IN | ||
PC_15, // 32 - OSC32_OUT | ||
PH_0, // 33 - ENABLE_3V3 | ||
PH_1, // 34 - DISCHARGE_3V3 | ||
PH_3 // 35 - B | ||
}; | ||
|
||
// Analog (Ax) to digital pin number array | ||
const uint32_t analogInputPin[] = { | ||
0, // A0, PA0 | ||
1, // A1, PA1 | ||
2, // A2, PA2 | ||
3, // A3, PA3 | ||
4, // A4, PB1 | ||
16 // A5, PA7 | ||
}; | ||
|
||
// ---------------------------------------------------------------------------- | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
WEAK void initVariant(void) | ||
{ | ||
GPIO_InitTypeDef GPIO_InitStruct; | ||
|
||
// Init lines that we'll be using below | ||
__HAL_RCC_GPIOA_CLK_ENABLE(); | ||
__HAL_RCC_GPIOC_CLK_ENABLE(); | ||
__HAL_RCC_GPIOH_CLK_ENABLE(); | ||
|
||
/* Set DISCHARGE_3V3 as well as the pins we're not initially using to FLOAT */ | ||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; | ||
GPIO_InitStruct.Pull = GPIO_NOPULL; | ||
GPIO_InitStruct.Pin = GPIO_PIN_1; | ||
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); /* PH1 DISCHARGE_3V3 */ | ||
GPIO_InitStruct.Pin = GPIO_PIN_13; | ||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* PC13 is USB_DETECT */ | ||
GPIO_InitStruct.Pin = GPIO_PIN_15; | ||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* PA15 is CHARGE_DETECT */ | ||
GPIO_InitStruct.Pin = GPIO_PIN_4; | ||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* PA4 is BAT_VOLTAGE */ | ||
|
||
/* Turn on the 3V3 regulator */ | ||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||
GPIO_InitStruct.Speed = GPIO_SPEED_LOW; | ||
GPIO_InitStruct.Pin = GPIO_PIN_0; | ||
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); | ||
HAL_GPIO_WritePin(GPIOH, GPIO_InitStruct.Pin, GPIO_PIN_SET); | ||
|
||
} | ||
|
||
/** | ||
* @brief System Clock Configuration | ||
* @param None | ||
* @retval None | ||
*/ | ||
WEAK void SystemClock_Config(void) | ||
{ | ||
RCC_OscInitTypeDef RCC_OscInitStruct = {}; | ||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; | ||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {}; | ||
|
||
/** Configure the main internal regulator output voltage | ||
*/ | ||
if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) { | ||
Error_Handler(); | ||
} | ||
/** Configure LSE Drive Capability | ||
*/ | ||
HAL_PWR_EnableBkUpAccess(); | ||
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); | ||
/** Initializes the RCC Oscillators according to the specified parameters | ||
* in the RCC_OscInitTypeDef structure. | ||
*/ | ||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI; | ||
RCC_OscInitStruct.LSEState = RCC_LSE_ON; | ||
RCC_OscInitStruct.MSIState = RCC_MSI_ON; | ||
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT; | ||
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11; | ||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; | ||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { | ||
Error_Handler(); | ||
} | ||
/** Initializes the CPU, AHB and APB buses clocks | ||
*/ | ||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | ||
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; | ||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; | ||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; | ||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; | ||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; | ||
|
||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { | ||
Error_Handler(); | ||
} | ||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB | RCC_PERIPHCLK_SDMMC1 | ||
| RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_OSPI; | ||
PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; | ||
PeriphClkInit.OspiClockSelection = RCC_OSPICLKSOURCE_SYSCLK; | ||
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_MSI; | ||
PeriphClkInit.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_MSI; | ||
fpistm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { | ||
Error_Handler(); | ||
} | ||
/** Enable MSI Auto calibration | ||
*/ | ||
HAL_RCCEx_EnableMSIPLLMode(); | ||
|
||
/** Ensure that MSI is wake-up system clock | ||
*/ | ||
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_MSI); | ||
} | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* ARDUINO_CYGNET_L4 */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
/* | ||
******************************************************************************* | ||
* Copyright (c) 2020, STMicroelectronics | ||
* All rights reserved. | ||
* | ||
* This software component is licensed by ST under BSD 3-Clause license, | ||
* the "License"; You may not use this file except in compliance with the | ||
* License. You may obtain a copy of the License at: | ||
* opensource.org/licenses/BSD-3-Clause | ||
* | ||
******************************************************************************* | ||
*/ | ||
#pragma once | ||
|
||
/*---------------------------------------------------------------------------- | ||
* Arduino digital pin numbers on the right (indexes into the digitalPin[] array) | ||
* and the STM32 pins they correspond to on the left. The only apparent | ||
* function I can see is to reference a pin in a sketch in something | ||
* like digitalWrite() and have it index into digitalPin[] to find the | ||
* actual pin. On the other hand, PIN_A* are numbers offset by PNUM_ANALOG_BASE, | ||
* which serves to say that this IS an analog pin and which tells analogWrite | ||
* to index into the digitalPin[] array to find the actual pin. | ||
*----------------------------------------------------------------------------*/ | ||
#define PA0 PIN_A0 // A0/D0 | ||
#define PA1 PIN_A1 // A1/D1 | ||
#define PA2 PIN_A2 // A2/D2 | ||
#define PA3 PIN_A3 // A3/D3 | ||
#define PB1 PIN_A4 // A4/D4 | ||
#define PB8 5 // D5 | ||
#define PB9 6 // D6 | ||
#define PA4 7 // BAT_VOLTAGE | ||
#define PA8 8 // LED_BUILTIN | ||
#define PB14 9 // D9 | ||
#define PB13 10 // D10 | ||
#define PB0 11 // D11 | ||
#define PB15 12 // D12 | ||
#define PB4 13 // D13 | ||
#define PA5 14 // CK | ||
#define PA6 15 // MI | ||
#define PA7 PIN_A5 // A5 | ||
#define PA9 17 // TX | ||
#define PA10 18 // RX | ||
#define PA11 19 // USB_DM | ||
#define PA12 20 // USB_DP | ||
#define PA13 21 // SWDIO | ||
#define PA14 22 // SWCLK | ||
#define PA15 23 // CHARGE_DETECT | ||
#define PB3 24 // USER_BTN | ||
#define PB5 25 // MO | ||
#define PB6 26 // SCL | ||
#define PB7 27 // SDA | ||
#define PB10 28 // LPUART1_VCP_RX | ||
#define PB11 29 // LPUART1_VCP_TX | ||
#define PC13 30 // USB_DETECT | ||
#define PC14 31 // OSC32_IN | ||
#define PC15 32 // OSC32_OUT | ||
#define PH0 33 // ENABLE_3V3 | ||
#define PH1 34 // DISCHARGE_3V3 | ||
#define PH3 35 // B | ||
|
||
// Alternate pins number | ||
#define PA1_ALT1 (PA1 | ALT1) | ||
#define PA2_ALT1 (PA2 | ALT1) | ||
#define PA3_ALT1 (PA3 | ALT1) | ||
#define PA4_ALT1 (PA4 | ALT1) | ||
#define PA6_ALT1 (PA6 | ALT1) | ||
#define PA15_ALT1 (PA15 | ALT1) | ||
#define PB1_ALT1 (PB1 | ALT1) | ||
#define PB3_ALT1 (PB3 | ALT1) | ||
#define PB4_ALT1 (PB4 | ALT1) | ||
#define PB5_ALT1 (PB5 | ALT1) | ||
#define PB13_ALT1 (PB13 | ALT1) | ||
#define PB14_ALT1 (PB14 | ALT1) | ||
#define PB15_ALT1 (PB15 | ALT1) | ||
|
||
#define NUM_DIGITAL_PINS 36 | ||
#define NUM_ANALOG_INPUTS 6 | ||
|
||
// On-board LED pin number | ||
#ifndef LED_BUILTIN | ||
#define LED_BUILTIN PA8 | ||
#endif | ||
|
||
// On-board user button | ||
#ifndef USER_BTN | ||
#define USER_BTN PB3 | ||
#endif | ||
|
||
// Power switch ENABLE and DISCHARGE pins | ||
#ifndef ENABLE_3V3 | ||
#define ENABLE_3V3 PH0 | ||
#endif | ||
#ifndef DISCHARGE_3V3 | ||
#define DISCHARGE_3V3 PH1 | ||
#define DISABLE_DISCHARGING HIGH | ||
#define ENABLE_DISCHARGING LOW | ||
#endif | ||
#ifndef CHARGE_DETECT | ||
#define CHARGE_DETECT PA15 | ||
#endif | ||
|
||
// SPI definitions | ||
#ifndef PIN_SPI_SS | ||
#define PIN_SPI_SS PB8 // Just default to D5, because we don't have a CS pin | ||
#endif | ||
#ifndef PIN_SPI_SS1 | ||
#define PIN_SPI_SS1 PNUM_NOT_DEFINED | ||
#endif | ||
#ifndef PIN_SPI_SS2 | ||
#define PIN_SPI_SS2 PNUM_NOT_DEFINED | ||
#endif | ||
#ifndef PIN_SPI_SS3 | ||
#define PIN_SPI_SS3 PNUM_NOT_DEFINED | ||
#endif | ||
#ifndef PIN_SPI_MOSI | ||
#define PIN_SPI_MOSI PB5 | ||
#endif | ||
#ifndef PIN_SPI_MISO | ||
#define PIN_SPI_MISO PA6 | ||
#endif | ||
#ifndef PIN_SPI_SCK | ||
#define PIN_SPI_SCK PA5 | ||
#endif | ||
|
||
// I2C definitions | ||
#ifndef PIN_WIRE_SDA | ||
#define PIN_WIRE_SDA PB7 | ||
#endif | ||
#ifndef PIN_WIRE_SCL | ||
#define PIN_WIRE_SCL PB6 | ||
#endif | ||
|
||
// Timer Definitions | ||
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin | ||
#ifndef TIMER_TONE | ||
#define TIMER_TONE TIM6 | ||
#endif | ||
#ifndef TIMER_SERVO | ||
#define TIMER_SERVO TIM7 | ||
#endif | ||
|
||
// UART Definitions | ||
#ifndef SERIAL_UART_INSTANCE | ||
#define SERIAL_UART_INSTANCE 101 | ||
#endif | ||
|
||
// Default pin used for generic 'Serial' instance | ||
// Mandatory for Firmata | ||
#ifndef PIN_SERIAL_RX | ||
#define PIN_SERIAL_RX PA10 | ||
#endif | ||
#ifndef PIN_SERIAL_TX | ||
#define PIN_SERIAL_TX PA9 | ||
#endif | ||
|
||
// LPUART1 | ||
#ifndef PIN_SERIAL_LP1_RX | ||
#define PIN_SERIAL_LP1_RX PB10 | ||
#endif | ||
#ifndef PIN_SERIAL_LP1_TX | ||
#define PIN_SERIAL_LP1_TX PB11 | ||
#endif | ||
|
||
// Virtual COM Port for Cygnet with a 14-pin STLink Connector mounted. | ||
// To use the STLINK's Virtual COM port, this would be added to an Arduino project: | ||
// HardwareSerial SerialVCP(PIN_VCP_RX, PIN_VCP_TX); | ||
#ifndef PIN_VCP_RX | ||
#define PIN_VCP_RX PIN_SERIAL_LP1_RX | ||
#endif | ||
#ifndef PIN_VCP_TX | ||
#define PIN_VCP_TX PIN_SERIAL_LP1_TX | ||
#endif | ||
|
||
// Extra HAL modules | ||
#if !defined(HAL_DAC_MODULE_DISABLED) | ||
#define HAL_DAC_MODULE_ENABLED | ||
#endif | ||
#if !defined(HAL_QSPI_MODULE_DISABLED) | ||
#define HAL_QSPI_MODULE_ENABLED | ||
#endif | ||
|
||
/*---------------------------------------------------------------------------- | ||
* Arduino objects - C++ only | ||
*----------------------------------------------------------------------------*/ | ||
|
||
#ifdef __cplusplus | ||
// These serial port names are intended to allow libraries and architecture-neutral | ||
// sketches to automatically default to the correct port name for a particular type | ||
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, | ||
// the first hardware serial port whose RX/TX pins are not dedicated to another use. | ||
// | ||
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor | ||
// | ||
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial | ||
// | ||
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library | ||
// | ||
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. | ||
// | ||
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX | ||
// pins are NOT connected to anything by default. | ||
#ifndef SERIAL_PORT_MONITOR | ||
#define SERIAL_PORT_MONITOR Serial | ||
#endif | ||
#ifndef SERIAL_PORT_HARDWARE | ||
#define SERIAL_PORT_HARDWARE Serial | ||
#endif | ||
#endif |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.