Skip to content

Commit 27ae49e

Browse files
committed
2 parents e40e609 + 2cc7dc7 commit 27ae49e

File tree

15 files changed

+1030
-23
lines changed

15 files changed

+1030
-23
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
128128

129129
| Status | Generic STM32L0xx | Release | Comment |
130130
| :---: | --- | :---: | :--- |
131+
| :yellow_heart: | [PX-HER0](https://piconomix.com/fwlib/_p_i_c_o_n_o_m_i_x__s_t_m32__h_e_r_o__b_o_a_r_d.html) | **1.8.0** | |
131132
| :yellow_heart: | [ThunderPack](https://github.com/jgillick/ThunderPack) | **1.8.0** | |
132133

133134
| Status | 3D printer boards | Release | Comment |

boards.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,14 @@ GenL0.menu.pnum.THUNDER_PACK.build.board=THUNDER_PACK
10711071
GenL0.menu.pnum.THUNDER_PACK.build.product_line=STM32L072xx
10721072
GenL0.menu.pnum.THUNDER_PACK.build.variant=THUNDER_PACK
10731073

1074+
# Piconomix PX-HER0 board
1075+
GenL0.menu.pnum.PX_HER0=PX-HER0
1076+
GenL0.menu.pnum.PX_HER0.upload.maximum_size=131072
1077+
GenL0.menu.pnum.PX_HER0.upload.maximum_data_size=20480
1078+
GenL0.menu.pnum.PX_HER0.build.board=PX_HER0
1079+
GenL0.menu.pnum.PX_HER0.build.product_line=STM32L072xx
1080+
GenL0.menu.pnum.PX_HER0.build.variant=PX_HER0
1081+
10741082
# Upload menu
10751083
GenL0.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
10761084
GenL0.menu.upload_method.swdMethod.upload.protocol=0

cores/arduino/Print.cpp

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
*/
2222

2323
#include <stdlib.h>
24-
#include <stdio.h>
2524
#include <string.h>
25+
#include <unistd.h>
2626
#include <math.h>
2727
#include "Arduino.h"
2828

@@ -196,6 +196,44 @@ size_t Print::println(const Printable &x)
196196
return n;
197197
}
198198

199+
extern "C" {
200+
__attribute__((weak))
201+
int _write(int file, char *ptr, int len)
202+
{
203+
#ifdef HAL_UART_MODULE_ENABLED
204+
switch (file) {
205+
case STDOUT_FILENO:
206+
case STDERR_FILENO:
207+
uart_debug_write((uint8_t *)ptr, (uint32_t)len);
208+
break;
209+
case STDIN_FILENO:
210+
break;
211+
default:
212+
((class Print *)file)->write((uint8_t *)ptr, len);
213+
break;
214+
}
215+
#else
216+
(void)file;
217+
(void)ptr;
218+
#endif
219+
return len;
220+
}
221+
}
222+
223+
int Print::printf(const char *format, ...)
224+
{
225+
va_list ap;
226+
va_start(ap, format);
227+
return vdprintf((int)this, format, ap);
228+
}
229+
230+
int Print::printf(const __FlashStringHelper *format, ...)
231+
{
232+
va_list ap;
233+
va_start(ap, format);
234+
return vdprintf((int)this, (const char *)format, ap);
235+
}
236+
199237
// Private Methods /////////////////////////////////////////////////////////////
200238

201239
size_t Print::printNumber(unsigned long n, uint8_t base)

cores/arduino/Print.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include <inttypes.h>
2424
#include <stdio.h> // for size_t
25+
#include <stdarg.h> // for printf
2526

2627
#include "WString.h"
2728
#include "Printable.h"
@@ -103,6 +104,9 @@ class Print {
103104
void println(uint64_t, uint8_t = DEC);
104105
void print(uint64_t, uint8_t = DEC);
105106
#endif
107+
108+
int printf(const char *format, ...);
109+
int printf(const __FlashStringHelper *format, ...);
106110
};
107111

108112
#endif

cores/arduino/stm32/interrupt.cpp

Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
******************************************************************************
3737
*/
3838
#include "interrupt.h"
39-
39+
#if defined(STM32MP1xx)
40+
#include "lock_resource.h"
41+
#endif
4042
#if !defined(HAL_EXTI_MODULE_DISABLED)
4143

4244
/* Private Types */
@@ -177,8 +179,16 @@ void stm32_interrupt_enable(GPIO_TypeDef *port, uint16_t pin, callback_function_
177179

178180
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
179181

182+
#if defined(STM32MP1xx)
183+
PERIPH_LOCK(port);
184+
#endif
185+
180186
HAL_GPIO_Init(port, &GPIO_InitStruct);
181187

188+
#if defined(STM32MP1xx)
189+
PERIPH_UNLOCK(port);
190+
#endif
191+
182192
gpio_irq_conf[id].callback = callback;
183193

184194
// Enable and set EXTI Interrupt
@@ -236,7 +246,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
236246
}
237247
}
238248

