STM32 Bootloader Update Mechanism Assistance

Job ID: 39029818

Budget: $30 – $250 USD

1. Objective

Generate a 1 ms timestamp:
Use TIM2 to overflow every 1 ms.
Maintain a 64-bit counter in nanoseconds (or ms) that increments each interrupt by 1,000,000 ns.

Provide Unix timestamp:
Use the RTC to track “Unix time” in seconds (if needed for real-world time reference).
Convert or read the RTC to produce timestampUnix.

Stream data over UART:
Continuously send lines in the format:

timestamp timestampUnix

E.g. 1723390177448695880 1723390176459
Transmit at a fixed baud rate (e.g., 115200) to the Pi.

2. Core Requirements

TIM2 @ 1 ms
Configure prescaler/period for a 1 ms interrupt on STM32F103 (72 MHz).
In the interrupt, update timestamp (+1,000,000 ns).

Optional RTC
Enable the STM32 RTC if real-world date/time is needed.
Read or convert to Unix epoch, stored in timestampUnix.

UART Transmission
Format a string like: "<timestamp> <timestampUnix>\r\n"
Send each millisecond interrupt.
Optionally use DMA for efficient, non-blocking output.
Related categories: C Programming Linux Electronics Microcontroller Arduino