STM32F4. Урок 22 - Системна перевірка
Дана бібліотека дозволяє реалізувати систему перевірки помилок в вихідному коді на платі STM32F4. В H-файлі в визначенні повинні бути вказані необхідні активні тести.
Тест тактування: за допомогою цієї функції можна виконати перевірку правильності установки системного тактування та впевнитися в узгодженості всіх тактових частот (HCLK, PCLK1, PCLK2, SYSCLK), (в проектах автора всі тактові частоти встановлені на максимум).
Режим підтвердження: в даному режимі помилки ініціалізації визначаються під час виконання. Наприклад, коли під час ініціалізації тактування SPI ви вибрали невірну шину. Або якщо забули встановити параметри швидкості під час ініціалізації GPIO. Ці помилки призводять до "підтвердження", яке дозволяє визначити, в якій функції сталася помилка, і якщо вона сталася, то визначити рядок вихідного коду. Ця інформація зберігається в структурі.
Примітка: Щоб включити цей режим, в файлі "cmsis_boot / stm32f4xx_conf.h" - "USE_FULL_ASSERT" встановити в 1 (за замовчуванням 0).
Вимоги:
Підключені модулі CooCox-IDE: RCC.
Підтримувані бібліотеки: відсутні.
Перерахування:
typedef enum { SYSCHECK_OK =0, // помилок немає CLKSOURCE_ERR, // помилка джерела тактових імпульсів HCLK_ERR, // помилка частоти HCLK PCLK1_ERR, // помилка частоти PCLK1 PCLK2_ERR, // помилка частоти PCLK2 SYSCLK_ERR, // помилка частоти SYSCLK ASSERT_ERR // помилка підтвердження }SYSCHECK_t;
Функції:
SYSCHECK_t UB_SysCheck_Clock(void); // перевірка джерела тактування та всі частоти void UB_SysCheck_Assert_Init(void); // ініціалізація режиму підтвердження SYSCHECK_t UB_SysCheck_Assert(void); // перевірка наявності помилки підтвердження
Приклад використання:
//-------------------------------------------------------------- // File : main.c // Datum : 23.03.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo бібліотеки SysCheck (Помилка тактування) // Hinweis : Ці два файли повинні стояти на 8MHz // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_syscheck.h" #include "stm32_ub_led.h" int main(void) { SYSCHECK_t check; SystemInit(); // Ініціалізація налаштувань кварца // Ініціалізація світлодіодів UB_Led_Init(); // Перевірка налаштувань тактування check=UB_SysCheck_Clock(); if(check==SYSCHECK_OK) { // помилок немає UB_Led_On(LED_GREEN); } else { // помилка UB_Led_On(LED_RED); } while(1) { } }
Приклад використання (підтвердження):
//-------------------------------------------------------------- // File : main.c // Datum : 10.04.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo бібліотеки SysCheck (Помилка підтвердження) // Hinweis : Ці два файли повинні стояти на 8MHz // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_syscheck.h" #include "stm32_ub_led.h" int main(void) { SYSCHECK_t check; SystemInit(); // Ініціалізація налаштувань кварца // Ініціалізація світлодіодів UB_Led_Init(); // ініціалізація режиму підтвердження UB_SysCheck_Assert_Init(); //------------------------------------------ // Намірено вставлена помилка //----------------------------------------- // Тактування SPI від вибраної шини RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); // Перевірка на помилку підтвердження check=UB_SysCheck_Assert(); if(check==SYSCHECK_OK) { // помилок немає UB_Led_On(LED_GREEN); } else { // сталася помилка підтвердження // в режимі налагодження підсвічує ім'я файлу // і номер рядка з помилкою UB_Led_On(LED_RED); } while(1) { } }
В додатку проекти CooCox і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить задавати питання на його сайті німецькою або англійською мовами.
Прикреплені файли:
- ub_stm32f4_syscheck_v101_rus.rar (6 Кб)
- Demo_22_Syscheck_rus.rar (151 Кб)
- Demo_22b_Syscheck2_rus.rar (179 Кб)