Skip to content

Commit 4e03bac

Browse files
Fixed issue with incorrect USART RX Pin number, added PB2 as this pin can be used with caution (as its shared with Boot1)
1 parent 347cee0 commit 4e03bac

2 files changed

Lines changed: 260 additions & 292 deletions

File tree

Lines changed: 150 additions & 182 deletions
Original file line numberDiff line numberDiff line change
@@ -1,182 +1,150 @@
1-
/******************************************************************************
2-
* The MIT License
3-
*
4-
* Copyright (c) 2011 LeafLabs, LLC.
5-
*
6-
* Permission is hereby granted, free of charge, to any person
7-
* obtaining a copy of this software and associated documentation
8-
* files (the "Software"), to deal in the Software without
9-
* restriction, including without limitation the rights to use, copy,
10-
* modify, merge, publish, distribute, sublicense, and/or sell copies
11-
* of the Software, and to permit persons to whom the Software is
12-
* furnished to do so, subject to the following conditions:
13-
*
14-
* The above copyright notice and this permission notice shall be
15-
* included in all copies or substantial portions of the Software.
16-
*
17-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20-
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21-
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22-
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23-
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24-
* SOFTWARE.
25-
*****************************************************************************/
26-
27-
/**
28-
* @file wirish/boards/maple/board.cpp
29-
* @author Marti Bolivar <mbolivar@leaflabs.com>
30-
* @brief Maple board file.
31-
*/
32-
33-
#include <board/board.h> // For this board's header file
34-
35-
#include <wirish_types.h> // For stm32_pin_info and its contents
36-
// (these go into PIN_MAP).
37-
38-
#include "boards_private.h" // For PMAP_ROW(), which makes
39-
// PIN_MAP easier to read.
40-
41-
// boardInit(): nothing special to do for Maple.
42-
//
43-
// When defining your own board.cpp, you can put extra code in this
44-
// function if you have anything you want done on reset, before main()
45-
// or setup() are called.
46-
//
47-
// If there's nothing special you need done, feel free to leave this
48-
// function out, as we do here.
49-
/*
50-
void boardInit(void) {
51-
}
52-
*/
53-
54-
// Pin map: this lets the basic I/O functions (digitalWrite(),
55-
// analogRead(), pwmWrite()) translate from pin numbers to STM32
56-
// peripherals.
57-
//
58-
// PMAP_ROW() lets us specify a row (really a struct stm32_pin_info)
59-
// in the pin map. Its arguments are:
60-
//
61-
// - GPIO device for the pin (GPIOA, etc.)
62-
// - GPIO bit for the pin (0 through 15)
63-
// - Timer device, or NULL if none
64-
// - Timer channel (1 to 4, for PWM), or 0 if none
65-
// - ADC device, or NULL if none
66-
// - ADC channel, or ADCx if none
67-
68-
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = {
69-
/*
70-
gpio_dev *gpio_device; GPIO device
71-
timer_dev *timer_device; Pin's timer device, if any.
72-
const adc_dev *adc_device; ADC device, if any.
73-
uint8 gpio_bit; Pin's GPIO port bit.
74-
uint8 timer_channel; Timer channel, or 0 if none.
75-
uint8 adc_channel; Pin ADC channel, or ADCx if none.
76-
uint8 pinMode; mode specific by pinMode call (Roger Clark added to optimize compatibility with Arduino API
77-
*/
78-
79-
{GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */
80-
{GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */
81-
{GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */
82-
{GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */
83-
{GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */
84-
{GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */
85-
{GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */
86-
{GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */
87-
{GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */
88-
{GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */
89-
{GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */
90-
{GPIOA, NULL, NULL, 11, 0, ADCx}, /* PA11 */
91-
{GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */
92-
{GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */
93-
{GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */
94-
{GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */
95-
96-
{GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */
97-
{GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */
98-
/* NOTE PB2 is not included as its Boot 1 */
99-
{GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */
100-
{GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */
101-
{GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */
102-
{GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */
103-
{GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */
104-
{GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */
105-
{GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */
106-
{GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */
107-
{GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */
108-
{GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */
109-
{GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */
110-
{GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */
111-
{GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */
112-
113-
114-
{GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */
115-
{GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */
116-
{GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */
117-
{GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */
118-
{GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */
119-
{GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */
120-
{GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 */
121-
{GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 */
122-
{GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 */
123-
{GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 */
124-
{GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */
125-
{GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */
126-
{GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */
127-
{GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */
128-
{GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */
129-
{GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */
130-
131-
{GPIOD, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */
132-
{GPIOD, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */
133-
{GPIOD, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */
134-
#if 0
135-
{GPIOD, NULL, NULL, 3, 0, ADCx} , /* PD3 FSMC_CLK */
136-
{GPIOD, NULL, NULL, 4, 0, ADCx} , /* PD4 FSMC_NOE */
137-
{GPIOD, NULL, NULL, 5, 0, ADCx} , /* PD5 FSMC_NWE */
138-
{GPIOD, NULL, NULL, 6, 0, ADCx} , /* PD6 FSMC_NWAIT */
139-
{GPIOD, NULL, NULL, 7, 0, ADCx} , /* PD7 FSMC_NE1/FSMC_NCE2 */
140-
{GPIOD, NULL, NULL, 8, 0, ADCx} , /* PD8 FSMC_D13 */
141-
{GPIOD, NULL, NULL, 9, 0, ADCx} , /* PD9 FSMC_D14 */
142-
{GPIOD, NULL, NULL, 10, 0, ADCx} , /* PD10 FSMC_D15 */
143-
{GPIOD, NULL, NULL, 11, 0, ADCx} , /* PD11 FSMC_A16 */
144-
{GPIOD, NULL, NULL, 12, 0, ADCx} , /* PD12 FSMC_A17 */
145-
{GPIOD, NULL, NULL, 13, 0, ADCx} , /* PD13 FSMC_A18 */
146-
{GPIOD, NULL, NULL, 14, 0, ADCx} , /* PD14 FSMC_D0 */
147-
{GPIOD, NULL, NULL, 15, 0, ADCx} , /* PD15 FSMC_D1 */
148-
149-
{GPIOE, NULL, NULL, 0, 0, ADCx} , /* PD0 */
150-
{GPIOE, NULL, NULL, 1, 0, ADCx} , /* PE1 */
151-
{GPIOE, NULL, NULL, 2, 0, ADCx} , /* PE2 */
152-
{GPIOE, NULL, NULL, 3, 0, ADCx} , /* PE3 */
153-
{GPIOE, NULL, NULL, 4, 0, ADCx} , /* PE4 */
154-
{GPIOE, NULL, NULL, 5, 0, ADCx} , /* PE5 */
155-
{GPIOE, NULL, NULL, 6, 0, ADCx} , /* PE6 */
156-
{GPIOE, NULL, NULL, 7, 0, ADCx} , /* PE7 */
157-
{GPIOE, NULL, NULL, 8, 0, ADCx} , /* PE8 */
158-
{GPIOE, NULL, NULL, 9, 0, ADCx} , /* PE9 */
159-
{GPIOE, NULL, NULL, 10, 0, ADCx} , /* PE10 */
160-
{GPIOE, NULL, NULL, 11, 0, ADCx} , /* PE11 */
161-
{GPIOE, NULL, NULL, 12, 0, ADCx} , /* PE12 */
162-
{GPIOE, NULL, NULL, 13, 0, ADCx} , /* PE13 */
163-
{GPIOE, NULL, NULL, 14, 0, ADCx} , /* PE14 */
164-
{GPIOE, NULL, NULL, 15, 0, ADCx} /* PE15 */
165-
#endif
166-
};
167-
168-
/* Basically everything that is defined as having a timer us PWM */
169-
extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = {
170-
PA0,PA1,PA2,PA3,PA6,PA7,PA8,PA9,PA10,PB0,PB1,PB6,PB7,PB8,PB9,PC6,PC7,PC8,PC9
171-
};
172-
173-
/* Basically everything that is defined having ADC */
174-
extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = {
175-
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB0,PB1,PC0,PC1,PC2,PC3,PC4,PC5
176-
};
177-
178-
/* not sure what this us used for */
179-
extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = {
180-
BOARD_LED_PIN, BOARD_BUTTON_PIN, BOARD_JTMS_SWDIO_PIN,
181-
BOARD_JTCK_SWCLK_PIN, BOARD_JTDI_PIN, BOARD_JTDO_PIN, BOARD_NJTRST_PIN
182-
};
1+
/******************************************************************************
2+
* The MIT License
3+
*
4+
* Copyright (c) 2011 LeafLabs, LLC.
5+
*
6+
* Permission is hereby granted, free of charge, to any person
7+
* obtaining a copy of this software and associated documentation
8+
* files (the "Software"), to deal in the Software without
9+
* restriction, including without limitation the rights to use, copy,
10+
* modify, merge, publish, distribute, sublicense, and/or sell copies
11+
* of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be
15+
* included in all copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24+
* SOFTWARE.
25+
*****************************************************************************/
26+
27+
/**
28+
* @file wirish/boards/maple/board.cpp
29+
* @author Marti Bolivar <mbolivar@leaflabs.com>
30+
* @brief Maple board file.
31+
*/
32+
33+
#include <board/board.h> // For this board's header file
34+
35+
#include <wirish_types.h> // For stm32_pin_info and its contents
36+
// (these go into PIN_MAP).
37+
38+
#include "boards_private.h" // For PMAP_ROW(), which makes
39+
// PIN_MAP easier to read.
40+
41+
// boardInit(): nothing special to do for Maple.
42+
//
43+
// When defining your own board.cpp, you can put extra code in this
44+
// function if you have anything you want done on reset, before main()
45+
// or setup() are called.
46+
//
47+
// If there's nothing special you need done, feel free to leave this
48+
// function out, as we do here.
49+
/*
50+
void boardInit(void) {
51+
}
52+
*/
53+
54+
// Pin map: this lets the basic I/O functions (digitalWrite(),
55+
// analogRead(), pwmWrite()) translate from pin numbers to STM32
56+
// peripherals.
57+
//
58+
// PMAP_ROW() lets us specify a row (really a struct stm32_pin_info)
59+
// in the pin map. Its arguments are:
60+
//
61+
// - GPIO device for the pin (GPIOA, etc.)
62+
// - GPIO bit for the pin (0 through 15)
63+
// - Timer device, or NULL if none
64+
// - Timer channel (1 to 4, for PWM), or 0 if none
65+
// - ADC device, or NULL if none
66+
// - ADC channel, or ADCx if none
67+
68+
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = {
69+
/*
70+
gpio_dev *gpio_device; GPIO device
71+
timer_dev *timer_device; Pin's timer device, if any.
72+
const adc_dev *adc_device; ADC device, if any.
73+
uint8 gpio_bit; Pin's GPIO port bit.
74+
uint8 timer_channel; Timer channel, or 0 if none.
75+
uint8 adc_channel; Pin ADC channel, or ADCx if none.
76+
uint8 pinMode; mode specific by pinMode call (Roger Clark added to optimize compatibility with Arduino API
77+
*/
78+
79+
{GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */
80+
{GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */
81+
{GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */
82+
{GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */
83+
{GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */
84+
{GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */
85+
{GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */
86+
{GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */
87+
{GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */
88+
{GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */
89+
{GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */
90+
{GPIOA, NULL, NULL, 11, 0, ADCx}, /* PA11 */
91+
{GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */
92+
{GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */
93+
{GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */
94+
{GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */
95+
96+
{GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */
97+
{GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */
98+
{GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */
99+
{GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */
100+
{GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */
101+
{GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */
102+
{GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */
103+
{GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */
104+
{GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */
105+
{GPIOB, NULL, NULL, 9, 0, ADCx}, /* PB9 */
106+
{GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */
107+
{GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */
108+
{GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */
109+
{GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */
110+
{GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */
111+
{GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */
112+
113+
114+
{GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */
115+
{GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */
116+
{GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */
117+
{GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */
118+
{GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */
119+
{GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */
120+
{GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 */
121+
{GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 */
122+
{GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 */
123+
{GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 */
124+
{GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 UART4_TX/SDIO_D2 */
125+
{GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 UART4_RX/SDIO_D3 */
126+
{GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 UART5_TX/SDIO_CK */
127+
{GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 TAMPER-RTC */
128+
{GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 OSC32_IN */
129+
{GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 OSC32_OUT */
130+
131+
{GPIOD, NULL, NULL, 0, 0, ADCx} , /* PD0 OSC_IN */
132+
{GPIOD, NULL, NULL, 1, 0, ADCx} , /* PD1 OSC_OUT */
133+
{GPIOD, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR/UART5_RX SDIO_CMD */
134+
};
135+
136+
/* Basically everything that is defined as having a timer us PWM */
137+
extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = {
138+
PA0,PA1,PA2,PA3,PA6,PA7,PA8,PA9,PA10,PB0,PB1,PB6,PB7,PB8,PB9,PC6,PC7,PC8,PC9
139+
};
140+
141+
/* Basically everything that is defined having ADC */
142+
extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = {
143+
PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB0,PB1,PC0,PC1,PC2,PC3,PC4,PC5
144+
};
145+
146+
/* not sure what this us used for */
147+
extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = {
148+
BOARD_LED_PIN, BOARD_BUTTON_PIN, BOARD_JTMS_SWDIO_PIN,
149+
BOARD_JTCK_SWCLK_PIN, BOARD_JTDI_PIN, BOARD_JTDO_PIN, BOARD_NJTRST_PIN
150+
};

0 commit comments

Comments
 (0)