#timer #stm32 #cortex-m #arm #command-line-tool #cli

app aevum

A CLI utility to calculate timer register values for STM32 microcontrollers

2 releases

0.1.1 Sep 15, 2020
0.1.0 Sep 15, 2020

#954 in Embedded development

MIT license

9KB
120 lines

aevum

A CLI utility to calculate timer register values for STM32 microcontrollers. Given the desired length of the timer, aevum will calculate and spit out the prescaler and auto-reload register values.

Usage

Run aevum with ./aevum --help for more information.

When using aevum, you must always provide the desired period of time to run the timer. By default the units are in seconds. The program assumes that the prescaler and auto-reload registers are both 16-bit.

Options

  • -h, --help: Display help information
  • -c, --clock: Specify the timer clock speed
  • -u, --microseconds: Sets the desired time period to microseconds
  • -m, --milliseconds: Sets the desired time period to milliseconds
  • -s, --seconds: Sets the desired time period to seconds (default)
  • -r, --results: Sets the number of results to calculate before exiting

Examples

Sets a search for a 10 second timer with a 16MHz timer clock
aevum 10 -c 16000000

Sets a search for 20 milliseconds with a 8MHz timer clock
aevum 20 -m -c 8000000

Sets a search for 10 microseconds with the default clock value and only calculates the first 2 matches aevum 10 -u -r 2

Installation

Precompiled binaries are not yet available. You can compile the project from source if your machine has Rust.

$ git clone https://github.com/dylanwishner/aevum.git
$ cd aevum
$ cargo build

To-do List

  • Support alternative time units (milliseconds, microseconds, etc.)
  • Specify how many possibilities to calculate (or only output first match to reduce run time)
  • Allow the default parameters to be changed in case you frequently work with the same MCU
  • Better integer parsing to allow for 8,000,000 or 8_000_000 style integers
  • Handle cases where the values exceed the 16-bit maximum (using clock dividers)

Dependencies

~1.5MB
~24K SLoC