Доработал модуль TIM (с точки зрения документции. Код не проверен)
Доработна документация в целом - добавелн main page - исправлены ошибки в шапках и коментах - добавлен граф инклюдов
This commit is contained in:
@@ -1,20 +1,20 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file general_spi.c
|
||||
* @brief Модуль для инициализации SPI.
|
||||
**************************************************************************
|
||||
* //-------------------Функции-------------------//
|
||||
* @verbatim
|
||||
* Functions: users
|
||||
* - SPI_Base_Init Инициализация SPI
|
||||
*
|
||||
* Functions: spi initialize
|
||||
* - SPI_GPIO_Init Инициализация GPIO для SPI
|
||||
* - SPI_DMA_Init Инициализация DMA для SPI
|
||||
* - SPI_MspInit Аналог HAL_MspInit для SPI
|
||||
* - SPI_MspDeInit Аналог HAL_MspDeInit для SPI
|
||||
* @endverbatim
|
||||
*************************************************************************/
|
||||
**************************************************************************
|
||||
* @file general_spi.c
|
||||
* @brief Модуль для инициализации SPI.
|
||||
**************************************************************************
|
||||
* @details
|
||||
*
|
||||
* Функции:
|
||||
* - SPI_Base_Init Инициализация SPI
|
||||
*
|
||||
* Functions: spi initialize
|
||||
* - SPI_GPIO_Init Инициализация GPIO для SPI
|
||||
* - SPI_DMA_Init Инициализация DMA для SPI
|
||||
* - SPI_MspInit Аналог HAL_MspInit для SPI
|
||||
* - SPI_MspDeInit Аналог HAL_MspDeInit для SPI
|
||||
*
|
||||
*************************************************************************/
|
||||
#include "general_spi.h"
|
||||
#include "general_gpio.h"
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file general_gpio.c
|
||||
* @brief Модуль для инициализации портов.
|
||||
* @brief Модуль для инициализации портов и работы с ними.
|
||||
**************************************************************************
|
||||
* @details Реализация функций для работы с GPIO:
|
||||
* - Включение тактирования портов
|
||||
* - Инициализация светодиодов и кнопок
|
||||
* - Управление светодиодами: включение, выключение, моргание, плавное затухание
|
||||
* - Чтение состояния кнопок с фильтром от дребезга
|
||||
* @details
|
||||
Реализация функций для работы с GPIO:
|
||||
- Включение тактирования портов
|
||||
- Инициализация светодиодов и кнопок
|
||||
- Управление светодиодами: включение, выключение, моргание, плавное затухание
|
||||
- Чтение состояния кнопок с фильтром от дребезга
|
||||
***************************************************************************/
|
||||
#include "general_gpio.h"
|
||||
|
||||
@@ -20,6 +21,9 @@
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
|
||||
{
|
||||
if(check_null_ptr_1(GPIOx))
|
||||
return HAL_ERROR;
|
||||
|
||||
HAL_StatusTypeDef status = HAL_OK;
|
||||
// choose port for enable clock
|
||||
if (GPIOx==GPIOA)
|
||||
@@ -68,7 +72,7 @@ HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
|
||||
{
|
||||
if(check_null_ptr_2(led, GPIOx))
|
||||
if(check_null_ptr_3(led, GPIOx, GPIO_PIN_X))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->LED_Port = GPIOx;
|
||||
@@ -86,14 +90,12 @@ HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint3
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_ON;
|
||||
if(led->LED_Port != NULL)
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
|
||||
else
|
||||
return HAL_ERROR;
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
|
||||
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
@@ -104,14 +106,12 @@ HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_OFF;
|
||||
if(led->LED_Port != NULL)
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
|
||||
else
|
||||
return HAL_ERROR;
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
|
||||
|
||||
|
||||
|
||||
return HAL_OK;
|
||||
@@ -124,8 +124,8 @@ HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
if(led_state)
|
||||
{
|
||||
@@ -145,7 +145,7 @@ HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_BLINKING;
|
||||
@@ -163,7 +163,7 @@ HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_FADING;
|
||||
@@ -183,7 +183,7 @@ HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
*/
|
||||
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return;
|
||||
|
||||
/* Режим моргания светодиода */
|
||||
@@ -257,7 +257,7 @@ void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
|
||||
{
|
||||
if(check_null_ptr_2(sw, GPIOx))
|
||||
if(check_null_ptr_3(sw, GPIOx, GPIO_PIN_X))
|
||||
return HAL_ERROR;
|
||||
|
||||
sw->Sw_Port = GPIOx;
|
||||
@@ -269,14 +269,16 @@ HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx,
|
||||
/**
|
||||
* @brief Считать состоянии кнопки
|
||||
* @param sw Указатель на структуру кнопки
|
||||
* @return 1 - если кнопка нажата, 0 - если отжата
|
||||
* @return 1 - если кнопка нажата,
|
||||
* 0 - если отжата,
|
||||
* -1 - если ошибка
|
||||
* @details Функция включает в себя неблокирующую проверку на дребезг
|
||||
* Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки
|
||||
*/
|
||||
uint8_t GPIO_Read_Switch(GPIO_SwitchTypeDef *sw)
|
||||
int GPIO_Read_Switch(GPIO_SwitchTypeDef *sw)
|
||||
{
|
||||
if(check_null_ptr_1(sw))
|
||||
return 0;
|
||||
if(check_null_ptr_3(sw, sw->Sw_Port, sw->Sw_Pin))
|
||||
return -1;
|
||||
|
||||
if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
|
||||
{
|
||||
|
||||
@@ -1,39 +1,40 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file general_tim.c
|
||||
* @brief Модуль для инициализации таймеров.
|
||||
**************************************************************************
|
||||
@verbatim
|
||||
//-------------------Функции-------------------//
|
||||
Functions: user init
|
||||
- TIM_Base_Init Инициализация TIM
|
||||
- TIM_Encoder_Init Инициализация режима энкодера
|
||||
- TIM_Output_PWM_Init Инициализация PWM с выводом на GPIO
|
||||
- TIM_OC_Comparator_Init Инициализация TIM как компаратора
|
||||
|
||||
Functions: user
|
||||
- TIM_Delay Задержка с помощью TIM
|
||||
|
||||
Functions: tim initialize
|
||||
- TIM_Base_MspInit Аналог HAL_MspInit для таймера
|
||||
- TIM_Base_MspDeInit Аналог HAL_MspDeInit для таймера
|
||||
@endverbatim
|
||||
*************************************************************************/
|
||||
**************************************************************************
|
||||
* @file general_tim.c
|
||||
* @brief Модуль для инициализации таймеров и работы с ними.
|
||||
**************************************************************************
|
||||
Реализация функций для работы с TIM:
|
||||
- Инициализация таймера и его каналов
|
||||
- Формирование задержек через таймеры
|
||||
- Считывание энкодера
|
||||
*************************************************************************/
|
||||
#include "general_tim.h"
|
||||
#include "general_gpio.h"
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-------------------------TIM INIT FUNCTIONS------------------------
|
||||
/**
|
||||
* @brief Initialize TIM with TIM_SettingsTypeDef structure.
|
||||
* @param stim - указатель на структуру с настройками таймера.
|
||||
* @brief Инициализация таймера.
|
||||
* @param stim Указатель на структуру с настройками таймера.
|
||||
* @return HAL status.
|
||||
* @note Данная структура содержит хендл таймера и структуры для его настройки.
|
||||
* @details
|
||||
* Инициализирует таймер исходя из настроек верхнего уровня:
|
||||
* - Длительность одного тика @ref TIM_MHzTickBaseTypeDef
|
||||
* - Частота таймера (в Гц, float)
|
||||
* - Частота тактирования таймера от шины (в Гц, float)
|
||||
*
|
||||
* При невозможности выставления частоты при заданой длительности тика
|
||||
* длительность тика увеличивается до тех пор, пока частота не будет достигнута.
|
||||
*
|
||||
* При выставлении дефайна @ref UPDATE_TIM_PARAMS_AFTER_INITIALIZATION
|
||||
* новая длительность тика записывается в структуру.
|
||||
*
|
||||
* Также остается возможность низкоуровневой настройки по структурам @ref TIM_SettingsTypeDef.
|
||||
* Для этого надо высокоуровневые настройки приравнять к нулю
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
|
||||
{ // function takes structure for init
|
||||
// check that htim is defined
|
||||
if (stim->htim.Instance == NULL)
|
||||
if(check_null_ptr_2(stim, stim->htim.Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
|
||||
@@ -158,17 +159,19 @@ HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef *stim)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Initialize TIM Encoder functional.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @param sConfigOC - указатель на настрйоки канала таймера.
|
||||
* @param GPIOx - порт для приема енкодера.
|
||||
* @param GPIO_PIN1 - первый пин для енкодера.
|
||||
* @param GPIO_PIN2 - второй пин для енкодера.
|
||||
* @param GPIO_PIN_SW - пин для кнопки енкодера.
|
||||
* @brief Инициализация режима энкодер у таймера.
|
||||
* @param henc Указатель на хендл энкодера.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @return HAL status.
|
||||
* @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *htim)
|
||||
{
|
||||
if(check_null_ptr_3(henc, htim, htim->Instance))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(henc->GPIOx, henc->GPIO_PIN_TI1, henc->GPIO_PIN_TI2))
|
||||
return HAL_ERROR;
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
HAL_StatusTypeDef RES = HAL_ERROR;
|
||||
henc->htim = htim;
|
||||
@@ -192,7 +195,7 @@ HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Alternate = TIM_Alternate_Mapping(henc->htim->Instance);
|
||||
GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(henc->htim->Instance);
|
||||
if(GPIO_InitStruct.Alternate)
|
||||
HAL_GPIO_Init(henc->GPIOx, &GPIO_InitStruct);
|
||||
|
||||
@@ -202,23 +205,31 @@ HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc, TIM_HandleTypeDef *
|
||||
GPIO_InitStruct.Pin = henc->GPIO_PIN_SW;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
HAL_GPIO_Init(henc->GPIOx, &GPIO_InitStruct);
|
||||
|
||||
GPIO_Switch_Init(&henc->Sw, henc->GPIOx, henc->GPIO_PIN_SW, 0);
|
||||
}
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize PWM Channel and GPIO for output.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @param sConfigOC - указатель на настрйоки канала таймера.
|
||||
* @param TIM_CHANNEL - канал таймера для настройки.
|
||||
* @param GPIOx - порт для вывода ШИМ.
|
||||
* @param GPIO_PIN - пин для вывода ШИМ.
|
||||
* @brief Инициализация выхода ШИМ таймера.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @param sConfigOC Указатель на настрйоки канала таймера.
|
||||
* @param TIM_CHANNEL Канал таймера для настройки.
|
||||
* @param GPIOx Порт для вывода ШИМ.
|
||||
* @param GPIO_PIN Пин для вывода ШИМ.
|
||||
* @return HAL status.
|
||||
* @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN)
|
||||
{
|
||||
if(check_null_ptr_3(htim, htim->Instance, sConfigOC))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_2(GPIOx, GPIO_PIN))
|
||||
return HAL_ERROR;
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
HAL_StatusTypeDef RES = HAL_ERROR;
|
||||
|
||||
@@ -244,7 +255,7 @@ HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDe
|
||||
else
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Alternate = TIM_Alternate_Mapping(htim->Instance);
|
||||
GPIO_InitStruct.Alternate = GPIO_TIM_Alternate_Mapping(htim->Instance);
|
||||
if(GPIO_InitStruct.Alternate)
|
||||
HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
|
||||
|
||||
@@ -252,13 +263,17 @@ HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDe
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize OC Comparator.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @param TIM_CHANNEL - канал таймера для настройки.
|
||||
* @brief Инициализация OC компаратора таймера.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @param TIM_CHANNEL Канал таймера для настройки.
|
||||
* @return HAL status.
|
||||
* @note Предварительно надо инициализировать таймер @ref TIM_Base_Init.
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
TIM_OC_InitTypeDef sConfigOC = {0};
|
||||
HAL_StatusTypeDef RES = HAL_ERROR;
|
||||
|
||||
@@ -276,18 +291,54 @@ HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_C
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-------------------------TIM USER FUNCTIONS------------------------
|
||||
/**
|
||||
* @brief Delay via TIM.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @param delay - задержка в тиках таймера.
|
||||
* @brief Считать энкодер.
|
||||
* @param henc Указатель на хендл энкодера.
|
||||
* @return HAL status.
|
||||
* @note Таймер должен быть уже запущен.
|
||||
* @details Читает разницу энкодера, которую он накопил после
|
||||
* предыдущего вызова этой функции.
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Encoder_Read(TIM_EncoderTypeDef *henc)
|
||||
{
|
||||
if(check_null_ptr_3(henc, henc->htim, henc->htim->Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
uint16_t cnt_now = (uint16_t)henc->htim->Instance->CNT;
|
||||
int16_t diff = (int16_t)(cnt_now - henc->Encoder_Shdw); // переполнение корректно обрабатывается
|
||||
henc->Encoder_Diff = diff;
|
||||
henc->Encoder_Shdw = cnt_now;
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
/**
|
||||
* @brief Считать кнопку энкодера.
|
||||
* @param henc Указатель на хендл энкодера.
|
||||
* @return 1 - если кнопка нажата,
|
||||
* 0 - если отжата,
|
||||
* -1 - если ошибка
|
||||
*/
|
||||
int TIM_Encoder_ReadSwitch(TIM_EncoderTypeDef *henc)
|
||||
{
|
||||
if(check_null_ptr_1(henc))
|
||||
return -1;
|
||||
|
||||
return GPIO_Read_Switch(&henc->Sw);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Задержка в тиках таймера (блокирующая).
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @param delay Задержка в тиках таймера.
|
||||
* @return HAL status.
|
||||
* @details Формирует задержку с блокировкой программы.
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
if(delay >= htim->Instance->ARR)
|
||||
{
|
||||
return HAL_ERROR;
|
||||
@@ -303,28 +354,36 @@ HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Start delay via TIM.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @brief Начать отсчет неблокирующей задержки.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @return HAL status.
|
||||
* @note Таймер должен быть уже запущен.
|
||||
* @details Сбрасывает счетчик для начала отсчета неблокирующей задержки.
|
||||
* @ref TIM_Delay_NonBlocking для проверки статуса задержки
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
htim->Instance->CNT = 0;
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wait Delay via TIM without blocking app.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @param delay - задержка в тиках таймера.
|
||||
* @brief Задержка в тиках таймера (неблокирующая).
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @param delay Задержка в тиках таймера.
|
||||
* @return HAL status.
|
||||
* @note Перед ожиданием задержки надо запутстить таймер её @ref TIM_Delay_Start
|
||||
* @note Таймер не должен использоваться на время этой задержки
|
||||
* @details Формирует задержку с блокировкой программы.
|
||||
* Перед ожиданием задержки надо запутстить таймер @ref TIM_Delay_Start
|
||||
* @note Таймер не должен использоваться на время этой задержки
|
||||
*/
|
||||
HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return HAL_ERROR;
|
||||
|
||||
if(delay >= htim->Instance->ARR)
|
||||
{
|
||||
return HAL_ERROR;
|
||||
@@ -341,13 +400,16 @@ HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize TIMs clock and interrupt.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @brief Инициализация CLK и NVIC таймеров.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @note Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров,
|
||||
дефайнами в general_tim.h определяются используемые таймеры.
|
||||
*/
|
||||
void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return;
|
||||
|
||||
it_mode = it_mode&TIM_IT_CONF;
|
||||
#ifdef USE_TIM1
|
||||
if(htim->Instance==TIM1)
|
||||
@@ -547,13 +609,16 @@ void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode)
|
||||
#endif
|
||||
}
|
||||
/**
|
||||
* @brief DeInitialize TIMs clock and interrupt.
|
||||
* @param htim - указатель на хендл таймера.
|
||||
* @brief Деинициализация CLK и NVIC таймеров.
|
||||
* @param htim Указатель на хендл таймера.
|
||||
* @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров,
|
||||
дефайнами в general_tim.h определяются используемые таймеры.
|
||||
*/
|
||||
void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim)
|
||||
{
|
||||
if(check_null_ptr_2(htim, htim->Instance))
|
||||
return;
|
||||
|
||||
#ifdef USE_TIM1
|
||||
if(htim->Instance==TIM1)
|
||||
{
|
||||
Reference in New Issue
Block a user