modifying variant.cpp

Development environment specific, Arduino, Eclipse, VS2013,Em::Blocks etc
nicoverduin
Posts: 5
Joined: Wed Oct 14, 2015 6:25 pm

modifying variant.cpp

Postby nicoverduin » Thu Oct 27, 2016 12:10 pm

Hi,
I have this STM32F103RBT6 board with lots of IO but not yet accessible. I installed the packages from STM under my Eclipse+Jantje plugin (version Sloeber 3.1). This all works fine. I noticed that in variant.cpp that only D0-D15 are accessible as Arduino pins in pin descriptions

Code: Select all

/*
 * Pins descriptions
 */
extern const PinDescription g_APinDescription[]=

//  arduino_id  |     ulPin    |   ulPort | mode               |          configured
{
  { ARDUINO_PIN_A0,   GPIO_PIN_0,  GPIOA, GPIO_PIN_IO|GPIO_PIN_ADC ,                    false },
  { ARDUINO_PIN_A1,   GPIO_PIN_1,  GPIOA, GPIO_PIN_IO|GPIO_PIN_ADC ,                    false },
  { ARDUINO_PIN_D1,   GPIO_PIN_2,  GPIOA, GPIO_PIN_IO|GPIO_PIN_UART_TX ,                false },
  { ARDUINO_PIN_D0,   GPIO_PIN_3,  GPIOA, GPIO_PIN_IO|GPIO_PIN_UART_RX ,                false },
  { ARDUINO_PIN_A2,   GPIO_PIN_4,  GPIOA, GPIO_PIN_IO|GPIO_PIN_ADC ,                    false },
  { ARDUINO_PIN_D13,  GPIO_PIN_5,  GPIOA, GPIO_PIN_IO|GPIO_PIN_SPI_SCK,                 false },
  { ARDUINO_PIN_D12,  GPIO_PIN_6,  GPIOA, GPIO_PIN_IO|GPIO_PIN_SPI_MISO ,               false },
  { ARDUINO_PIN_D11,  GPIO_PIN_7,  GPIOA, GPIO_PIN_IO|GPIO_PIN_SPI_MOSI|GPIO_PIN_PWM,   false },
  { ARDUINO_PIN_D7,   GPIO_PIN_8,  GPIOA, GPIO_PIN_IO,                                  false },
  { ARDUINO_PIN_D8,   GPIO_PIN_9,  GPIOA, GPIO_PIN_IO,                                  false },
  { ARDUINO_PIN_D2,   GPIO_PIN_10, GPIOA, GPIO_PIN_IO,                                  false },
  { ARDUINO_PIN_D16,  GPIO_PIN_11, GPIOA, GPIO_PIN_IO,                                  false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_12, GPIOA, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_13, GPIOA, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_14, GPIOA, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_15, GPIOA, GPIO_PIN_MORPHO_ONLY ,                        false },
  { ARDUINO_PIN_A3,   GPIO_PIN_0,  GPIOB, GPIO_PIN_ADC,                                 false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_1,  GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_2,  GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_D3,   GPIO_PIN_3,  GPIOB, GPIO_PIN_IO|GPIO_PIN_PWM,                     false },
  { ARDUINO_PIN_D5,   GPIO_PIN_4,  GPIOB, GPIO_PIN_IO|GPIO_PIN_PWM,                     false },
  { ARDUINO_PIN_D4,   GPIO_PIN_5,  GPIOB, GPIO_PIN_IO,                                  false },
  { ARDUINO_PIN_D10,  GPIO_PIN_6,  GPIOB, GPIO_PIN_IO|GPIO_PIN_PWM|GPIO_PIN_SPI_CS,     false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_7,  GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_D15,  GPIO_PIN_8,  GPIOB, GPIO_PIN_IO|GPIO_PIN_I2C_SCL,                 false },
  { ARDUINO_PIN_D14,  GPIO_PIN_9,  GPIOB, GPIO_PIN_IO|GPIO_PIN_I2C_SDA,                 false },
  { ARDUINO_PIN_D6,   GPIO_PIN_10, GPIOB, GPIO_PIN_IO|GPIO_PIN_PWM,                     false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_11, GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_12, GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_13, GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_14, GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_15, GPIOB, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_A5,   GPIO_PIN_0,  GPIOC, GPIO_PIN_IO|GPIO_PIN_ADC,                     false },
  { ARDUINO_PIN_A4,   GPIO_PIN_1,  GPIOC, GPIO_PIN_IO|GPIO_PIN_ADC,                     false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_2,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_3,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_4,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_5,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_6,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_D9,   GPIO_PIN_7,  GPIOC, GPIO_PIN_IO|GPIO_PIN_PWM,                     false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_8,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_9,  GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_10, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_11, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_12, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_13, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_14, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false },
  { ARDUINO_PIN_EXT,  GPIO_PIN_15, GPIOC, GPIO_PIN_MORPHO_ONLY,                         false }
} ;


So the question I have is what does this mean?

Code: Select all

GPIO_PIN_MORPHO_ONLY


And btw. I made a new board definition and variant folder for my STM32F103RBT6 board and added the Flash Loader Demo from STM. Now when I start the upload button, this loader is started. makes it more in line with the standard Arduino process.

danieleff
Posts: 210
Joined: Thu Sep 01, 2016 8:52 pm
Location: Hungary
Contact:

Re: modifying variant.cpp

Postby danieleff » Thu Oct 27, 2016 12:50 pm

That is the new stm32 core, which is pretty new. Actually none of the GPIO_PIN_xxx that are from variant.h are used for anything. (except GPIO_PIN_PWM)
You can define the pins in variant.h like in the maple core
And then if you do:

Code: Select all

extern const PinDescription g_APinDescription[]= {
  {PA0, GPIO_PIN_0, GPIOA, GPIO_PIN_IO, false},
  {PA1, GPIO_PIN_1, GPIOA, GPIO_PIN_IO, false},
  ...

and change #define MAX_DIGITAL_IOS in variant.h, you can use all the pins, using numbers, or the enum names.
If you have the nucleo, and want to use arduino numbers, rearrange the pin enum.

nicoverduin
Posts: 5
Joined: Wed Oct 14, 2015 6:25 pm

Re: modifying variant.cpp

Postby nicoverduin » Thu Oct 27, 2016 4:26 pm

Got it thanks. See if I can fix this this weekend. Then time to start testing some of my peripherals.

That still leaves my question

Code: Select all

GPIO_PIN_MORPHO_ONLY

What does it mean? Or its purpose?

danieleff
Posts: 210
Joined: Thu Sep 01, 2016 8:52 pm
Location: Hungary
Contact:

Re: modifying variant.cpp

Postby danieleff » Thu Oct 27, 2016 6:13 pm

It is the name of the nucleo board pin connectors that are on the side, see bottom image. Marketing purpose I guess. See also 6.12 in pdf.


Return to “IDE's”

Who is online

Users browsing this forum: No registered users and 2 guests