Проект перенесен в папку MDK-ARM
This commit is contained in:
78
MDK-ARM/Core/App/sysclk.h
Normal file
78
MDK-ARM/Core/App/sysclk.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file sysclk.h
|
||||
* @author Разваляев Алексей
|
||||
* @brief Драйвер тактирования системы на основе PLIB035.
|
||||
* Данный файл содержит определения типов, структур и прототипы функций
|
||||
* для работы с системным тактированием, включая:
|
||||
* + Типы системных тиков
|
||||
* + Структуру для управления коллбеками
|
||||
* + Прототипы функций для инициализации тактирования
|
||||
* + Функции настройки тактирования периферии
|
||||
* + Функции работы со временем
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __RCU_H
|
||||
#define __RCU_H
|
||||
//-- Includes ------------------------------------------------------------------
|
||||
#include "plib035.h"
|
||||
#include "retarget_conf.h"
|
||||
|
||||
//-- Defines -------------------------------------------------------------------
|
||||
|
||||
/** @brief Конвертация МГц в Гц */
|
||||
#define __MHZ 1000000
|
||||
|
||||
/** @brief Максимальное количество коллбеков */
|
||||
#define SYSCLK_NUMB_OF_CUSTOM_CALLBACKS 16
|
||||
|
||||
|
||||
//-- Exported variables --------------------------------------------------------
|
||||
extern __IO uint32_t msTick;
|
||||
extern __IO uint32_t usTick;
|
||||
|
||||
//-- Types ---------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Типы частот системных тиков
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
SYSCLK_Tick_1us = 1000000, /**< Тик 1 микросекунда */
|
||||
SYSCLK_Tick_10us = 100000, /**< Тик 10 микросекунд */
|
||||
SYSCLK_Tick_100us = 10000, /**< Тик 100 микросекунд */
|
||||
SYSCLK_Tick_1ms = 1000, /**< Тик 1 миллисекунда */
|
||||
SYSCLK_Tick_10ms = 100, /**< Тик 10 миллисекунд */
|
||||
SYSCLK_Tick_100ms = 10, /**< Тик 100 миллисекунд */
|
||||
}SYSCLK_TickHz_TypeDef;
|
||||
|
||||
/**
|
||||
* @brief Структура для управления системными коллбеками
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int CallbackInUse; /**< Количество активных коллбеков */
|
||||
void (*Callback[SYSCLK_NUMB_OF_CUSTOM_CALLBACKS])(void); /**< Массив указателей на функции-коллбеки */
|
||||
uint32_t CallbackPeriod[SYSCLK_NUMB_OF_CUSTOM_CALLBACKS]; /**< Периоды вызова коллбеков в мс */
|
||||
uint32_t CallbackPrevMs[SYSCLK_NUMB_OF_CUSTOM_CALLBACKS]; /**< Время последнего вызова коллбеков */
|
||||
} SYSCLK_CallbackHandleTypeDef;
|
||||
|
||||
|
||||
//-- Exported functions prototypes ---------------------------------------------
|
||||
/* Инициализация системного тактирования */
|
||||
void sysclk_init(void);
|
||||
/* Общий обработчик прерываний SysClock */
|
||||
void sysclk_irq_handler(void);
|
||||
|
||||
/* Добавление периодического коллбека */
|
||||
OperationStatus SYSCLK_Set_Callback(void (*Callback)(void), uint32_t PeriodInMs);
|
||||
|
||||
/* Получение текущего времени в миллисекундах */
|
||||
uint32_t millis(void);
|
||||
/* Получение текущего времени в микросекундах */
|
||||
uint32_t micros(void);
|
||||
|
||||
/* Настройка тактирования АЦП */
|
||||
OperationStatus rcu_set_clock_adc(RCU_PeriphClk_TypeDef ClkSrc, float ClkMHz, FunctionalState state);
|
||||
#endif /*__RCU_H*/
|
||||
Reference in New Issue
Block a user