239-
#if defined (STM32G0xx)
249+
#if defined (STM32G0xx) || defined (STM32MP1xx)
240250
/**
241251
* @brief EXTI line detection callback.
242252
* @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line.
@@ -359,7 +369,7 @@ void EXTI4_IRQHandler(void)
359369
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
360370
}
361371

362-
372+
#if !defined(STM32MP1xx)
363373
/**
364374
* @brief This function handles external line 5 to 9 interrupt request.
365375
* @param None
@@ -385,7 +395,119 @@ void EXTI15_10_IRQHandler(void)
385395
HAL_GPIO_EXTI_IRQHandler(pin);
386396
}
387397
}
398+
#else /* STM32MP1xx */
399+
400+
/**
401+
* @brief This function handles external line 5 interrupt request.
402+
* @param None
403+
* @retval None
404+
*/
405+
void EXTI5_IRQHandler(void)
406+
{
407+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
408+
}
409+
410+
/**
411+
* @brief This function handles external line 6 interrupt request.
412+
* @param None
413+
* @retval None
414+
*/
415+
void EXTI6_IRQHandler(void)
416+
{
417+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
418+
}
419+
420+
/**
421+
* @brief This function handles external line 7 interrupt request.
422+
* @param None
423+
* @retval None
424+
*/
425+
void EXTI7_IRQHandler(void)
426+
{
427+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
428+
}
429+
430+
/**
431+
* @brief This function handles external line 8 interrupt request.
432+
* @param None
433+
* @retval None
434+
*/
435+
void EXTI8_IRQHandler(void)
436+
{
437+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
438+
}
439+
440+
/**
441+
* @brief This function handles external line 9 interrupt request.
442+
* @param None
443+
* @retval None
444+
*/
445+
void EXTI9_IRQHandler(void)
446+
{
447+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
448+
}
449+
450+
/**
451+
* @brief This function handles external line 10 interrupt request.
452+
* @param None
453+
* @retval None
454+
*/
455+
void EXTI10_IRQHandler(void)
456+
{
457+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
458+
}
459+
460+
/**
461+
* @brief This function handles external line 11 interrupt request.
462+
* @param None
463+
* @retval None
464+
*/
465+
void EXTI11_IRQHandler(void)
466+
{
467+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
468+
}
469+
470+
/**
471+
* @brief This function handles external line 12 interrupt request.
472+
* @param None
473+
* @retval None
474+
*/
475+
void EXTI12_IRQHandler(void)
476+
{
477+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
478+
}
479+
480+
/**
481+
* @brief This function handles external line 13 interrupt request.
482+
* @param None
483+
* @retval None
484+
*/
485+
void EXTI13_IRQHandler(void)
486+
{
487+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
488+
}
489+
490+
/**
491+
* @brief This function handles external line 14 interrupt request.
492+
* @param None
493+
* @retval None
494+
*/
495+
void EXTI14_IRQHandler(void)
496+
{
497+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
498+
}
499+
500+
/**
501+
* @brief This function handles external line 15 interrupt request.
502+
* @param None
503+
* @retval None
504+
*/
505+
void EXTI15_IRQHandler(void)
506+
{
507+
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
508+
}
388509

510+
#endif /* !STM32MP1xx */
389511
#ifdef __cplusplus
390512
}
391513
#endif

