Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

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 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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Ручной фен 450 Вт с регулировкой температуры Паяльная станция Hakko 936
вверх