Добавлены дефайны для принудитльного выставление ARR, PSC в таймерах
This commit is contained in:
parent
2344926f92
commit
74d692fdd5
@ -185,11 +185,55 @@ typedef struct // struct with variables for encoder
|
||||
@endcode
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Преобразование частоты в количество тиков таймера.
|
||||
* @param _freq_ Желаемая частота в Гц.
|
||||
* @param _timfreqMHz_ Тактовая частота таймера в МГц.
|
||||
* @return Количество тиков для достижения заданной частоты.
|
||||
* @details Расчет: (1 000 000 * частота_таймера) / желаемая_частота.
|
||||
*/
|
||||
#define TIM_FreqToTick(_freq_, _timfreqMHz_) ((1000000*(_timfreqMHz_))/(_freq_))
|
||||
|
||||
/**
|
||||
* @brief Преобразование миллисекунд в количество тиков таймера.
|
||||
* @param _ms_ Время в миллисекундах.
|
||||
* @param _timfreqMHz_ Тактовая частота таймера в МГц.
|
||||
* @return Количество тиков для заданного времени.
|
||||
* @details Расчет: (мс * 1000 * частота_таймера).
|
||||
*/
|
||||
#define TIM_MillisToTick(_ms_, _timfreqMHz_) ((uint32_t)((_ms_) * 1000UL * (_timfreqMHz_)))
|
||||
|
||||
/**
|
||||
* @brief Преобразование микросекунд в количество тиков таймера.
|
||||
* @param _us_ Время в микросекундах.
|
||||
* @param _timfreqMHz_ Тактовая частота таймера в МГц.
|
||||
* @return Количество тиков для заданного времени.
|
||||
* @details Расчет: (мкс * частота_таймера).
|
||||
*/
|
||||
#define TIM_MicrosToTick(_us_, _timfreqMHz_) ((uint32_t)((_us_) * (_timfreqMHz_)))
|
||||
|
||||
/**
|
||||
* @brief Установка автоперезагрузки (ARR) с принудительным обновлением теневого регистра.
|
||||
* @param __HANDLE__ Указатель на хендл таймера.
|
||||
* @param __AUTORELOAD__ Значение автоперезагрузки.
|
||||
* @details Генерирует событие обновления для немедленного применения нового значения ARR.
|
||||
* Решает проблему обновления теневых регистров только при переполнении.
|
||||
*/
|
||||
#define __HAL_TIM_SET_AUTORELOAD_FORCE(__HANDLE__, __AUTORELOAD__) \
|
||||
do{ __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__); \
|
||||
HAL_TIM_GenerateEvent(__HANDLE__, TIM_EVENTSOURCE_UPDATE); } while(0);
|
||||
|
||||
/**
|
||||
* @brief Установка предделителя (PSC) с принудительным обновлением теневого регистра.
|
||||
* @param __HANDLE__ Указатель на хендл таймера.
|
||||
* @param __PRESC__ Значение предделителя.
|
||||
* @details Генерирует событие обновления для немедленного применения нового значения PSC.
|
||||
* Решает проблему обновления теневых регистров только при переполнении.
|
||||
*/
|
||||
#define __HAL_TIM_SET_PRESCALER_FORCE(__HANDLE__, __PRESC__) \
|
||||
do{ __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__); \
|
||||
HAL_TIM_GenerateEvent(__HANDLE__, TIM_EVENTSOURCE_UPDATE); } while(0);
|
||||
|
||||
/* Initialize TIM with TIM_SettingsTypeDef structure */
|
||||
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
|
||||
/* Initialize TIMs clock and interrupt */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user