eg_stm_hal

Status of Examples

Following is the status of examples. The examples are run with stm32f1xx_hal on a bluepill, stm32f3xx_hal on a Discovery kit STM32F303, stm32l1xx_hal on a STM32L100C Discovery and a heltec-lora-node151, stm32f4xx_hal on a Nucleo-64 STM32F411, a blackpill with MCU stm32f401, and a blackpill with MCU stm32f411. A board name starting with none- is an indication that I do not have hardware for an MCU that uses the hal, so cannot do the manual testing myself. (If you do run the examples on MCUs using these HALs, please report via the repository issues and I will add notes.) In the table cells: green check marks and red X marks indicate that the CI of the example builds or fails. runs is an indication that a manual test on actual hardware has been done and it works correctly or as noted, and no means the manual test fails badly as noted.

As of June 2021 the Travis.org CI has stopped. The Github Workflow testing is working but the generation of the table below has not been migrated from Travis. It is relatively accurate (as of June 2021) but for recent results see the Github workflow CI.

The CI testing is automatic and corresponds to the most recent example code, and using recent git versions of crates. The manual tests are not automatic, and less current. When I remember to record it, clicking on runs will go to the code repository history for the commit when a manual test was done. In addition to the example code at the time, the Cargo.lock file in the board directories gives an indication of the versions of dependencies.

Table of Core Examples Status

These examples use only the indicated hal and the main embedded crates. Some variations on these are available at the repository with the additional examples indicated below. The names in the board column are also the names of the build directories. Those names link to a file recording the commit that was used for the last CI example build tests.

hal board blink echo_by_char echo_string serial_char serial_string gps_rw temperature
stm32f0xx none-stm32f030 ? ? ? ? ? ? ?
stm32f1xx bluepill ? runs ? runs-5 ?runs-8,9 ? runs-1 ? no-8,9 ? runs ? runs
stm32f3xx discovery-stm32f303 ? runs ? runs-5 ?runs-5,9 ? runs-1 ?runs ? runs-10 ?
stm32f4xx nucleo-64 ? runs ? runs-5 ? no-9 ? no-2 ? no-8,9 ? no-6 ?
stm32f4xx blackpill-stm32f411 ? runs ? no-12 ? no-9 ? runs ? no-8,9 ? runs ? runs
stm32f4xx blackpill-stm32f401 ? runs ? no-12 ? no-9 ? runs ? no-8,9 ? runs-10 ? runs
stm32f7xx none-stm32f722 ? ? ? ? ? ? ? no-11
stm32h7xx none-stm32h742 ? ? ? ? ? ? ?
stm32l0xx none-stm32l0x2 ? ? ? ? ? ? ?
stm32l1xx discovery-stm32l100 ? runs ? runs-5 ? ? runs ? ? no-6 ?
stm32l1xx heltec-lora-node151 ? runs ? runs-5 ? ? no-4 ? no-4 ? no-6 ?
stm32l4xx none-stm32l4x2 ? ? ? ? ? ? ? no-11
  1. tx2 to rx3 works. tx3 to rx2 works sometimes but sometimes fails unwrapping err value Overrun on receive.
  2. Stalls waiting to receive. Possibly need thread to receive started before send?
  3. Usart2 with Usart3 connection works both ways but jibberish written on console.
  4. The Heltec lora_node 151 uses USART2 and USART3 pins for on board LoRa connections and power detection, so, only USART1 is available. This means that examples using more than one USART cannot be run. In examples oled_gps and lora_gps the available USART1 is used for the GPS so they might work.
  5. Works as long as typing is slow.
  6. Fails reading gps (does not return).
  7. Works once, repeat problems.
  8. Current code works for stm32f3xx_hal
  9. Uses dma buffering. Structures and methods are not yet consistent across hals.
  10. Some lines miss beginning, truncated, or characters missing.
  11. Hal does not yet support adc.
  12. no echo.

Additional Examples

Additional examples use crates in addition to the HAL and the main embedded crates. There are now a fairly large number of these examples. They are maintained in repository rust-integration-testing with CI workflow testing. The testing strategy is more extensive than in the table above. Examples are tested using both released and git versions of the crates. A simple table as above is difficult to maintain, but the most recent (non-dependabot) github workflow report at the above CI link is usually a good summary.

Code for these are in subdirectories of the repository examples/ directory. The main groupings are as follows.

examples/misc

examples/driver-examples

examples/radio-sx127x has

examples/rtic