Сделана независимость .h библиотек от таргета и HAL (насколько возможно)

This commit is contained in:
2025-10-20 08:48:22 +03:00
parent caf08ca619
commit 37843e4bef
48 changed files with 2457 additions and 2078 deletions

View File

@@ -16,9 +16,14 @@
* @addtogroup TRACE_SERIAL Serial trace defines
* @ingroup TRACE
* @brief Дефайны для работы с serial трассировкой (SWO, RTT)
* @details Определяется дефайн @ref my_printf() и @ref log_printf() для работы с serial трассировкой:
- для RTT это будет вызов функции SEGGER_RTT_printf(), с подключением библиотеки SEGGER_RTT.h
- для SWO это будет просто printf()
* @details В зависимости от настроек определяется дефайн @ref my_printf() и @ref log_printf() для работы с трассировкой:
- @ref SERIAL_TRACE_ENABLE - Если трассировка отключена, то все дефайны определяются как 'ничего'
и на производительность кода не влияют
- @ref RTT_TRACE_ENABLE - для RTT это будет вызов функции SEGGER_RTT_printf(), с подключением библиотеки SEGGER_RTT.h
Предварительно надо подключить библиотеку SEGGER RTT и вызвать функцию SEGGER_RTT_Init()
- @ref SWO_TRACE_ENABLE для SWO это будет просто printf()
Но библиотеку STDOUT надо подключить самостоятельно:
@@ -39,8 +44,7 @@
- Выставить Trace Port = SWO
- ITM - выбрать нужный порт (для Keil нулевой порт)
- Если трассировка @ref SERIAL_TRACE_ENABLE отключена, то все дефайны определяются как 'ничего'
и на производительность кода не влияют
* @{
*
* @def my_printf(...)
@@ -159,6 +163,13 @@ my_printf("\n[%lu] [%s] (%s:%d) " fmt, \
* если слот с таким тегом уже занят, запись не выполняется.
* - Автоинкремент позволяет хранить несколько последовательных записей в пределах одного базового тега,
* без необходимости вручную отслеживать адреса Flash или позиции буферов.
*
* Параметры:
* - @ref RTT_FLASH_BUFFER_SIZE - Размер буфера RTT в Flash
* - @ref RTT_FLASH_SECTOR - Сектор FLASH куда положится RTT буфер
* - @ref RTT_FLASH_SECTOR_START - Начало сектора RTT_FLASH_SECTOR
* - @ref RTT_FLASH_SECTOR_END - Конец сектора RTT_FLASH_SECTOR
*
* @{
*/
@@ -198,6 +209,7 @@ __STATIC_FORCEINLINE void RTT_FlashPrepare(void)
* - Если базовый (младший байт == 0) — будет выбран первый свободный слот с автоинкрементом.
* Автоинкремент формируется в пределах от 0x1 до 0xFF
* - Если конкретный (младший байт != 0) — запись выполняется только с этим тегом, иначе ошибка.
*
*/
__STATIC_FORCEINLINE int RTT_SaveToFlash(uint32_t tag, uint32_t tail_size)
{
@@ -410,6 +422,16 @@ __STATIC_FORCEINLINE int RTT_EraseFlash(void)
* 1. Читает запись во Flash по базовому тегу.
* 2. Выводит сохранённый RTT буфер и контекст регистров.
* 3. Опционально стирает Flash после восстановления.
*
* Параметры:
* - @ref HARDFAULT_SERIAL_TRACE - Включить обработку и serial трассировку Hardfault
* Если отключена то вставляются заглушки, никак не влияющие на параметры и остальную программу
* - @ref HF_RTT_TAG_BASE - Базовый тег RTT Flash для HardFault
* - @ref HF_RTT_TAIL_SIZE - Размер буфера RTT, который сохранится при Hardfault
* - @ref HF_STACK_DUMP_WORDS - Сколько слов стека будет проанализировано во время Hardfault
* - @ref HF_FLASH_ADDR - Адрес FLASH куда положится RTT буфер
* - @ref HF_RAM_END - Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
*
@code
void Hardfault()
{