From 8b3f629004c3447dec1b3f892874959266cb09b8 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Thu, 29 Sep 2022 20:47:09 +0800 Subject: [PATCH] first commit --- LICENSE.txt | 6 + README.md | 36 + Release_Notes.html | 105 ++ STM32WLxx_Nucleo_BSP_User_Manual.chm | Bin 0 -> 181887 bytes _htmresc/Add button.svg | 2 + _htmresc/Update.svg | 2 + _htmresc/favicon.png | Bin 0 -> 4126 bytes _htmresc/mini-st_2020.css | 1711 ++++++++++++++++++++++++++ _htmresc/st_logo_2020.png | Bin 0 -> 7520 bytes stm32wlxx_STS.c | 676 ++++++++++ stm32wlxx_STS.h | 356 ++++++ stm32wlxx_STS_radio.c | 220 ++++ stm32wlxx_STS_radio.h | 181 +++ stm32wlxx_nucleo_conf.h | 74 ++ stm32wlxx_nucleo_conf_template.h | 74 ++ stm32wlxx_nucleo_errno.h | 45 + 16 files changed, 3488 insertions(+) create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 Release_Notes.html create mode 100644 STM32WLxx_Nucleo_BSP_User_Manual.chm create mode 100644 _htmresc/Add button.svg create mode 100644 _htmresc/Update.svg create mode 100644 _htmresc/favicon.png create mode 100644 _htmresc/mini-st_2020.css create mode 100644 _htmresc/st_logo_2020.png create mode 100644 stm32wlxx_STS.c create mode 100644 stm32wlxx_STS.h create mode 100644 stm32wlxx_STS_radio.c create mode 100644 stm32wlxx_STS_radio.h create mode 100644 stm32wlxx_nucleo_conf.h create mode 100644 stm32wlxx_nucleo_conf_template.h create mode 100644 stm32wlxx_nucleo_errno.h diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..3edc4d1 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/README.md b/README.md new file mode 100644 index 0000000..f12c19b --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# BSP STM32WLXX-NUCLEO Component + +![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32wlxx-nucleo.svg?color=brightgreen) + +## Overview + +**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost. + +**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series. + * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product. + * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio. + * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series. + * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library... + * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series. + +Two models of publication are proposed for the STM32Cube embedded software: + * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series). + * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions. + +## Description + +This **stm32wlxx-nucleo** MCU component repository is one element of the **STM32CubeWL** MCU embedded software package, providing the **STM32WLXX-NUCLEO** BSP BOARD component part. + +## Release note + +Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32wlxx-nucleo/blob/main/Release_Notes.html). + +## Compatibility information + +Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeWL/blob/main/Release_Notes.html) release note. + +* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common) + +## Troubleshooting + +Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide. diff --git a/Release_Notes.html b/Release_Notes.html new file mode 100644 index 0000000..cdf0fed --- /dev/null +++ b/Release_Notes.html @@ -0,0 +1,105 @@ + + + + + + + Release Notes for STM32WLxx_Nucleo + + + + + + +
+
+
+

Release Notes for

+

STM32WLxx_Nucleo

+

Copyright © 2020 STMicroelectronics
+

+ +
+

Purpose

+

This driver provides a set of functions to manage:

+
    +
  • RF Switches, LEDs and push-button available on STM32WLxx_Nucleo Kit from STMicroelectronics
  • +
+
+
+

Update History

+
+ +
+

Main Changes

+

Maintenance Release

+

Contents

+
    +
  • All source files and templates: update disclaimer to add reference to the new license agreement
  • +
  • Add README.md file
  • +
  • Rename BSP_BUTTON_SWx_IT_PRIORITY constant to BSP_BUTTON_USER_IT_PRIORITY
  • +
  • Add new interface BSP_RADIO_GetRFOMaxPowerConfig to get the RFO Max Power configuration
  • +
+

Known Limitations

+

None

+

Dependencies

+

None

+

Notes

+

stm32wlxx_nucleo_conf_template.h file must be copied in user application as stm32wlxx_nucleo_conf.h with optional configuration update

+
+
+
+ +
+

Main Changes

+

Maintenance Release

+

Contents

+
    +
  • Move some radio definitions (TCXO, DSDC) from stm32wlxx_nucleo_conf.h to stm32wlxx_nucleo_radio.h
  • +
  • Add 2 interfaces to check BSP_RADIO_IsTCXO and BSP_RADIO_IsDCDC definitions
  • +
  • Remove radio API BSP_RADIO_GetWakeUpTime from stm32wlxx_nucleo_radio.c
  • +
+

Known Limitations

+

None

+

Dependencies

+

None

+

Notes

+

stm32wlxx_nucleo_conf_template.h file must be copied in user application as stm32wlxx_nucleo_conf.h with optional configuration update

+
+
+
+ +
+

Main Changes

+

First Official Release

+

Contents

+

First official release of board drivers for NUCLEO-WL55JC board (MB1389 C-01) in line with STM32Cube BSP drivers development guidelines (UM2298 - revision 2)

+

Known Limitations

+

None

+

Dependencies

+

None

+

Notes

+

stm32wlxx_nucleo_conf_template.h file must be copied in user application as stm32wlxx_nucleo_conf.h with optional configuration update

+
+
+
+
+ + + diff --git a/STM32WLxx_Nucleo_BSP_User_Manual.chm b/STM32WLxx_Nucleo_BSP_User_Manual.chm new file mode 100644 index 0000000000000000000000000000000000000000..899f93bad7e83bc423d73262e97c1dcc4b52e96d GIT binary patch literal 181887 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

&lo=r(~2ttbN!Ol5hwZmjh)@>wAl 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