cores/arduino/stm32/lock_resource.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
/* Includes ------------------------------------------------------------------*/
2424
#include "stm32_def.h"
2525

26+
#ifdef __cplusplus
27+
extern "C" {
28+
#endif
2629

2730
/* Exported types ------------------------------------------------------------*/
2831
typedef enum {
@@ -42,8 +45,9 @@ typedef enum {
4245
LockResource_Status_t Periph_Lock(void *Peripheral, uint32_t Timeout);
4346
void Periph_Unlock(void *Peripheral);
4447

45-
46-
48+
#ifdef __cplusplus
49+
} // extern "C"
50+
#endif
4751

4852
#endif /* _LOCK_RESOURCE_H */
4953

cores/arduino/stm32/spi_com.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,12 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
213213
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
214214
} else if (speed >= (spi_freq / SPI_SPEED_CLOCK_DIV128_MHZ)) {
215215
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
216-
} else if (speed >= (spi_freq / SPI_SPEED_CLOCK_DIV256_MHZ)) {
217-
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
218216
} else {
219-
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
217+
/*
218+
* As it is not possible to go below (spi_freq / SPI_SPEED_CLOCK_DIV256_MHZ).
219+
* Set prescaler at max value so get the lowest frequency possible.
220+
*/
221+
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
220222
}
221223

222224
handle->Init.Direction = SPI_DIRECTION_2LINES;

keywords.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ PIN_WIRE_SCL LITERAL1
267267

268268
# Serial
269269
HardwareSerial KEYWORD2
270-
setRX KEYWORD2
271-
setTX KEYWORD2
270+
setRx KEYWORD2
271+
setTx KEYWORD2
272272
setHalfDuplex KEYWORD2
273273
isHalfDuplex KEYWORD2
274274
enableHalfDuplexRx KEYWORD2

libraries/SrcWrapper/src/syscalls.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,12 @@ int _read(UNUSED(int file), UNUSED(char *ptr), UNUSED(int len))
8181
return 0;
8282
}
8383

84+
/* Moved to Print.cpp to support Print::printf()
8485
__attribute__((weak))
8586
int _write(UNUSED(int file), char *ptr, int len)
8687
{
87-
#ifdef HAL_UART_MODULE_ENABLED
88-
return uart_debug_write((uint8_t *)ptr, (uint32_t)len);
89-
#else
90-
(void)ptr;
91-
return len;
92-
#endif
9388
}
89+
*/
9490

9591
__attribute__((weak))
9692
void _exit(UNUSED(int status))

variants/NUCLEO_H743ZI/PeripheralPins.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ WEAK const PinMap PinMap_ADC[] = {
7575
// {PC_1, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 - ETH RMII MDC
7676
// {PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INN10 - ETH RMII MDC
7777
// {PC_1, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 - ETH RMII MDC
78-
{PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INN1 - A7 (ZI)/A4 (ZI2)
79-
// {PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0
78+
// {PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INN1 - A7 (ZI)/A4 (ZI2)
79+
{PC_2, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0
8080
{PC_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 - A2
8181
// {PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 - ETH RMII RXD0
8282
// {PC_4, ADC2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 - ETH RMII RXD0
@@ -87,13 +87,13 @@ WEAK const PinMap PinMap_ADC[] = {
8787
#ifdef ARDUINO_NUCLEO_H743ZI
8888
{PF_3, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_INP5 - A3
8989
#endif
90-
{PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_INN5 - A8 (ZI)/A6 (ZI2)
91-
// {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_INP9
90+
// {PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_INN5 - A8 (ZI)/A6 (ZI2)
91+
{PF_4, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_INP9
9292
{PF_5, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_INP4 - A4 (ZI)/A7 (ZI2)
9393
#ifdef ARDUINO_NUCLEO_H743ZI2
94-
{PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_INN4 - A8
94+
// {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_INN4 - A8
9595
#endif
96-
// {PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_INP8
96+
{PF_6, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_INP8
9797
// {PF_7, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_INP3
9898
// {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_INN3
9999
// {PF_8, ADC3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_INP7

0 commit comments

Comments
 (0)