Датчики температуры DS18B20 снискали славу среди разработчиков электроники благодаря их точности (погрешность до полуградуса) и невысокой цене (0.2$ на алике). Кроме того, несколько датчиков можно запараллелить в одну шину и измерять последовательно разные температуры, используя только один порт 1-Wire, ведь у каждого датчика есть уникальный ID записанный изготовителем.


В микроконтроллерах серии STM32F10x (например, STM32F103C8T6 из популярной BluePill) есть часы реального времени, они "тикают" от батарейки после того, как пропадает основное питание. Но в этих RTC нет аппаратного календаря. Это значит, что дата "не идёт". Даже если вы в своем HAL проекте установили галочку "activate calendar", это значит, что дата будет "идти" при наличии основного питания, но после прекращения питания ДАТА СОБЬЕТСЯ до 01.01.00. Это плохая новость... Хорошая новость в том, что на HAL'е мир не сошелся клином. И мы сделаем полноценные часы реально времени с датой на CMSIS.
В такой нагруженной системе важна аккуратность. У меня на столе STM32F407VET6 со 128 кБ SRAM и 512 кБ FLASH. И на ней реализован Modbus TCP/IP, Modbus RTU RS485, Modbus RTU RS232, +CAN шлюз. Под FreeRTOS работают LwIP, FATFS. Для начальной "завязки" необходимо выделить память
Принципы чтения и записи FLASH памяти в STM32F0 мало чем отличаются от подобных принципов для других семейств. Описываемый далее метод так же неплохо работает и в STM32F1 (проверено на STM32F103C6T6A). Библиотека HAL позволит унифицировать знания, то есть пользоваться функцией стирания/записи можно аналогично, независимо от модели микроконтроллера.