Pn{Re%9 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 JKd(I9{{d0VG%ElA literal 0 HcmV?d00001 diff --git a/_htmresc/Add button.svg b/_htmresc/Add button.svg new file mode 100644 index 0000000..c211545 --- /dev/null +++ b/_htmresc/Add button.svg @@ -0,0 +1,2 @@ + + diff --git a/_htmresc/Update.svg b/_htmresc/Update.svg new file mode 100644 index 0000000..f88381f --- /dev/null +++ b/_htmresc/Update.svg @@ -0,0 +1,2 @@ + + diff --git a/_htmresc/favicon.png b/_htmresc/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..06713eec4974e141c6e9b4156d34e61e89f282ca GIT binary patch literal 4126 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 literal 0 HcmV?d00001 diff --git a/_htmresc/mini-st_2020.css b/_htmresc/mini-st_2020.css new file mode 100644 index 0000000..986f4d4 --- /dev/null +++ b/_htmresc/mini-st_2020.css @@ -0,0 +1,1711 @@ +@charset "UTF-8"; +/* + Flavor name: Custom (mini-custom) + Generated online - https://minicss.org/flavors + mini.css version: v3.0.1 +*/ +/* + Browsers resets and base typography. +*/ +/* Core module CSS variable definitions */ +:root { + --fore-color: #03234b; + --secondary-fore-color: #03234b; + --back-color: #ffffff; + --secondary-back-color: #ffffff; + --blockquote-color: #e6007e; + --pre-color: #e6007e; + --border-color: #3cb4e6; + --secondary-border-color: #3cb4e6; + --heading-ratio: 1.2; + --universal-margin: 0.5rem; + --universal-padding: 0.25rem; + --universal-border-radius: 0.075rem; + --background-margin: 1.5%; + --a-link-color: #3cb4e6; + --a-visited-color: #8c0078; } + +html { + font-size: 13.5px; } + +a, b, del, em, i, ins, q, span, strong, u { + font-size: 1em; } + +html, * { + font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif; + line-height: 1.25; + -webkit-text-size-adjust: 100%; } + +* { + font-size: 1rem; } + +body { + margin: 0; + color: var(--fore-color); + @background: var(--back-color); + background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top; + background-size: var(--background-margin); + } + +details { + display: block; } + +summary { + display: list-item; } + +abbr[title] { + border-bottom: none; + text-decoration: underline dotted; } + +input { + overflow: visible; } + +img { + max-width: 100%; + height: auto; } + +h1, h2, h3, h4, h5, h6 { + line-height: 1.25; + margin: calc(1.5 * var(--universal-margin)) var(--universal-margin); + font-weight: 400; } + h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + color: var(--secondary-fore-color); + display: block; + margin-top: -0.25rem; } + +h1 { + font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); } + +h2 { + font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) ); + border-style: none none solid none ; + border-width: thin; + border-color: var(--border-color); } +h3 { + font-size: calc(1rem * var(--heading-ratio) ); } + +h4 { + font-size: calc(1rem * var(--heading-ratio)); } + +h5 { + font-size: 1rem; } + +h6 { + font-size: calc(1rem / var(--heading-ratio)); } + +p { + margin: var(--universal-margin); } + +ol, ul { + margin: var(--universal-margin); + padding-left: calc(3 * var(--universal-margin)); } + +b, strong { + font-weight: 700; } + +hr { + box-sizing: content-box; + border: 0; + line-height: 1.25em; + margin: var(--universal-margin); + height: 0.0714285714rem; + background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); } + +blockquote { + display: block; + position: relative; + font-style: italic; + color: var(--secondary-fore-color); + margin: var(--universal-margin); + padding: calc(3 * var(--universal-padding)); + border: 0.0714285714rem solid var(--secondary-border-color); + border-left: 0.3rem solid var(--blockquote-color); + border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; } + blockquote:before { + position: absolute; + top: calc(0rem - var(--universal-padding)); + left: 0; + font-family: sans-serif; + font-size: 2rem; + font-weight: 800; + content: "\201c"; + color: var(--blockquote-color); } + blockquote[cite]:after { + font-style: normal; + font-size: 0.75em; + font-weight: 700; + content: "\a— " attr(cite); + white-space: pre; } + +code, kbd, pre, samp { + font-family: Menlo, Consolas, monospace; + font-size: 0.85em; } + +code { + background: var(--secondary-back-color); + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); } + +kbd { + background: var(--fore-color); + color: var(--back-color); + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); } + +pre { + overflow: auto; + background: var(--secondary-back-color); + padding: calc(1.5 * var(--universal-padding)); + margin: var(--universal-margin); + border: 0.0714285714rem solid var(--secondary-border-color); + border-left: 0.2857142857rem solid var(--pre-color); + border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; } + +sup, sub, code, kbd { + line-height: 0; + position: relative; + vertical-align: baseline; } + +small, sup, sub, figcaption { + font-size: 0.75em; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +figure { + margin: var(--universal-margin); } + +figcaption { + color: var(--secondary-fore-color); } + +a { + text-decoration: none; } + a:link { + color: var(--a-link-color); } + a:visited { + color: var(--a-visited-color); } + a:hover, a:focus { + text-decoration: underline; } + +/* + Definitions for the grid system, cards and containers. +*/ +.container { + margin: 0 auto; + padding: 0 calc(1.5 * var(--universal-padding)); } + +.row { + box-sizing: border-box; + display: flex; + flex: 0 1 auto; + flex-flow: row wrap; + margin: 0 0 0 var(--background-margin); } + +.col-sm, +[class^='col-sm-'], +[class^='col-sm-offset-'], +.row[class*='cols-sm-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); } + +.col-sm, +.row.cols-sm > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; } + +.col-sm-1, +.row.cols-sm-1 > * { + max-width: 8.3333333333%; + flex-basis: 8.3333333333%; } + +.col-sm-offset-0 { + margin-left: 0; } + +.col-sm-2, +.row.cols-sm-2 > * { + max-width: 16.6666666667%; + flex-basis: 16.6666666667%; } + +.col-sm-offset-1 { + margin-left: 8.3333333333%; } + +.col-sm-3, +.row.cols-sm-3 > * { + max-width: 25%; + flex-basis: 25%; } + +.col-sm-offset-2 { + margin-left: 16.6666666667%; } + +.col-sm-4, +.row.cols-sm-4 > * { + max-width: 33.3333333333%; + flex-basis: 33.3333333333%; } + +.col-sm-offset-3 { + margin-left: 25%; } + +.col-sm-5, +.row.cols-sm-5 > * { + max-width: 41.6666666667%; + flex-basis: 41.6666666667%; } + +.col-sm-offset-4 { + margin-left: 33.3333333333%; } + +.col-sm-6, +.row.cols-sm-6 > * { + max-width: 50%; + flex-basis: 50%; } + +.col-sm-offset-5 { + margin-left: 41.6666666667%; } + +.col-sm-7, +.row.cols-sm-7 > * { + max-width: 58.3333333333%; + flex-basis: 58.3333333333%; } + +.col-sm-offset-6 { + margin-left: 50%; } + +.col-sm-8, +.row.cols-sm-8 > * { + max-width: 66.6666666667%; + flex-basis: 66.6666666667%; } + +.col-sm-offset-7 { + margin-left: 58.3333333333%; } + +.col-sm-9, +.row.cols-sm-9 > * { + max-width: 75%; + flex-basis: 75%; } + +.col-sm-offset-8 { + margin-left: 66.6666666667%; } + +.col-sm-10, +.row.cols-sm-10 > * { + max-width: 83.3333333333%; + flex-basis: 83.3333333333%; } + +.col-sm-offset-9 { + margin-left: 75%; } + +.col-sm-11, +.row.cols-sm-11 > * { + max-width: 91.6666666667%; + flex-basis: 91.6666666667%; } + +.col-sm-offset-10 { + margin-left: 83.3333333333%; } + +.col-sm-12, +.row.cols-sm-12 > * { + max-width: 100%; + flex-basis: 100%; } + +.col-sm-offset-11 { + margin-left: 91.6666666667%; } + +.col-sm-normal { + order: initial; } + +.col-sm-first { + order: -999; } + +.col-sm-last { + order: 999; } + +@media screen and (min-width: 500px) { + .col-md, + [class^='col-md-'], + [class^='col-md-offset-'], + .row[class*='cols-md-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); } + + .col-md, + .row.cols-md > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; } + + .col-md-1, + .row.cols-md-1 > * { + max-width: 8.3333333333%; + flex-basis: 8.3333333333%; } + + .col-md-offset-0 { + margin-left: 0; } + + .col-md-2, + .row.cols-md-2 > * { + max-width: 16.6666666667%; + flex-basis: 16.6666666667%; } + + .col-md-offset-1 { + margin-left: 8.3333333333%; } + + .col-md-3, + .row.cols-md-3 > * { + max-width: 25%; + flex-basis: 25%; } + + .col-md-offset-2 { + margin-left: 16.6666666667%; } + + .col-md-4, + .row.cols-md-4 > * { + max-width: 33.3333333333%; + flex-basis: 33.3333333333%; } + + .col-md-offset-3 { + margin-left: 25%; } + + .col-md-5, + .row.cols-md-5 > * { + max-width: 41.6666666667%; + flex-basis: 41.6666666667%; } + + .col-md-offset-4 { + margin-left: 33.3333333333%; } + + .col-md-6, + .row.cols-md-6 > * { + max-width: 50%; + flex-basis: 50%; } + + .col-md-offset-5 { + margin-left: 41.6666666667%; } + + .col-md-7, + .row.cols-md-7 > * { + max-width: 58.3333333333%; + flex-basis: 58.3333333333%; } + + .col-md-offset-6 { + margin-left: 50%; } + + .col-md-8, + .row.cols-md-8 > * { + max-width: 66.6666666667%; + flex-basis: 66.6666666667%; } + + .col-md-offset-7 { + margin-left: 58.3333333333%; } + + .col-md-9, + .row.cols-md-9 > * { + max-width: 75%; + flex-basis: 75%; } + + .col-md-offset-8 { + margin-left: 66.6666666667%; } + + .col-md-10, + .row.cols-md-10 > * { + max-width: 83.3333333333%; + flex-basis: 83.3333333333%; } + + .col-md-offset-9 { + margin-left: 75%; } + + .col-md-11, + .row.cols-md-11 > * { + max-width: 91.6666666667%; + flex-basis: 91.6666666667%; } + + .col-md-offset-10 { + margin-left: 83.3333333333%; } + + .col-md-12, + .row.cols-md-12 > * { + max-width: 100%; + flex-basis: 100%; } + + .col-md-offset-11 { + margin-left: 91.6666666667%; } + + .col-md-normal { + order: initial; } + + .col-md-first { + order: -999; } + + .col-md-last { + order: 999; } } +@media screen and (min-width: 1280px) { + .col-lg, + [class^='col-lg-'], + [class^='col-lg-offset-'], + .row[class*='cols-lg-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); } + + .col-lg, + .row.cols-lg > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; } + + .col-lg-1, + .row.cols-lg-1 > * { + max-width: 8.3333333333%; + flex-basis: 8.3333333333%; } + + .col-lg-offset-0 { + margin-left: 0; } + + .col-lg-2, + .row.cols-lg-2 > * { + max-width: 16.6666666667%; + flex-basis: 16.6666666667%; } + + .col-lg-offset-1 { + margin-left: 8.3333333333%; } + + .col-lg-3, + .row.cols-lg-3 > * { + max-width: 25%; + flex-basis: 25%; } + + .col-lg-offset-2 { + margin-left: 16.6666666667%; } + + .col-lg-4, + .row.cols-lg-4 > * { + max-width: 33.3333333333%; + flex-basis: 33.3333333333%; } + + .col-lg-offset-3 { + margin-left: 25%; } + + .col-lg-5, + .row.cols-lg-5 > * { + max-width: 41.6666666667%; + flex-basis: 41.6666666667%; } + + .col-lg-offset-4 { + margin-left: 33.3333333333%; } + + .col-lg-6, + .row.cols-lg-6 > * { + max-width: 50%; + flex-basis: 50%; } + + .col-lg-offset-5 { + margin-left: 41.6666666667%; } + + .col-lg-7, + .row.cols-lg-7 > * { + max-width: 58.3333333333%; + flex-basis: 58.3333333333%; } + + .col-lg-offset-6 { + margin-left: 50%; } + + .col-lg-8, + .row.cols-lg-8 > * { + max-width: 66.6666666667%; + flex-basis: 66.6666666667%; } + + .col-lg-offset-7 { + margin-left: 58.3333333333%; } + + .col-lg-9, + .row.cols-lg-9 > * { + max-width: 75%; + flex-basis: 75%; } + + .col-lg-offset-8 { + margin-left: 66.6666666667%; } + + .col-lg-10, + .row.cols-lg-10 > * { + max-width: 83.3333333333%; + flex-basis: 83.3333333333%; } + + .col-lg-offset-9 { + margin-left: 75%; } + + .col-lg-11, + .row.cols-lg-11 > * { + max-width: 91.6666666667%; + flex-basis: 91.6666666667%; } + + .col-lg-offset-10 { + margin-left: 83.3333333333%; } + + .col-lg-12, + .row.cols-lg-12 > * { + max-width: 100%; + flex-basis: 100%; } + + .col-lg-offset-11 { + margin-left: 91.6666666667%; } + + .col-lg-normal { + order: initial; } + + .col-lg-first { + order: -999; } + + .col-lg-last { + order: 999; } } +/* Card component CSS variable definitions */ +:root { + --card-back-color: #3cb4e6; + --card-fore-color: #03234b; + --card-border-color: #03234b; } + +.card { + display: flex; + flex-direction: column; + justify-content: space-between; + align-self: center; + position: relative; + width: 100%; + background: var(--card-back-color); + color: var(--card-fore-color); + border: 0.0714285714rem solid var(--card-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); + overflow: hidden; } + @media screen and (min-width: 320px) { + .card { + max-width: 320px; } } + .card > .sectione { + background: var(--card-back-color); + color: var(--card-fore-color); + box-sizing: border-box; + margin: 0; + border: 0; + border-radius: 0; + border-bottom: 0.0714285714rem solid var(--card-border-color); + padding: var(--universal-padding); + width: 100%; } + .card > .sectione.media { + height: 200px; + padding: 0; + -o-object-fit: cover; + object-fit: cover; } + .card > .sectione:last-child { + border-bottom: 0; } + +/* + Custom elements for card elements. +*/ +@media screen and (min-width: 240px) { + .card.small { + max-width: 240px; } } +@media screen and (min-width: 480px) { + .card.large { + max-width: 480px; } } +.card.fluid { + max-width: 100%; + width: auto; } + +.card.warning { + --card-back-color: #e5b8b7; + --card-fore-color: #3b234b; + --card-border-color: #8c0078; } + +.card.error { + --card-back-color: #464650; + --card-fore-color: #ffffff; + --card-border-color: #8c0078; } + +.card > .sectione.dark { + --card-back-color: #3b234b; + --card-fore-color: #ffffff; } + +.card > .sectione.double-padded { + padding: calc(1.5 * var(--universal-padding)); } + +/* + Definitions for forms and input elements. +*/ +/* Input_control module CSS variable definitions */ +:root { + --form-back-color: #ffe97f; + --form-fore-color: #03234b; + --form-border-color: #3cb4e6; + --input-back-color: #ffffff; + --input-fore-color: #03234b; + --input-border-color: #3cb4e6; + --input-focus-color: #0288d1; + --input-invalid-color: #d32f2f; + --button-back-color: #e2e2e2; + --button-hover-back-color: #dcdcdc; + --button-fore-color: #212121; + --button-border-color: transparent; + --button-hover-border-color: transparent; + --button-group-border-color: rgba(124, 124, 124, 0.54); } + +form { + background: var(--form-back-color); + color: var(--form-fore-color); + border: 0.0714285714rem solid var(--form-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); + padding: calc(2 * var(--universal-padding)) var(--universal-padding); } + +fieldset { + border: 0.0714285714rem solid var(--form-border-color); + border-radius: var(--universal-border-radius); + margin: calc(var(--universal-margin) / 4); + padding: var(--universal-padding); } + +legend { + box-sizing: border-box; + display: table; + max-width: 100%; + white-space: normal; + font-weight: 500; + padding: calc(var(--universal-padding) / 2); } + +label { + padding: calc(var(--universal-padding) / 2) var(--universal-padding); } + +.input-group { + display: inline-block; } + .input-group.fluid { + display: flex; + align-items: center; + justify-content: center; } + .input-group.fluid > input { + max-width: 100%; + flex-grow: 1; + flex-basis: 0px; } + @media screen and (max-width: 499px) { + .input-group.fluid { + align-items: stretch; + flex-direction: column; } } + .input-group.vertical { + display: flex; + align-items: stretch; + flex-direction: column; } + .input-group.vertical > input { + max-width: 100%; + flex-grow: 1; + flex-basis: 0px; } + +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { + height: auto; } + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; } + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"], +[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select { + box-sizing: border-box; + background: var(--input-back-color); + color: var(--input-fore-color); + border: 0.0714285714rem solid var(--input-border-color); + border-radius: var(--universal-border-radius); + margin: calc(var(--universal-margin) / 2); + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); } + +input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus { + border-color: var(--input-focus-color); + box-shadow: none; } +input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid { + border-color: var(--input-invalid-color); + box-shadow: none; } +input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] { + background: var(--secondary-back-color); } + +select { + max-width: 100%; } + +option { + overflow: hidden; + text-overflow: ellipsis; } + +[type="checkbox"], [type="radio"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + height: calc(1rem + var(--universal-padding) / 2); + width: calc(1rem + var(--universal-padding) / 2); + vertical-align: text-bottom; + padding: 0; + flex-basis: calc(1rem + var(--universal-padding) / 2) !important; + flex-grow: 0 !important; } + [type="checkbox"]:checked:before, [type="radio"]:checked:before { + position: absolute; } + +[type="checkbox"]:checked:before { + content: '\2713'; + font-family: sans-serif; + font-size: calc(1rem + var(--universal-padding) / 2); + top: calc(0rem - var(--universal-padding)); + left: calc(var(--universal-padding) / 4); } + +[type="radio"] { + border-radius: 100%; } + [type="radio"]:checked:before { + border-radius: 100%; + content: ''; + top: calc(0.0714285714rem + var(--universal-padding) / 2); + left: calc(0.0714285714rem + var(--universal-padding) / 2); + background: var(--input-fore-color); + width: 0.5rem; + height: 0.5rem; } + +:placeholder-shown { + color: var(--input-fore-color); } + +::-ms-placeholder { + color: var(--input-fore-color); + opacity: 0.54; } + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; } + +button, html [type="button"], [type="reset"], [type="submit"] { + -webkit-appearance: button; } + +button { + overflow: visible; + text-transform: none; } + +button, [type="button"], [type="submit"], [type="reset"], +a.button, label.button, .button, +a[role="button"], label[role="button"], [role="button"] { + display: inline-block; + background: var(--button-back-color); + color: var(--button-fore-color); + border: 0.0714285714rem solid var(--button-border-color); + border-radius: var(--universal-border-radius); + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); + margin: var(--universal-margin); + text-decoration: none; + cursor: pointer; + transition: background 0.3s; } + button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus, + a.button:hover, + a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus, + a[role="button"]:hover, + a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus { + background: var(--button-hover-back-color); + border-color: var(--button-hover-border-color); } + +input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] { + cursor: not-allowed; + opacity: 0.75; } + +.button-group { + display: flex; + border: 0.0714285714rem solid var(--button-group-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); } + .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] { + margin: 0; + max-width: 100%; + flex: 1 1 auto; + text-align: center; + border: 0; + border-radius: 0; + box-shadow: none; } + .button-group > :not(:first-child) { + border-left: 0.0714285714rem solid var(--button-group-border-color); } + @media screen and (max-width: 499px) { + .button-group { + flex-direction: column; } + .button-group > :not(:first-child) { + border: 0; + border-top: 0.0714285714rem solid var(--button-group-border-color); } } + +/* + Custom elements for forms and input elements. +*/ +button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary { + --button-back-color: #1976d2; + --button-fore-color: #f8f8f8; } + button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus { + --button-hover-back-color: #1565c0; } + +button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary { + --button-back-color: #d32f2f; + --button-fore-color: #f8f8f8; } + button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus { + --button-hover-back-color: #c62828; } + +button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary { + --button-back-color: #308732; + --button-fore-color: #f8f8f8; } + button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus { + --button-hover-back-color: #277529; } + +button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse { + --button-back-color: #212121; + --button-fore-color: #f8f8f8; } + button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus { + --button-hover-back-color: #111; } + +button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small { + padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding)); + margin: var(--universal-margin); } + +button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large { + padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding)); + margin: var(--universal-margin); } + +/* + Definitions for navigation elements. +*/ +/* Navigation module CSS variable definitions */ +:root { + --header-back-color: #03234b; + --header-hover-back-color: #ffd200; + --header-fore-color: #ffffff; + --header-border-color: #3cb4e6; + --nav-back-color: #ffffff; + --nav-hover-back-color: #ffe97f; + --nav-fore-color: #e6007e; + --nav-border-color: #3cb4e6; + --nav-link-color: #3cb4e6; + --footer-fore-color: #ffffff; + --footer-back-color: #03234b; + --footer-border-color: #3cb4e6; + --footer-link-color: #3cb4e6; + --drawer-back-color: #ffffff; + --drawer-hover-back-color: #ffe97f; + --drawer-border-color: #3cb4e6; + --drawer-close-color: #e6007e; } + +header { + height: 2.75rem; + background: var(--header-back-color); + color: var(--header-fore-color); + border-bottom: 0.0714285714rem solid var(--header-border-color); + padding: calc(var(--universal-padding) / 4) 0; + white-space: nowrap; + overflow-x: auto; + overflow-y: hidden; } + header.row { + box-sizing: content-box; } + header .logo { + color: var(--header-fore-color); + font-size: 1.75rem; + padding: var(--universal-padding) calc(2 * var(--universal-padding)); + text-decoration: none; } + header button, header [type="button"], header .button, header [role="button"] { + box-sizing: border-box; + position: relative; + top: calc(0rem - var(--universal-padding) / 4); + height: calc(3.1875rem + var(--universal-padding) / 2); + background: var(--header-back-color); + line-height: calc(3.1875rem - var(--universal-padding) * 1.5); + text-align: center; + color: var(--header-fore-color); + border: 0; + border-radius: 0; + margin: 0; + text-transform: uppercase; } + header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus { + background: var(--header-hover-back-color); } + +nav { + background: var(--nav-back-color); + color: var(--nav-fore-color); + border: 0.0714285714rem solid var(--nav-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); } + nav * { + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); } + nav a, nav a:visited { + display: block; + color: var(--nav-link-color); + border-radius: var(--universal-border-radius); + transition: background 0.3s; } + nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus { + text-decoration: none; + background: var(--nav-hover-back-color); } + nav .sublink-1 { + position: relative; + margin-left: calc(2 * var(--universal-padding)); } + nav .sublink-1:before { + position: absolute; + left: calc(var(--universal-padding) - 1 * var(--universal-padding)); + top: -0.0714285714rem; + content: ''; + height: 100%; + border: 0.0714285714rem solid var(--nav-border-color); + border-left: 0; } + nav .sublink-2 { + position: relative; + margin-left: calc(4 * var(--universal-padding)); } + nav .sublink-2:before { + position: absolute; + left: calc(var(--universal-padding) - 3 * var(--universal-padding)); + top: -0.0714285714rem; + content: ''; + height: 100%; + border: 0.0714285714rem solid var(--nav-border-color); + border-left: 0; } + +footer { + background: var(--footer-back-color); + color: var(--footer-fore-color); + border-top: 0.0714285714rem solid var(--footer-border-color); + padding: calc(2 * var(--universal-padding)) var(--universal-padding); + font-size: 0.875rem; } + footer a, footer a:visited { + color: var(--footer-link-color); } + +header.sticky { + position: -webkit-sticky; + position: sticky; + z-index: 1101; + top: 0; } + +footer.sticky { + position: -webkit-sticky; + position: sticky; + z-index: 1101; + bottom: 0; } + +.drawer-toggle:before { + display: inline-block; + position: relative; + vertical-align: bottom; + content: '\00a0\2261\00a0'; + font-family: sans-serif; + font-size: 1.5em; } +@media screen and (min-width: 500px) { + .drawer-toggle:not(.persistent) { + display: none; } } + +[type="checkbox"].drawer { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); } + [type="checkbox"].drawer + * { + display: block; + box-sizing: border-box; + position: fixed; + top: 0; + width: 320px; + height: 100vh; + overflow-y: auto; + background: var(--drawer-back-color); + border: 0.0714285714rem solid var(--drawer-border-color); + border-radius: 0; + margin: 0; + z-index: 1110; + right: -320px; + transition: right 0.3s; } + [type="checkbox"].drawer + * .drawer-close { + position: absolute; + top: var(--universal-margin); + right: var(--universal-margin); + z-index: 1111; + width: 2rem; + height: 2rem; + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + margin: 0; + cursor: pointer; + transition: background 0.3s; } + [type="checkbox"].drawer + * .drawer-close:before { + display: block; + content: '\00D7'; + color: var(--drawer-close-color); + position: relative; + font-family: sans-serif; + font-size: 2rem; + line-height: 1; + text-align: center; } + [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus { + background: var(--drawer-hover-back-color); } + @media screen and (max-width: 320px) { + [type="checkbox"].drawer + * { + width: 100%; } } + [type="checkbox"].drawer:checked + * { + right: 0; } + @media screen and (min-width: 500px) { + [type="checkbox"].drawer:not(.persistent) + * { + position: static; + height: 100%; + z-index: 1100; } + [type="checkbox"].drawer:not(.persistent) + * .drawer-close { + display: none; } } + +/* + Definitions for the responsive table component. +*/ +/* Table module CSS variable definitions. */ +:root { + --table-border-color: #03234b; + --table-border-separator-color: #03234b; + --table-head-back-color: #03234b; + --table-head-fore-color: #ffffff; + --table-body-back-color: #ffffff; + --table-body-fore-color: #03234b; + --table-body-alt-back-color: #f4f4f4; } + +table { + border-collapse: separate; + border-spacing: 0; + margin: 0; + display: flex; + flex: 0 1 auto; + flex-flow: row wrap; + padding: var(--universal-padding); + padding-top: 0; } + table caption { + font-size: 1rem; + margin: calc(2 * var(--universal-margin)) 0; + max-width: 100%; + flex: 0 0 100%; } + table thead, table tbody { + display: flex; + flex-flow: row wrap; + border: 0.0714285714rem solid var(--table-border-color); } + table thead { + z-index: 999; + border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; + border-bottom: 0.0714285714rem solid var(--table-border-separator-color); } + table tbody { + border-top: 0; + margin-top: calc(0 - var(--universal-margin)); + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); } + table tr { + display: flex; + padding: 0; } + table th, table td { + padding: calc(0.5 * var(--universal-padding)); + font-size: 0.9rem; } + table th { + text-align: left; + background: var(--table-head-back-color); + color: var(--table-head-fore-color); } + table td { + background: var(--table-body-back-color); + color: var(--table-body-fore-color); + border-top: 0.0714285714rem solid var(--table-border-color); } + +table:not(.horizontal) { + overflow: auto; + max-height: 100%; } + table:not(.horizontal) thead, table:not(.horizontal) tbody { + max-width: 100%; + flex: 0 0 100%; } + table:not(.horizontal) tr { + flex-flow: row wrap; + flex: 0 0 100%; } + table:not(.horizontal) th, table:not(.horizontal) td { + flex: 1 0 0%; + overflow: hidden; + text-overflow: ellipsis; } + table:not(.horizontal) thead { + position: sticky; + top: 0; } + table:not(.horizontal) tbody tr:first-child td { + border-top: 0; } + +table.horizontal { + border: 0; } + table.horizontal thead, table.horizontal tbody { + border: 0; + flex: .2 0 0; + flex-flow: row nowrap; } + table.horizontal tbody { + overflow: auto; + justify-content: space-between; + flex: .8 0 0; + margin-left: 0; + padding-bottom: calc(var(--universal-padding) / 4); } + table.horizontal tr { + flex-direction: column; + flex: 1 0 auto; } + table.horizontal th, table.horizontal td { + width: auto; + border: 0; + border-bottom: 0.0714285714rem solid var(--table-border-color); } + table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) { + border-top: 0; } + table.horizontal th { + text-align: right; + border-left: 0.0714285714rem solid var(--table-border-color); + border-right: 0.0714285714rem solid var(--table-border-separator-color); } + table.horizontal thead tr:first-child { + padding-left: 0; } + table.horizontal th:first-child, table.horizontal td:first-child { + border-top: 0.0714285714rem solid var(--table-border-color); } + table.horizontal tbody tr:last-child td { + border-right: 0.0714285714rem solid var(--table-border-color); } + table.horizontal tbody tr:last-child td:first-child { + border-top-right-radius: 0.25rem; } + table.horizontal tbody tr:last-child td:last-child { + border-bottom-right-radius: 0.25rem; } + table.horizontal thead tr:first-child th:first-child { + border-top-left-radius: 0.25rem; } + table.horizontal thead tr:first-child th:last-child { + border-bottom-left-radius: 0.25rem; } + +@media screen and (max-width: 499px) { + table, table.horizontal { + border-collapse: collapse; + border: 0; + width: 100%; + display: table; } + table thead, table th, table.horizontal thead, table.horizontal th { + border: 0; + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); } + table tbody, table.horizontal tbody { + border: 0; + display: table-row-group; } + table tr, table.horizontal tr { + display: block; + border: 0.0714285714rem solid var(--table-border-color); + border-radius: var(--universal-border-radius); + background: #ffffff; + padding: var(--universal-padding); + margin: var(--universal-margin); + margin-bottom: calc(1 * var(--universal-margin)); } + table th, table td, table.horizontal th, table.horizontal td { + width: auto; } + table td, table.horizontal td { + display: block; + border: 0; + text-align: right; } + table td:before, table.horizontal td:before { + content: attr(data-label); + float: left; + font-weight: 600; } + table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child { + border-top: 0; } + table tbody tr:last-child td, table.horizontal tbody tr:last-child td { + border-right: 0; } } +table tr:nth-of-type(2n) > td { + background: var(--table-body-alt-back-color); } + +@media screen and (max-width: 500px) { + table tr:nth-of-type(2n) { + background: var(--table-body-alt-back-color); } } +:root { + --table-body-hover-back-color: #90caf9; } + +table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td { + background: var(--table-body-hover-back-color); } + +@media screen and (max-width: 500px) { + table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td { + background: var(--table-body-hover-back-color); } } +/* + Definitions for contextual background elements, toasts and tooltips. +*/ +/* Contextual module CSS variable definitions */ +:root { + --mark-back-color: #3cb4e6; + --mark-fore-color: #ffffff; } + +mark { + background: var(--mark-back-color); + color: var(--mark-fore-color); + font-size: 0.95em; + line-height: 1em; + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) var(--universal-padding); } + mark.inline-block { + display: inline-block; + font-size: 1em; + line-height: 1.4; + padding: calc(var(--universal-padding) / 2) var(--universal-padding); } + +:root { + --toast-back-color: #424242; + --toast-fore-color: #fafafa; } + +.toast { + position: fixed; + bottom: calc(var(--universal-margin) * 3); + left: 50%; + transform: translate(-50%, -50%); + z-index: 1111; + color: var(--toast-fore-color); + background: var(--toast-back-color); + border-radius: calc(var(--universal-border-radius) * 16); + padding: var(--universal-padding) calc(var(--universal-padding) * 3); } + +:root { + --tooltip-back-color: #212121; + --tooltip-fore-color: #fafafa; } + +.tooltip { + position: relative; + display: inline-block; } + .tooltip:before, .tooltip:after { + position: absolute; + opacity: 0; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + transition: all 0.3s; + z-index: 1010; + left: 50%; } + .tooltip:not(.bottom):before, .tooltip:not(.bottom):after { + bottom: 75%; } + .tooltip.bottom:before, .tooltip.bottom:after { + top: 75%; } + .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after { + opacity: 1; + clip: auto; + -webkit-clip-path: inset(0%); + clip-path: inset(0%); } + .tooltip:before { + content: ''; + background: transparent; + border: var(--universal-margin) solid transparent; + left: calc(50% - var(--universal-margin)); } + .tooltip:not(.bottom):before { + border-top-color: #212121; } + .tooltip.bottom:before { + border-bottom-color: #212121; } + .tooltip:after { + content: attr(aria-label); + color: var(--tooltip-fore-color); + background: var(--tooltip-back-color); + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + white-space: nowrap; + transform: translateX(-50%); } + .tooltip:not(.bottom):after { + margin-bottom: calc(2 * var(--universal-margin)); } + .tooltip.bottom:after { + margin-top: calc(2 * var(--universal-margin)); } + +:root { + --modal-overlay-color: rgba(0, 0, 0, 0.45); + --modal-close-color: #e6007e; + --modal-close-hover-color: #ffe97f; } + +[type="checkbox"].modal { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); } + [type="checkbox"].modal + div { + position: fixed; + top: 0; + left: 0; + display: none; + width: 100vw; + height: 100vh; + background: var(--modal-overlay-color); } + [type="checkbox"].modal + div .card { + margin: 0 auto; + max-height: 50vh; + overflow: auto; } + [type="checkbox"].modal + div .card .modal-close { + position: absolute; + top: 0; + right: 0; + width: 1.75rem; + height: 1.75rem; + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + margin: 0; + cursor: pointer; + transition: background 0.3s; } + [type="checkbox"].modal + div .card .modal-close:before { + display: block; + content: '\00D7'; + color: var(--modal-close-color); + position: relative; + font-family: sans-serif; + font-size: 1.75rem; + line-height: 1; + text-align: center; } + [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus { + background: var(--modal-close-hover-color); } + [type="checkbox"].modal:checked + div { + display: flex; + flex: 0 1 auto; + z-index: 1200; } + [type="checkbox"].modal:checked + div .card .modal-close { + z-index: 1211; } + +:root { + --collapse-label-back-color: #03234b; + --collapse-label-fore-color: #ffffff; + --collapse-label-hover-back-color: #3cb4e6; + --collapse-selected-label-back-color: #3cb4e6; + --collapse-border-color: var(--collapse-label-back-color); + --collapse-selected-border-color: #ceecf8; + --collapse-content-back-color: #ffffff; + --collapse-selected-label-border-color: #3cb4e6; } + +.collapse { + width: calc(100% - 2 * var(--universal-margin)); + opacity: 1; + display: flex; + flex-direction: column; + margin: var(--universal-margin); + border-radius: var(--universal-border-radius); } + .collapse > [type="radio"], .collapse > [type="checkbox"] { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); } + .collapse > label { + flex-grow: 1; + display: inline-block; + height: 1.25rem; + cursor: pointer; + transition: background 0.2s; + color: var(--collapse-label-fore-color); + background: var(--collapse-label-back-color); + border: 0.0714285714rem solid var(--collapse-selected-border-color); + padding: calc(1.25 * var(--universal-padding)); } + .collapse > label:hover, .collapse > label:focus { + background: var(--collapse-label-hover-back-color); } + .collapse > label + div { + flex-basis: auto; + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + transition: max-height 0.3s; + max-height: 1px; } + .collapse > :checked + label { + background: var(--collapse-selected-label-back-color); + border-color: var(--collapse-selected-label-border-color); } + .collapse > :checked + label + div { + box-sizing: border-box; + position: relative; + width: 100%; + height: auto; + overflow: auto; + margin: 0; + background: var(--collapse-content-back-color); + border: 0.0714285714rem solid var(--collapse-selected-border-color); + border-top: 0; + padding: var(--universal-padding); + clip: auto; + -webkit-clip-path: inset(0%); + clip-path: inset(0%); + max-height: 100%; } + .collapse > label:not(:first-of-type) { + border-top: 0; } + .collapse > label:first-of-type { + border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; } + .collapse > label:last-of-type:not(:first-of-type) { + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); } + .collapse > label:last-of-type:first-of-type { + border-radius: var(--universal-border-radius); } + .collapse > :checked:last-of-type:not(:first-of-type) + label { + border-radius: 0; } + .collapse > :checked:last-of-type + label + div { + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); } + +/* + Custom elements for contextual background elements, toasts and tooltips. +*/ +mark.tertiary { + --mark-back-color: #3cb4e6; } + +mark.tag { + padding: calc(var(--universal-padding)/2) var(--universal-padding); + border-radius: 1em; } + +/* + Definitions for progress elements and spinners. +*/ +/* Progress module CSS variable definitions */ +:root { + --progress-back-color: #3cb4e6; + --progress-fore-color: #555; } + +progress { + display: block; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 0.75rem; + width: calc(100% - 2 * var(--universal-margin)); + margin: var(--universal-margin); + border: 0; + border-radius: calc(2 * var(--universal-border-radius)); + background: var(--progress-back-color); + color: var(--progress-fore-color); } + progress::-webkit-progress-value { + background: var(--progress-fore-color); + border-top-left-radius: calc(2 * var(--universal-border-radius)); + border-bottom-left-radius: calc(2 * var(--universal-border-radius)); } + progress::-webkit-progress-bar { + background: var(--progress-back-color); } + progress::-moz-progress-bar { + background: var(--progress-fore-color); + border-top-left-radius: calc(2 * var(--universal-border-radius)); + border-bottom-left-radius: calc(2 * var(--universal-border-radius)); } + progress[value="1000"]::-webkit-progress-value { + border-radius: calc(2 * var(--universal-border-radius)); } + progress[value="1000"]::-moz-progress-bar { + border-radius: calc(2 * var(--universal-border-radius)); } + progress.inline { + display: inline-block; + vertical-align: middle; + width: 60%; } + +:root { + --spinner-back-color: #ddd; + --spinner-fore-color: #555; } + +@keyframes spinner-donut-anim { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } +.spinner { + display: inline-block; + margin: var(--universal-margin); + border: 0.25rem solid var(--spinner-back-color); + border-left: 0.25rem solid var(--spinner-fore-color); + border-radius: 50%; + width: 1.25rem; + height: 1.25rem; + animation: spinner-donut-anim 1.2s linear infinite; } + +/* + Custom elements for progress bars and spinners. +*/ +progress.primary { + --progress-fore-color: #1976d2; } + +progress.secondary { + --progress-fore-color: #d32f2f; } + +progress.tertiary { + --progress-fore-color: #308732; } + +.spinner.primary { + --spinner-fore-color: #1976d2; } + +.spinner.secondary { + --spinner-fore-color: #d32f2f; } + +.spinner.tertiary { + --spinner-fore-color: #308732; } + +/* + Definitions for icons - powered by Feather (https://feathericons.com/). +*/ +span[class^='icon-'] { + display: inline-block; + height: 1em; + width: 1em; + vertical-align: -0.125em; + background-size: contain; + margin: 0 calc(var(--universal-margin) / 4); } + span[class^='icon-'].secondary { + -webkit-filter: invert(25%); + filter: invert(25%); } + span[class^='icon-'].inverse { + -webkit-filter: invert(100%); + filter: invert(100%); } + +span.icon-alert { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-bookmark { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); } +span.icon-calendar { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-credit { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-edit { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); } +span.icon-link { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-help { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-home { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); } +span.icon-info { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-lock { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); } +span.icon-mail { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); } +span.icon-location { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); } +span.icon-phone { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); } +span.icon-rss { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); } +span.icon-search { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-settings { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); } +span.icon-share { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-cart { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); } +span.icon-upload { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); } +span.icon-user { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); } + +/* + Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26). +*/ +span.icon-st-update { + background-image: url("Update.svg"); } +span.icon-st-add { + background-image: url("Add button.svg"); } + +/* + Definitions for utilities and helper classes. +*/ +/* Utility module CSS variable definitions */ +:root { + --generic-border-color: rgba(0, 0, 0, 0.3); + --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); } + +.hidden { + display: none !important; } + +.visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; } + +.bordered { + border: 0.0714285714rem solid var(--generic-border-color) !important; } + +.rounded { + border-radius: var(--universal-border-radius) !important; } + +.circular { + border-radius: 50% !important; } + +.shadowed { + box-shadow: var(--generic-box-shadow) !important; } + +.responsive-margin { + margin: calc(var(--universal-margin) / 4) !important; } + @media screen and (min-width: 500px) { + .responsive-margin { + margin: calc(var(--universal-margin) / 2) !important; } } + @media screen and (min-width: 1280px) { + .responsive-margin { + margin: var(--universal-margin) !important; } } + +.responsive-padding { + padding: calc(var(--universal-padding) / 4) !important; } + @media screen and (min-width: 500px) { + .responsive-padding { + padding: calc(var(--universal-padding) / 2) !important; } } + @media screen and (min-width: 1280px) { + .responsive-padding { + padding: var(--universal-padding) !important; } } + +@media screen and (max-width: 499px) { + .hidden-sm { + display: none !important; } } +@media screen and (min-width: 500px) and (max-width: 1279px) { + .hidden-md { + display: none !important; } } +@media screen and (min-width: 1280px) { + .hidden-lg { + display: none !important; } } +@media screen and (max-width: 499px) { + .visually-hidden-sm { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; } } +@media screen and (min-width: 500px) and (max-width: 1279px) { + .visually-hidden-md { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; } } +@media screen and (min-width: 1280px) { + .visually-hidden-lg { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; } } + +/*# sourceMappingURL=mini-custom.css.map */ + +img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; } +img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;} + +.figure { + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; +} \ No newline at end of file diff --git a/_htmresc/st_logo_2020.png b/_htmresc/st_logo_2020.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cebb5ac70e0594cbe37a6b60036a80ef3bed37 GIT binary patch literal 7520 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"NJQ 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 b^}%0^qYmp2WD(pA|JtZ4>nPPKybJpu3@X?! literal 0 HcmV?d00001 diff --git a/stm32wlxx_STS.c b/stm32wlxx_STS.c new file mode 100644 index 0000000..0644e27 --- /dev/null +++ b/stm32wlxx_STS.c @@ -0,0 +1,676 @@ +/** + ****************************************************************************** + * @file stm32wlxx_STS.c + * @author MCD Application Team + * @brief This file provides set of firmware functions to manage: + * - LEDs and push-buttons available on STM32WLXX-Nucleo + * Kit from STMicroelectronics + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_STS.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL + * @brief This file provides set of firmware functions to manage LEDs and push-buttons + * on STM32WLXX-Nucleo Kit from STMicroelectronics. + * @{ + */ + + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Variables LOW LEVEL Exported Variables + * @{ + */ +EXTI_HandleTypeDef hpb_exti[BUTTONn]; +#if (USE_BSP_COM_FEATURE > 0) +UART_HandleTypeDef hcom_uart[COMn]; +#endif /* (USE_BSP_COM_FEATURE > 0) */ +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Private_Defines LOW LEVEL Private Defines + * @{ + */ +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Private_TypesDefinitions LOW LEVEL Private Typedef + * @{ + */ +typedef void (* BSP_EXTI_LineCallback) (void); +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Private_Variables LOW LEVEL Private Variables + * @{ + */ +static GPIO_TypeDef* LED_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT, LED3_GPIO_PORT}; + +static const uint16_t LED_PIN[LEDn] = {LED1_PIN, LED2_PIN, LED3_PIN}; + +static GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {BUTTON_SW1_GPIO_PORT, BUTTON_SW2_GPIO_PORT, BUTTON_SW3_GPIO_PORT}; + +static const uint16_t BUTTON_PIN[BUTTONn] = {BUTTON_SW1_PIN, BUTTON_SW2_PIN, BUTTON_SW3_PIN}; + +static const IRQn_Type BUTTON_IRQn[BUTTONn] = {BUTTON_SW1_EXTI_IRQn, BUTTON_SW2_EXTI_IRQn, BUTTON_SW3_EXTI_IRQn}; + +#if (USE_BSP_COM_FEATURE > 0) +static USART_TypeDef* COM_USART[COMn] = {COM1_UART}; + +#if (USE_COM_LOG > 0) +static COM_TypeDef COM_ActiveLogPort = COM1; +#endif + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +static uint32_t IsComMspCbValid[COMn] = {0}; +#endif +#endif /* (USE_BSP_COM_FEATURE > 0) */ +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Private_Functions LOW LEVEL Private Functions + * @{ + */ +static void BUTTON_SW1_EXTI_Callback(void); +static void BUTTON_SW2_EXTI_Callback(void); +static void BUTTON_SW3_EXTI_Callback(void); +#if (USE_BSP_COM_FEATURE > 0) +static void COM1_MspInit(UART_HandleTypeDef *huart); +static void COM1_MspDeInit(UART_HandleTypeDef *huart); +#endif /* (USE_BSP_COM_FEATURE > 0) */ +/** + * @} + */ + + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Functions + * @{ + */ + +/** + * @brief This method returns the STM32WLXX NUCLEO BSP Driver revision + * @retval version: 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t BSP_GetVersion(void) +{ + return (int32_t)__STM32WLXX_NUCLEO_BSP_VERSION; +} + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_LED_Functions + * @{ + */ + +/** + * @brief Configures LED GPIO. + * @param Led: LED to be configured. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Init(Led_TypeDef Led) +{ + GPIO_InitTypeDef gpio_init_structure = {0}; + + /* Enable the GPIO_LED Clock */ + LEDx_GPIO_CLK_ENABLE(Led); + + /* Configure the GPIO_LED pin */ + gpio_init_structure.Pin = LED_PIN[Led]; + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH; + + HAL_GPIO_Init(LED_PORT[Led], &gpio_init_structure); + HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET); + + return BSP_ERROR_NONE; +} + +/** + * @brief DeInit LEDs. + * @param Led: LED to be de-init. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @note Led DeInit does not disable the GPIO clock nor disable the Mfx + * @retval BSP status + */ +int32_t BSP_LED_DeInit(Led_TypeDef Led) +{ + /* Turn off LED */ + HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET); + + /* DeInit the GPIO_LED pin */ + HAL_GPIO_DeInit(LED_PORT[Led], LED_PIN[Led]); + + return BSP_ERROR_NONE; +} + +/** + * @brief Turns selected LED On. + * @param Led: Specifies the Led to be set on. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_On(Led_TypeDef Led) +{ + HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_SET); + + return BSP_ERROR_NONE; +} + +/** + * @brief Turns selected LED Off. + * @param Led: Specifies the Led to be set off. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Off(Led_TypeDef Led) +{ + HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET); + + return BSP_ERROR_NONE; +} + +/** + * @brief Toggles the selected LED. + * @param Led: Specifies the Led to be toggled. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Toggle(Led_TypeDef Led) +{ + HAL_GPIO_TogglePin(LED_PORT[Led], LED_PIN[Led]); + + return BSP_ERROR_NONE; +} + +/** + * @brief Get the status of the selected LED. + * @param Led Specifies the Led to get its state. + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval LED status + */ +int32_t BSP_LED_GetState(Led_TypeDef Led) +{ + return (int32_t)HAL_GPIO_ReadPin(LED_PORT[Led], LED_PIN[Led]); +} + +/** + * @} + */ + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON_Functions + * @{ + */ + +/** + * @brief Configures Button GPIO and EXTI Line. + * @param Button: Specifies the Button to be configured. + * This parameter can be one of following parameters: + * @arg BUTTON_SW1 + * @arg BUTTON_SW2 + * @arg BUTTON_SW3 + * @param ButtonMode: Specifies Button mode. + * This parameter can be one of following parameters: + * @arg BUTTON_MODE_GPIO: Button will be used as simple IO + * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line with interrupt + * generation capability + * @retval BSP status + */ +int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) +{ + GPIO_InitTypeDef gpio_init_structure = {0}; + static BSP_EXTI_LineCallback button_callback[BUTTONn] = {BUTTON_SW1_EXTI_Callback, BUTTON_SW2_EXTI_Callback, BUTTON_SW3_EXTI_Callback}; + static uint32_t button_interrupt_priority[BUTTONn] = {BSP_BUTTON_USER_IT_PRIORITY, BSP_BUTTON_USER_IT_PRIORITY, BSP_BUTTON_USER_IT_PRIORITY}; + static const uint32_t button_exti_line[BUTTONn] = {BUTTON_SW1_EXTI_LINE, BUTTON_SW2_EXTI_LINE, BUTTON_SW3_EXTI_LINE}; + + /* Enable the BUTTON Clock */ + BUTTONx_GPIO_CLK_ENABLE(Button); + + gpio_init_structure.Pin = BUTTON_PIN[Button]; + gpio_init_structure.Pull = GPIO_PULLUP; + gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH; + + if(ButtonMode == BUTTON_MODE_GPIO) + { + /* Configure Button pin as input */ + gpio_init_structure.Mode = GPIO_MODE_INPUT; + HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); + } + else /* (ButtonMode == BUTTON_MODE_EXTI) */ + { + /* Configure Button pin as input with External interrupt */ + gpio_init_structure.Mode = GPIO_MODE_IT_FALLING; + + HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); + + (void)HAL_EXTI_GetHandle(&hpb_exti[Button], button_exti_line[Button]); + (void)HAL_EXTI_RegisterCallback(&hpb_exti[Button], HAL_EXTI_COMMON_CB_ID, button_callback[Button]); + + /* Enable and set Button EXTI Interrupt to the lowest priority */ + HAL_NVIC_SetPriority((BUTTON_IRQn[Button]), button_interrupt_priority[Button], 0x00); + HAL_NVIC_EnableIRQ((BUTTON_IRQn[Button])); + } + + return BSP_ERROR_NONE; +} + +/** + * @brief Push Button DeInit. + * @param Button: Button to be configured + * This parameter can be one of following parameters: + * @arg BUTTON_SW1 + * @arg BUTTON_SW2 + * @arg BUTTON_SW3 + * @note PB DeInit does not disable the GPIO clock + * @retval BSP status + */ +int32_t BSP_PB_DeInit(Button_TypeDef Button) +{ + HAL_NVIC_DisableIRQ((BUTTON_IRQn[Button])); + HAL_GPIO_DeInit(BUTTON_PORT[Button], BUTTON_PIN[Button]); + + return BSP_ERROR_NONE; +} + +/** + * @brief Returns the selected Button state. + * @param Button: Specifies the Button to be checked. + * This parameter can be one of following parameters: + * @arg BUTTON_SW1 + * @arg BUTTON_SW2 + * @arg BUTTON_SW3 + * @retval The Button GPIO pin value. + */ +int32_t BSP_PB_GetState(Button_TypeDef Button) +{ + return (int32_t)HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]); +} + +/** + * @brief This function handles Push-Button interrupt requests. + * @param Button Specifies the pin connected EXTI line + * @retval None + */ +void BSP_PB_IRQHandler(Button_TypeDef Button) +{ + HAL_EXTI_IRQHandler(&hpb_exti[Button]); +} + +/** + * @brief BSP Push Button callback + * @param Button: Specifies the Button to be checked. + * This parameter can be one of following parameters: + * @arg BUTTON_SW1 + * @arg BUTTON_SW2 + * @arg BUTTON_SW3 + * @retval None. + */ +__weak void BSP_PB_Callback(Button_TypeDef Button) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(Button); + + /* This function should be implemented by the user application. + It is called into this driver when an event on Button is triggered. */ +} + +/** + * @} + */ + +#if (USE_BSP_COM_FEATURE > 0) +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_COM_Functions + * @{ + */ +/** + * @brief Configures COM port. + * @param COM COM port to be configured. + * This parameter can be COM1 + * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART peripheral. + * @retval BSP error code + */ +int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init) +{ + int32_t ret = BSP_ERROR_NONE; + + if(COM > COMn) + { + ret = BSP_ERROR_WRONG_PARAM; + } + else + { +#if (USE_HAL_UART_REGISTER_CALLBACKS == 0) + /* Init the UART Msp */ + COM1_MspInit(&hcom_uart[COM]); +#else + if(IsComMspCbValid == 0U) + { + if(BSP_COM_RegisterDefaultMspCallbacks(COM) != BSP_ERROR_NONE) + { + return BSP_ERROR_MSP_FAILURE; + } + } +#endif + + if(MX_LPUART1_Init(&hcom_uart[COM], COM_Init) != HAL_OK) + { + return BSP_ERROR_PERIPH_FAILURE; + } + } + + return ret; +} + +/** + * @brief DeInit COM port. + * @param COM COM port to be configured. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_DeInit(COM_TypeDef COM) +{ + int32_t ret = BSP_ERROR_NONE; + + if(COM >= COMn) + { + ret = BSP_ERROR_WRONG_PARAM; + } + else + { + /* USART configuration */ + hcom_uart[COM].Instance = COM_USART[COM]; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 0) + COM1_MspDeInit(&hcom_uart[COM]); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 0) */ + + if(HAL_UART_DeInit(&hcom_uart[COM]) != HAL_OK) + { + return BSP_ERROR_PERIPH_FAILURE; + } + } + + return ret; +} + +/** + * @brief Configures COM port. + * @param huart USART handle + * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART peripheral. + * @retval HAL error code + */ +__weak HAL_StatusTypeDef MX_LPUART1_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init) +{ + /* USART configuration */ + huart->Instance = COM_USART[COM1]; + huart->Init.BaudRate = COM_Init->BaudRate; + huart->Init.Mode = UART_MODE_TX_RX; + huart->Init.Parity = (uint32_t)COM_Init->Parity; + huart->Init.WordLength = COM_Init->WordLength; + huart->Init.StopBits = (uint32_t)COM_Init->StopBits; + huart->Init.HwFlowCtl = (uint32_t)COM_Init->HwFlowCtl; + huart->Init.OverSampling = UART_OVERSAMPLING_8; + + return HAL_UART_Init(huart); +} + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +/** + * @brief Register Default COM Msp Callbacks + * @param COM COM port to be configured. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM) +{ + int32_t ret = BSP_ERROR_NONE; + + if(COM >= COMn) + { + ret = BSP_ERROR_WRONG_PARAM; + } + else + { + __HAL_UART_RESET_HANDLE_STATE(&hcom_uart[COM]); + + /* Register default MspInit/MspDeInit Callback */ + if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, COM1_MspInit) != HAL_OK) + { + ret = BSP_ERROR_PERIPH_FAILURE; + } + else if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPDEINIT_CB_ID, COM1_MspDeInit) != HAL_OK) + { + ret = BSP_ERROR_PERIPH_FAILURE; + } + else + { + IsComMspCbValid[COM] = 1U; + } + } + + /* BSP status */ + return ret; +} + +/** + * @brief Register COM Msp Callback registering + * @param COM COM port to be configured. + * This parameter can be COM1 + * @param Callbacks pointer to COM1 MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback) +{ + int32_t ret = BSP_ERROR_NONE; + + if(COM >= COMn) + { + ret = BSP_ERROR_WRONG_PARAM; + } + else + { + __HAL_UART_RESET_HANDLE_STATE(&hcom_uart[COM]); + + /* Register MspInit/MspDeInit Callbacks */ + if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, Callback->pMspInitCb) != HAL_OK) + { + ret = BSP_ERROR_PERIPH_FAILURE; + } + else if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPDEINIT_CB_ID, Callback->pMspDeInitCb) != HAL_OK) + { + ret = BSP_ERROR_PERIPH_FAILURE; + } + else + { + IsComMspCbValid[COM] = 1U; + } + } + /* BSP status */ + return ret; +} +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +#if (USE_COM_LOG > 0) +/** + * @brief Select the active COM port. + * @param COM COM port to be activated. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_SelectLogPort(COM_TypeDef COM) +{ + if(COM_ActiveLogPort != COM) + { + COM_ActiveLogPort = COM; + } + return BSP_ERROR_NONE; +} + +/** + * @brief Redirect console output to COM + */ +#ifdef __GNUC__ +int __io_putchar (int ch) +#else +int fputc (int ch, FILE *f) +#endif /* __GNUC__ */ +{ + (void) HAL_UART_Transmit(&hcom_uart [COM_ActiveLogPort], (uint8_t *) &ch, 1, COM_POLL_TIMEOUT); + return ch; +} +#endif /* USE_COM_LOG */ +/** + * @} + */ +#endif /* (USE_BSP_COM_FEATURE > 0) */ + +/** + * @} + */ + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_Private_Functions + * @{ + */ + +/** + * @brief Button SW1 EXTI line detection callback. + * @retval None + */ +static void BUTTON_SW1_EXTI_Callback(void) +{ + BSP_PB_Callback(BUTTON_SW1); +} + +/** + * @brief Button SW2 EXTI line detection callback. + * @retval None + */ +static void BUTTON_SW2_EXTI_Callback(void) +{ + BSP_PB_Callback(BUTTON_SW2); +} + +/** + * @brief Button SW3 EXTI line detection callback. + * @retval None + */ +static void BUTTON_SW3_EXTI_Callback(void) +{ + BSP_PB_Callback(BUTTON_SW3); +} + +#if (USE_BSP_COM_FEATURE > 0) +/** + * @brief Initializes COM1 MSP. + * @param huart UART handle + * @retval BSP status + */ +static void COM1_MspInit(UART_HandleTypeDef *huart) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* Enable GPIO clock */ + COM1_TX_GPIO_CLK_ENABLE(); + COM1_RX_GPIO_CLK_ENABLE(); + + /* Enable USART clock */ + COM1_CLK_ENABLE(); + + /* Configure USART Tx as alternate function */ + gpio_init_structure.Pin = COM1_TX_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH; + gpio_init_structure.Pull = GPIO_PULLUP; + gpio_init_structure.Alternate = COM1_TX_AF; + HAL_GPIO_Init(COM1_TX_GPIO_PORT, &gpio_init_structure); + + /* Configure USART Rx as alternate function */ + gpio_init_structure.Pin = COM1_RX_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Alternate = COM1_RX_AF; + HAL_GPIO_Init(COM1_RX_GPIO_PORT, &gpio_init_structure); +} + +/** + * @brief DeInitialize COM1 MSP part + * @param huart UART handle + * @retval BSP status + */ +static void COM1_MspDeInit(UART_HandleTypeDef *huart) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* COM GPIO pin configuration */ + gpio_init_structure.Pin = COM1_TX_PIN; + HAL_GPIO_DeInit(COM1_TX_GPIO_PORT, gpio_init_structure.Pin); + + gpio_init_structure.Pin = COM1_RX_PIN; + HAL_GPIO_DeInit(COM1_RX_GPIO_PORT, gpio_init_structure.Pin); + + /* Disable USART clock */ + COM1_CLK_DISABLE(); +} +#endif /* (USE_BSP_COM_FEATURE > 0) */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/stm32wlxx_STS.h b/stm32wlxx_STS.h new file mode 100644 index 0000000..dc729df --- /dev/null +++ b/stm32wlxx_STS.h @@ -0,0 +1,356 @@ +/** + ****************************************************************************** + * @file stm32wlxx_STS.h + * @author MCD Application Team + * @brief Header for stm32wlxx_STS.c + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32WLXX_STS_H +#define STM32WLXX_STS_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_nucleo_errno.h" +#include "stm32wlxx_nucleo_conf.h" + +#if (USE_BSP_COM_FEATURE > 0) + #if (USE_COM_LOG > 0) + #ifndef __GNUC__ + #include "stdio.h" + #endif + #endif +#endif + +/** @addtogroup BSP + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO STM32WLXX-NUCLEO + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL LOW LEVEL + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Types LOW LEVEL Exported Types + * @{ + */ +typedef enum +{ + LED1 = 0, + LED2 = 1, + LED3 = 2, + /* Color led aliases */ + LED_BLUE = LED1, + LED_GREEN = LED2, + LED_RED = LED3 +}Led_TypeDef; + +typedef enum +{ + BUTTON_SW1 = 0, + BUTTON_SW2 = 1, + BUTTON_SW3 = 2, +}Button_TypeDef; + +typedef enum +{ + BUTTON_MODE_GPIO = 0, + BUTTON_MODE_EXTI = 1 +}ButtonMode_TypeDef; + +#if (USE_BSP_COM_FEATURE > 0) +typedef enum +{ + COM1 = 0U, + COMn +}COM_TypeDef; + +typedef enum +{ + COM_STOPBITS_1 = UART_STOPBITS_1, + COM_STOPBITS_2 = UART_STOPBITS_2, +}COM_StopBitsTypeDef; + +typedef enum +{ + COM_PARITY_NONE = UART_PARITY_NONE, + COM_PARITY_EVEN = UART_PARITY_EVEN, + COM_PARITY_ODD = UART_PARITY_ODD, +}COM_ParityTypeDef; + +typedef enum +{ + COM_HWCONTROL_NONE = UART_HWCONTROL_NONE, + COM_HWCONTROL_RTS = UART_HWCONTROL_RTS, + COM_HWCONTROL_CTS = UART_HWCONTROL_CTS, + COM_HWCONTROL_RTS_CTS = UART_HWCONTROL_RTS_CTS, +}COM_HwFlowCtlTypeDef; + +typedef enum +{ + COM_WORDLENGTH_7B = UART_WORDLENGTH_7B, + COM_WORDLENGTH_8B = UART_WORDLENGTH_8B, + COM_WORDLENGTH_9B = UART_WORDLENGTH_9B, +}COM_WordLengthTypeDef; + +typedef struct +{ + uint32_t BaudRate; + COM_WordLengthTypeDef WordLength; + COM_StopBitsTypeDef StopBits; + COM_ParityTypeDef Parity; + COM_HwFlowCtlTypeDef HwFlowCtl; +}COM_InitTypeDef; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +typedef struct +{ + pUART_CallbackTypeDef pMspInitCb; + pUART_CallbackTypeDef pMspDeInitCb; +}BSP_COM_Cb_t; +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 1) */ +#endif /* (USE_BSP_COM_FEATURE > 0) */ + +typedef enum +{ + ABSENT = 0, + PRESENT = 1, +}Presence_TypeDef; +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Constants LOW LEVEL Exported Constants + * @{ + */ + +/** + * @brief STM32WLXX NUCLEO BSP Driver version number + */ +#define __STM32WLXX_NUCLEO_BSP_VERSION_MAIN (0x01U) /*!< [31:24] main version */ +#define __STM32WLXX_NUCLEO_BSP_VERSION_SUB1 (0x02U) /*!< [23:16] sub1 version */ +#define __STM32WLXX_NUCLEO_BSP_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */ +#define __STM32WLXX_NUCLEO_BSP_VERSION_RC (0x00U) /*!< [7:0] release candidate */ +#define __STM32WLXX_NUCLEO_BSP_VERSION ((__STM32WLXX_NUCLEO_BSP_VERSION_MAIN << 24)\ + |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB1 << 16)\ + |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB2 << 8 )\ + |(__STM32WLXX_NUCLEO_BSP_VERSION_RC)) + +/** + * @brief Define for STM32WLXX_NUCLEO board + */ +#if !defined (USE_STM32WLXX_NUCLEO) + #define USE_STM32WLXX_NUCLEO +#endif + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED LOW LEVEL LED Constants + * @{ + */ +#define LEDn 3 + +#define LED1_PIN GPIO_PIN_15 +#define LED1_GPIO_PORT GPIOB +#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() + +#define LED2_PIN GPIO_PIN_9 +#define LED2_GPIO_PORT GPIOB +#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() + +#define LED3_PIN GPIO_PIN_11 +#define LED3_GPIO_PORT GPIOB +#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() + +#define LEDx_GPIO_CLK_ENABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_ENABLE() /* All Led on same port */ +#define LEDx_GPIO_CLK_DISABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_DISABLE() /* All Led on same port */ +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON LOW LEVEL BUTTON Constants + * @{ + */ +#define BUTTONn 3 + +/** + * @brief Key push-buttons + */ +#define BUTTON_SW1_PIN GPIO_PIN_0 +#define BUTTON_SW1_GPIO_PORT GPIOA +#define BUTTON_SW1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define BUTTON_SW1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +#define BUTTON_SW1_EXTI_LINE EXTI_LINE_0 +#ifdef CORE_CM0PLUS +#define BUTTON_SW1_EXTI_IRQn EXTI1_0_IRQn +#else +#define BUTTON_SW1_EXTI_IRQn EXTI0_IRQn +#endif +#define H_EXTI_0 hpb_exti[BUTTON_SW1] + +#define BUTTON_SW2_PIN GPIO_PIN_1 +#define BUTTON_SW2_GPIO_PORT GPIOA +#define BUTTON_SW2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define BUTTON_SW2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +#define BUTTON_SW2_EXTI_LINE EXTI_LINE_1 +#ifdef CORE_CM0PLUS +#define BUTTON_SW2_EXTI_IRQn EXTI1_0_IRQn +#else +#define BUTTON_SW2_EXTI_IRQn EXTI1_IRQn +#endif +#define H_EXTI_1 hpb_exti[BUTTON_SW2] + +#define BUTTON_SW3_PIN GPIO_PIN_6 +#define BUTTON_SW3_GPIO_PORT GPIOC +#define BUTTON_SW3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define BUTTON_SW3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() +#define BUTTON_SW3_EXTI_LINE EXTI_LINE_6 +#ifdef CORE_CM0PLUS +#define BUTTON_SW3_EXTI_IRQn EXTI15_4_IRQn +#else +#define BUTTON_SW3_EXTI_IRQn EXTI9_5_IRQn +#endif +#define H_EXTI_6 hpb_exti[BUTTON_SW3] + +#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_ENABLE(); else \ + if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_ENABLE(); else \ + if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_ENABLE();} while(0) + +#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_DISABLE(); else \ + if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_DISABLE(); else \ + if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_DISABLE();} while(0) + +/** + * @} + */ + +#if (USE_BSP_COM_FEATURE > 0) +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM LOW LEVEL COM Port Constants + * @{ + */ +#define COM1_UART LPUART1 +#define COM1_CLK_ENABLE() __HAL_RCC_LPUART1_CLK_ENABLE() +#define COM1_CLK_DISABLE() __HAL_RCC_LPUART1_CLK_DISABLE() + +#define COM1_TX_PIN GPIO_PIN_2 +#define COM1_TX_GPIO_PORT GPIOA +#define COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +#define COM1_TX_AF GPIO_AF8_LPUART1 + +#define COM1_RX_PIN GPIO_PIN_3 +#define COM1_RX_GPIO_PORT GPIOA +#define COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +#define COM1_RX_AF GPIO_AF8_LPUART1 +#define COM_POLL_TIMEOUT 1000 + +#define MX_UART_InitTypeDef COM_InitTypeDef +/** + * @} + */ +#endif /* (USE_BSP_COM_FEATURE > 0)*/ + +/** + * @} + */ + +/** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Variables + * @{ + */ +extern EXTI_HandleTypeDef hpb_exti[]; +#if (USE_BSP_COM_FEATURE > 0) +extern UART_HandleTypeDef hcom_uart[]; +#endif /* (USE_BSP_COM_FEATURE > 0) */ +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Functions LOW LEVEL Exported Functions + * @{ + */ +uint32_t BSP_GetVersion(void); + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED_Functions LOW LEVEL LED Functions + * @{ + */ +int32_t BSP_LED_Init(Led_TypeDef Led); +int32_t BSP_LED_DeInit(Led_TypeDef Led); +int32_t BSP_LED_On(Led_TypeDef Led); +int32_t BSP_LED_Off(Led_TypeDef Led); +int32_t BSP_LED_Toggle(Led_TypeDef Led); +int32_t BSP_LED_GetState(Led_TypeDef Led); +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON_Functions LOW LEVEL BUTTON Functions + * @{ + */ +int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); +int32_t BSP_PB_DeInit(Button_TypeDef Button); +int32_t BSP_PB_GetState(Button_TypeDef Button); +void BSP_PB_Callback(Button_TypeDef Button); +void BSP_PB_IRQHandler(Button_TypeDef Button); +/** + * @} + */ + +#if (USE_BSP_COM_FEATURE > 0) +/** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM_Functions LOW LEVEL COM Port Functions + * @{ + */ +int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init); +int32_t BSP_COM_DeInit(COM_TypeDef COM); +#if (USE_COM_LOG > 0) +int32_t BSP_COM_SelectLogPort (COM_TypeDef COM); +#endif +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM); +int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +HAL_StatusTypeDef MX_LPUART1_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init); +/** + * @} + */ +#endif /* (USE_BSP_COM_FEATURE > 0) */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32WLXX_STS_H */ diff --git a/stm32wlxx_STS_radio.c b/stm32wlxx_STS_radio.c new file mode 100644 index 0000000..ff2e497 --- /dev/null +++ b/stm32wlxx_STS_radio.c @@ -0,0 +1,220 @@ +/** + ****************************************************************************** + * @file stm32wlxx_STS_radio.c + * @author MCD Application Team + * @brief This file provides set of firmware functions to manage: + * - RF circuitry available on STM32WLXX-Nucleo + * Kit from STMicroelectronics + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_STS_radio.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL + * @brief This file provides set of firmware functions to Radio switch + * available on STM32WLXX-Nucleo Kit from STMicroelectronics. + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_Exported_Functions + * @{ + */ + +/** + * @brief Init Radio Switch + * @retval BSP status + */ +int32_t BSP_RADIO_Init(void) +{ + GPIO_InitTypeDef gpio_init_structure = {0}; + + /* Enable the Radio Switch Clock */ + RF_SW_CTRL3_GPIO_CLK_ENABLE(); + + /* Configure the Radio Switch pin */ + gpio_init_structure.Pin = RF_SW_CTRL1_PIN; + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + + HAL_GPIO_Init(RF_SW_CTRL1_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = RF_SW_CTRL2_PIN; + HAL_GPIO_Init(RF_SW_CTRL2_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = RF_SW_CTRL3_PIN; + HAL_GPIO_Init(RF_SW_CTRL3_GPIO_PORT, &gpio_init_structure); + + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_RESET); + + return BSP_ERROR_NONE; +} + +/** + * @brief DeInit Radio Switch + * @retval BSP status + */ +int32_t BSP_RADIO_DeInit(void) +{ + RF_SW_CTRL3_GPIO_CLK_ENABLE(); + + /* Turn off switch */ + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_RESET); + + /* DeInit the Radio Switch pin */ + HAL_GPIO_DeInit(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN); + HAL_GPIO_DeInit(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN); + HAL_GPIO_DeInit(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN); + + return BSP_ERROR_NONE; +} + +/** + * @brief Configure Radio Switch. + * @param Config: Specifies the Radio RF switch path to be set. + * This parameter can be one of following parameters: + * @arg RADIO_SWITCH_OFF + * @arg RADIO_SWITCH_RX + * @arg RADIO_SWITCH_RFO_LP + * @arg RADIO_SWITCH_RFO_HP + * @retval BSP status + */ +int32_t BSP_RADIO_ConfigRFSwitch(BSP_RADIO_Switch_TypeDef Config) +{ + switch (Config) + { + case RADIO_SWITCH_OFF: + { + /* Turn off switch */ + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + break; + } + case RADIO_SWITCH_RX: + { + /*Turns On in Rx Mode the RF Switch */ + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_SET); + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_SET); + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + break; + } + case RADIO_SWITCH_RFO_LP: + { + /*Turns On in Tx Low Power the RF Switch */ + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_SET); + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_SET); + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_SET); + break; + } + case RADIO_SWITCH_RFO_HP: + { + /*Turns On in Tx High Power the RF Switch */ + HAL_GPIO_WritePin(RF_SW_CTRL3_GPIO_PORT, RF_SW_CTRL3_PIN, GPIO_PIN_SET); + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_SET); + break; + } + default: + break; + } + + return BSP_ERROR_NONE; +} + +/** + * @brief Return Board Configuration + * @retval + * RADIO_CONF_RFO_LP_HP + * RADIO_CONF_RFO_LP + * RADIO_CONF_RFO_HP + */ +int32_t BSP_RADIO_GetTxConfig(void) +{ + return RADIO_CONF_RFO_LP_HP; +} + +/** + * @brief Get If TCXO is to be present on board + * @note never remove called by MW, + * @retval + * RADIO_CONF_TCXO_NOT_SUPPORTED + * RADIO_CONF_TCXO_SUPPORTED + */ +int32_t BSP_RADIO_IsTCXO(void) +{ + return RADIO_CONF_TCXO_SUPPORTED; +} + +/** + * @brief Get If DCDC is to be present on board + * @note never remove called by MW, + * @retval + * RADIO_CONF_DCDC_NOT_SUPPORTED + * RADIO_CONF_DCDC_SUPPORTED + */ +int32_t BSP_RADIO_IsDCDC(void) +{ + return RADIO_CONF_DCDC_SUPPORTED; +} + +/** + * @brief Return RF Output Max Power Configuration + * @retval + * RADIO_CONF_RFO_LP_MAX_15_dBm for LP mode + * RADIO_CONF_RFO_HP_MAX_22_dBm for HP mode + */ +int32_t BSP_RADIO_GetRFOMaxPowerConfig(BSP_RADIO_RFOMaxPowerConfig_TypeDef Config) +{ + int32_t ret; + + if(Config == RADIO_RFO_LP_MAXPOWER) + { + ret = RADIO_CONF_RFO_LP_MAX_15_dBm; + } + else + { + ret = RADIO_CONF_RFO_HP_MAX_22_dBm; + } + + return ret; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/stm32wlxx_STS_radio.h b/stm32wlxx_STS_radio.h new file mode 100644 index 0000000..15f7710 --- /dev/null +++ b/stm32wlxx_STS_radio.h @@ -0,0 +1,181 @@ +/** + ****************************************************************************** + * @file stm32wlxx_STS_radio.h + * @author MCD Application Team + * @brief Header for stm32wlxx_nucleo_radio.c + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32WLXX_STS_RADIO_H +#define STM32WLXX_STS_RADIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_nucleo_errno.h" +#include "stm32wlxx_nucleo_conf.h" + + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO STM32WLXX-NUCLEO + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL RADIO LOW LEVEL + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_Exported_Types RADIO LOW LEVEL Exported Types + * @{ + */ + +typedef enum +{ + RADIO_SWITCH_OFF = 0, + RADIO_SWITCH_RX = 1, + RADIO_SWITCH_RFO_LP = 2, + RADIO_SWITCH_RFO_HP = 3, +}BSP_RADIO_Switch_TypeDef; + +typedef enum +{ + RADIO_RFO_LP_MAXPOWER = 0, + RADIO_RFO_HP_MAXPOWER, +} BSP_RADIO_RFOMaxPowerConfig_TypeDef; + +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_Exported_Constants RADIO LOW LEVEL Exported Constants + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_RADIOCONFIG RADIO LOW LEVEL RADIO CONFIG Constants + * @{ + */ +#define RADIO_CONF_RFO_LP_HP 0U +#define RADIO_CONF_RFO_LP 1U +#define RADIO_CONF_RFO_HP 2U + +#define RADIO_CONF_TCXO_NOT_SUPPORTED 0U +#define RADIO_CONF_TCXO_SUPPORTED 1U + +#define RADIO_CONF_DCDC_NOT_SUPPORTED 0U +#define RADIO_CONF_DCDC_SUPPORTED 1U + +#define RADIO_CONF_RFO_HP_MAX_22_dBm ((int32_t) 22) +#define RADIO_CONF_RFO_HP_MAX_20_dBm ((int32_t) 20) +#define RADIO_CONF_RFO_HP_MAX_17_dBm ((int32_t) 17) +#define RADIO_CONF_RFO_HP_MAX_14_dBm ((int32_t) 14) +#define RADIO_CONF_RFO_LP_MAX_15_dBm ((int32_t) 15) +#define RADIO_CONF_RFO_LP_MAX_14_dBm ((int32_t) 14) +#define RADIO_CONF_RFO_LP_MAX_10_dBm ((int32_t) 10) + +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_RFSWITCH RADIO LOW LEVEL RF SWITCH Constants + * @{ + ** + ** +#define RF_SW_CTRL3_PIN GPIO_PIN_3 +#define RF_SW_CTRL3_GPIO_PORT GPIOC +#define RF_SW_CTRL3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define RF_SW_CTRL3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() + +#define RF_SW_CTRL1_PIN GPIO_PIN_4 +#define RF_SW_CTRL1_GPIO_PORT GPIOC +#define RF_SW_CTRL1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define RF_SW_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() + +#define RF_SW_CTRL2_PIN GPIO_PIN_5 +#define RF_SW_CTRL2_GPIO_PORT GPIOC +#define RF_SW_CTRL2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define RF_SW_CTRL2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() + +#define RF_TCXO_VCC_PIN GPIO_PIN_0 +#define RF_TCXO_VCC_GPIO_PORT GPIOB +#define RF_TCXO_VCC_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define RF_TCXO_VCC_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() + ** + ** + */ + +#define RF_SW_CTRL3_PIN GPIO_PIN_9 +#define RF_SW_CTRL3_GPIO_PORT GPIOA +#define RF_SW_CTRL3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define RF_SW_CTRL3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +// NOT USED CTRL1_PIN +#define RF_SW_CTRL1_PIN GPIO_PIN_4 +#define RF_SW_CTRL1_GPIO_PORT GPIOC +#define RF_SW_CTRL1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define RF_SW_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() + +#define RF_SW_CTRL2_PIN GPIO_PIN_13 +#define RF_SW_CTRL2_GPIO_PORT GPIOC +#define RF_SW_CTRL2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define RF_SW_CTRL2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() + +#define RF_TCXO_VCC_PIN GPIO_PIN_0 +#define RF_TCXO_VCC_GPIO_PORT GPIOB +#define RF_TCXO_VCC_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define RF_TCXO_VCC_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup STM32WLXX_NUCLEO_RADIO_LOW_LEVEL_Exported_Functions RADIO LOW LEVEL Exported Functions + * @{ + */ +int32_t BSP_RADIO_Init(void); +int32_t BSP_RADIO_DeInit(void); +int32_t BSP_RADIO_ConfigRFSwitch(BSP_RADIO_Switch_TypeDef Config); +int32_t BSP_RADIO_GetTxConfig(void); +int32_t BSP_RADIO_IsTCXO(void); +int32_t BSP_RADIO_IsDCDC(void); +int32_t BSP_RADIO_GetRFOMaxPowerConfig(BSP_RADIO_RFOMaxPowerConfig_TypeDef Config); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32WLXX_NUCLEO_RADIO_H */ diff --git a/stm32wlxx_nucleo_conf.h b/stm32wlxx_nucleo_conf.h new file mode 100644 index 0000000..c095e89 --- /dev/null +++ b/stm32wlxx_nucleo_conf.h @@ -0,0 +1,74 @@ +/** + ****************************************************************************** + * @file stm32wlxx_nucleo_conf.h + * @author MCD Application Team + * @brief STM32WLxx_Nucleo board configuration file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32WLXX_NUCLEO_CONF_H +#define STM32WLXX_NUCLEO_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_hal.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_CONFIG CONFIG + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_CONFIG_Exported_Constants Exported Constants + * @{ + */ +/* COM usage define */ +#define USE_BSP_COM_FEATURE 0U + +/* COM log define */ +#define USE_COM_LOG 0U + +/* IRQ priorities */ +#define BSP_BUTTON_USER_IT_PRIORITY 15U + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32WLXX_NUCLEO_CONF_H */ diff --git a/stm32wlxx_nucleo_conf_template.h b/stm32wlxx_nucleo_conf_template.h new file mode 100644 index 0000000..c095e89 --- /dev/null +++ b/stm32wlxx_nucleo_conf_template.h @@ -0,0 +1,74 @@ +/** + ****************************************************************************** + * @file stm32wlxx_nucleo_conf.h + * @author MCD Application Team + * @brief STM32WLxx_Nucleo board configuration file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32WLXX_NUCLEO_CONF_H +#define STM32WLXX_NUCLEO_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32wlxx_hal.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32WLXX_NUCLEO + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_CONFIG CONFIG + * @{ + */ + +/** @defgroup STM32WLXX_NUCLEO_CONFIG_Exported_Constants Exported Constants + * @{ + */ +/* COM usage define */ +#define USE_BSP_COM_FEATURE 0U + +/* COM log define */ +#define USE_COM_LOG 0U + +/* IRQ priorities */ +#define BSP_BUTTON_USER_IT_PRIORITY 15U + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32WLXX_NUCLEO_CONF_H */ diff --git a/stm32wlxx_nucleo_errno.h b/stm32wlxx_nucleo_errno.h new file mode 100644 index 0000000..e1d546f --- /dev/null +++ b/stm32wlxx_nucleo_errno.h @@ -0,0 +1,45 @@ +/** + ****************************************************************************** + * @file stm32wlxx_nucleo_errno.h + * @author MCD Application Team + * @brief Error Code. + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32WLXX_NUCLEO_ERRNO_H +#define STM32WLXX_NUCLEO_ERRNO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Common Error codes */ +#define BSP_ERROR_NONE 0 +#define BSP_ERROR_NO_INIT -1 +#define BSP_ERROR_WRONG_PARAM -2 +#define BSP_ERROR_BUSY -3 +#define BSP_ERROR_PERIPH_FAILURE -4 +#define BSP_ERROR_COMPONENT_FAILURE -5 +#define BSP_ERROR_UNKNOWN_FAILURE -6 +#define BSP_ERROR_UNKNOWN_COMPONENT -7 +#define BSP_ERROR_BUS_FAILURE -8 +#define BSP_ERROR_CLOCK_FAILURE -9 +#define BSP_ERROR_MSP_FAILURE -10 +#define BSP_ERROR_FEATURE_NOT_SUPPORTED -11 + +#ifdef __cplusplus +} +#endif + +#endif /* STM32WLXX_NUCLEO_ERRNO_H */