Данная библиотека позволяет реализовать систему проверки ошибок в исходном коде на плате 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 der SysCheck-Library (Clock-Fehler) // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "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 der SysCheck-Library (Assert-Fehler) // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "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 Кб)
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация