aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/STM8S-STM8S105-DISCOVERY-STVD/cosmic/vectors.c9
-rw-r--r--demos/STM8S-STM8S105-DISCOVERY-STVD/demo/mcuconf.h18
-rw-r--r--os/hal/platforms/STM8/serial_lld.c48
-rw-r--r--os/hal/platforms/STM8/serial_lld.h20
-rw-r--r--os/hal/platforms/STM8/spi_lld.c2
-rw-r--r--os/hal/platforms/STM8/spi_lld.h2
-rw-r--r--readme.txt5
7 files changed, 60 insertions, 44 deletions
diff --git a/demos/STM8S-STM8S105-DISCOVERY-STVD/cosmic/vectors.c b/demos/STM8S-STM8S105-DISCOVERY-STVD/cosmic/vectors.c
index 6ede94a3e..e9a5ad450 100644
--- a/demos/STM8S-STM8S105-DISCOVERY-STVD/cosmic/vectors.c
+++ b/demos/STM8S-STM8S105-DISCOVERY-STVD/cosmic/vectors.c
@@ -29,6 +29,7 @@ typedef void @far @interrupt (*interrupt_handler_t)(void);
* Various external symbols.
*/
void _stext(void);
+@far @interrupt void vector10(void);
@far @interrupt void vector13(void);
@far @interrupt void vector17(void);
@far @interrupt void vector18(void);
@@ -68,14 +69,18 @@ exception_vector_t const _vectab[] = {
{0x82, vector}, /* vector7 */
{0x82, vector}, /* vector8 */
{0x82, vector}, /* vector9 */
+#if CH_HAL_USE_SPI && STM8_SPI_USE_SPI
+ {0x82, vector10},
+#else
{0x82, vector}, /* vector10 */
+#endif
{0x82, vector}, /* vector11 */
{0x82, vector}, /* vector12 */
{0x82, vector13}, /* vector13 */
{0x82, vector}, /* vector14 */
{0x82, vector}, /* vector15 */
{0x82, vector}, /* vector16 */
-#if USE_STM8_UART1
+#if CH_HAL_USE_SERIAL && STM8_SERIAL_USE_UART1
{0x82, vector17}, /* vector17 */
{0x82, vector18}, /* vector18 */
#else
@@ -83,7 +88,7 @@ exception_vector_t const _vectab[] = {
{0x82, vector}, /* vector18 */
#endif
{0x82, vector}, /* vector19 */
-#if USE_STM8_UART2 || USE_STM8_UART3
+#if CH_HAL_USE_SERIAL && (STM8_SERIAL_USE_UART2 || STM8_SERIAL_USE_UART3)
{0x82, vector20}, /* vector20 */
{0x82, vector21}, /* vector21 */
#else
diff --git a/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/mcuconf.h b/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/mcuconf.h
index cf2ebd963..70aae8849 100644
--- a/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/mcuconf.h
+++ b/demos/STM8S-STM8S105-DISCOVERY-STVD/demo/mcuconf.h
@@ -28,13 +28,19 @@
/*
* HAL general settings.
*/
-#define STM8_CLOCK_SOURCE CLK_SOURCE_HSI
-#define STM8_HSI_DIVIDER CLK_HSI_DIV1
-#define STM8_CPU_DIVIDER CLK_CPU_DIV1
+#define STM8_CLOCK_SOURCE CLK_SOURCE_HSI
+#define STM8_HSI_DIVIDER CLK_HSI_DIV1
+#define STM8_CPU_DIVIDER CLK_CPU_DIV1
/*
* SERIAL driver system settings.
*/
-#define USE_STM8_UART1 FALSE
-#define USE_STM8_UART2 TRUE
-#define USE_STM8_UART3 FALSE
+#define STM8_SERIAL_USE_UART1 FALSE
+#define STM8_SERIAL_USE_UART2 TRUE
+#define STM8_SERIAL_USE_UART3 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define STM8_SPI_USE_SPI TRUE
+#define STM8_SPI_ERROR_HOOK(spip) chSysHalt()
diff --git a/os/hal/platforms/STM8/serial_lld.c b/os/hal/platforms/STM8/serial_lld.c
index eeda867f9..13c9c2f24 100644
--- a/os/hal/platforms/STM8/serial_lld.c
+++ b/os/hal/platforms/STM8/serial_lld.c
@@ -37,21 +37,21 @@
/**
* @brief UART1 serial driver identifier.
*/
-#if USE_STM8_UART1 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART1 || defined(__DOXYGEN__)
SerialDriver SD1;
#endif
/**
* @brief UART2 serial driver identifier.
*/
-#if USE_STM8_UART2 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART2 || defined(__DOXYGEN__)
SerialDriver SD2;
#endif
/**
* @brief UART3 serial driver identifier.
*/
-#if USE_STM8_UART3 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART3 || defined(__DOXYGEN__)
SerialDriver SD3;
#endif
@@ -89,7 +89,7 @@ static void set_error(SerialDriver *sdp, uint8_t sr) {
chSysUnlockFromIsr();
}
-#if USE_STM8_UART1 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART1 || defined(__DOXYGEN__)
static void notify1(void) {
UART1->CR2 |= UART1_CR2_TIEN;
@@ -128,9 +128,9 @@ static void uart1_deinit(void) {
UART1->CR5 = 0;
UART1->PSCR = 0;
}
-#endif /* USE_STM8_UART1 */
+#endif /* STM8_SERIAL_USE_UART1 */
-#if USE_STM8_UART2 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART2 || defined(__DOXYGEN__)
static void notify2(void) {
UART2->CR2 |= UART2_CR2_TIEN;
@@ -171,9 +171,9 @@ static void uart2_deinit(void) {
UART2->CR6 = 0;
UART2->PSCR = 0;
}
-#endif /* USE_STM8_UART1 */
+#endif /* STM8_SERIAL_USE_UART1 */
-#if USE_STM8_UART3 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART3 || defined(__DOXYGEN__)
static void notify3(void) {
UART3->CR2 |= UART3_CR2_TIEN;
@@ -210,13 +210,13 @@ static void uart3_deinit(void) {
UART3->CR4 = 0;
UART3->CR6 = 0;
}
-#endif /* USE_STM8_UART3 */
+#endif /* STM8_SERIAL_USE_UART3 */
/*===========================================================================*/
/* Driver interrupt handlers. */
/*===========================================================================*/
-#if USE_STM8_UART1 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART1 || defined(__DOXYGEN__)
/**
* @brief IRQ 17 service routine.
*
@@ -257,9 +257,9 @@ CH_IRQ_HANDLER(18) {
CH_IRQ_EPILOGUE();
}
-#endif /* USE_STM8_UART1 */
+#endif /* STM8_SERIAL_USE_UART1 */
-#if USE_STM8_UART2 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART2 || defined(__DOXYGEN__)
/**
* @brief IRQ 20 service routine.
*
@@ -300,9 +300,9 @@ CH_IRQ_HANDLER(21) {
CH_IRQ_EPILOGUE();
}
-#endif /* USE_STM8_UART2 */
+#endif /* STM8_SERIAL_USE_UART2 */
-#if USE_STM8_UART3 || defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART3 || defined(__DOXYGEN__)
/**
* @brief IRQ 20 service routine.
*
@@ -343,7 +343,7 @@ CH_IRQ_HANDLER(21) {
CH_IRQ_EPILOGUE();
}
-#endif /* USE_STM8_UART3 */
+#endif /* STM8_SERIAL_USE_UART3 */
/*===========================================================================*/
/* Driver exported functions. */
@@ -356,19 +356,19 @@ CH_IRQ_HANDLER(21) {
*/
void sd_lld_init(void) {
-#if USE_STM8_UART1
+#if STM8_SERIAL_USE_UART1
sdObjectInit(&SD1, NULL, notify1);
CLK->PCKENR1 |= CLK_PCKENR1_UART1; /* PCKEN12, clock source. */
UART1->CR1 = UART1_CR1_UARTD; /* UARTD (low power). */
#endif
-#if USE_STM8_UART2
+#if STM8_SERIAL_USE_UART2
sdObjectInit(&SD2, NULL, notify2);
CLK->PCKENR1 |= CLK_PCKENR1_UART2; /* PCKEN13, clock source. */
UART2->CR1 = UART2_CR1_UARTD; /* UARTD (low power). */
#endif
-#if USE_STM8_UART3
+#if STM8_SERIAL_USE_UART3
sdObjectInit(&SD3, NULL, notify3);
CLK->PCKENR1 |= CLK_PCKENR1_UART3; /* PCKEN13, clock source. */
UART3->CR1 = UART3_CR1_UARTD; /* UARTD (low power). */
@@ -390,19 +390,19 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) {
if (config == NULL)
config = &default_config;
-#if USE_STM8_UART1
+#if STM8_SERIAL_USE_UART1
if (&SD1 == sdp) {
uart1_init(config);
return;
}
#endif
-#if USE_STM8_UART2
+#if STM8_SERIAL_USE_UART2
if (&SD2 == sdp) {
uart2_init(config);
return;
}
#endif
-#if USE_STM8_UART3
+#if STM8_SERIAL_USE_UART3
if (&SD3 == sdp) {
uart3_init(config);
return;
@@ -421,19 +421,19 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) {
*/
void sd_lld_stop(SerialDriver *sdp) {
-#if USE_STM8_UART1
+#if STM8_SERIAL_USE_UART1
if (&SD1 == sdp) {
uart1_deinit();
return;
}
#endif
-#if USE_STM8_UART2
+#if STM8_SERIAL_USE_UART2
if (&SD2 == sdp) {
uart2_deinit();
return;
}
#endif
-#if USE_STM8_UART3
+#if STM8_SERIAL_USE_UART3
if (&SD3 == sdp) {
uart3_deinit();
return;
diff --git a/os/hal/platforms/STM8/serial_lld.h b/os/hal/platforms/STM8/serial_lld.h
index ee7848870..fc1e03c54 100644
--- a/os/hal/platforms/STM8/serial_lld.h
+++ b/os/hal/platforms/STM8/serial_lld.h
@@ -53,8 +53,8 @@
* @details If set to @p TRUE the support for UART1 is included.
* @note The default is @p TRUE.
*/
-#if !defined(USE_STM8_UART1) || defined(__DOXYGEN__)
-#define USE_STM8_UART1 TRUE
+#if !defined(STM8_SERIAL_USE_UART1) || defined(__DOXYGEN__)
+#define STM8_SERIAL_USE_UART1 TRUE
#endif
/**
@@ -62,8 +62,8 @@
* @details If set to @p TRUE the support for UART3 is included.
* @note The default is @p TRUE.
*/
-#if !defined(USE_STM8_UART2) || defined(__DOXYGEN__)
-#define USE_STM8_UART2 TRUE
+#if !defined(STM8_SERIAL_USE_UART2) || defined(__DOXYGEN__)
+#define STM8_SERIAL_USE_UART2 TRUE
#endif
/**
@@ -71,15 +71,15 @@
* @details If set to @p TRUE the support for UART3 is included.
* @note The default is @p TRUE.
*/
-#if !defined(USE_STM8_UART3) || defined(__DOXYGEN__)
-#define USE_STM8_UART3 TRUE
+#if !defined(STM8_SERIAL_USE_UART3) || defined(__DOXYGEN__)
+#define STM8_SERIAL_USE_UART3 TRUE
#endif
/*===========================================================================*/
/* Derived constants and error checks. */
/*===========================================================================*/
-#if USE_STM8_UART2 && USE_STM8_UART3
+#if STM8_SERIAL_USE_UART2 && STM8_SERIAL_USE_UART3
#error "STM8 UART2 and UART3 cannot be used together"
#endif
@@ -146,13 +146,13 @@ typedef struct {
/* External declarations. */
/*===========================================================================*/
-#if USE_STM8_UART1 && !defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART1 && !defined(__DOXYGEN__)
extern SerialDriver SD1;
#endif
-#if USE_STM8_UART2 && !defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART2 && !defined(__DOXYGEN__)
extern SerialDriver SD2;
#endif
-#if USE_STM8_UART3 && !defined(__DOXYGEN__)
+#if STM8_SERIAL_USE_UART3 && !defined(__DOXYGEN__)
extern SerialDriver SD3;
#endif
diff --git a/os/hal/platforms/STM8/spi_lld.c b/os/hal/platforms/STM8/spi_lld.c
index 37b66fc28..9f7c057a3 100644
--- a/os/hal/platforms/STM8/spi_lld.c
+++ b/os/hal/platforms/STM8/spi_lld.c
@@ -64,7 +64,7 @@ CH_IRQ_HANDLER(10) {
if ((SPI->SR & SPI_SR_OVR) != 0) {
/* The overflow condition should never happen because priority is given
to receive but a hook macro is provided anyway...*/
- STM8_SPI_SPI_ERROR_HOOK(&SPID1);
+ STM8_SPI_ERROR_HOOK(&SPID1);
}
/* Handling the DR register like it is a FIFO with depth>1 in order to
handle the case where a frame arrives immediately after reading the
diff --git a/os/hal/platforms/STM8/spi_lld.h b/os/hal/platforms/STM8/spi_lld.h
index a66f83ad7..f84f4a9a0 100644
--- a/os/hal/platforms/STM8/spi_lld.h
+++ b/os/hal/platforms/STM8/spi_lld.h
@@ -52,7 +52,7 @@
* @details The default action is to stop the system.
*/
#if !defined(STM8_SPI_SPI_ERROR_HOOK) || defined(__DOXYGEN__)
-#define STM8_SPI_SPI_ERROR_HOOK(spip) chSysHalt()
+#define STM8_SPI_ERROR_HOOK(spip) chSysHalt()
#endif
/*===========================================================================*/
diff --git a/readme.txt b/readme.txt
index 452d9884a..294040abc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -65,6 +65,11 @@
*** 2.1.3 ***
- FIX: DMA not initialized under some conditions (bug 3099701).
+- NEW: Added an SPI driver to the STM8 platform support.
+- CHANGE: Renamed most of the STM8 HAL settings macro names in order to
+ make names more consistent.
+ NOTE: ****** Make sure to use a mcuconf.h file taken from ******
+ ****** this version in your project. ******
*** 2.1.2 ***
- FIX: Fixed typo in memstreams.h (bug 3089567)(backported to 2.0.6).