STM32F4xx HAL Driver
master
STM32CubeF4 HAL / LL Drivers API Reference
Toggle main menu visibility
Loading...
Searching...
No Matches
stm32f4xx_hal_timebase_tim_template.c
Go to the documentation of this file.
1
24
25
/* Includes ------------------------------------------------------------------*/
26
#include "
stm32f4xx_hal.h
"
27
31
35
36
/* Private typedef -----------------------------------------------------------*/
37
/* Private define ------------------------------------------------------------*/
38
/* Private macro -------------------------------------------------------------*/
39
/* Private variables ---------------------------------------------------------*/
40
TIM_HandleTypeDef
TimHandle
;
41
/* Private function prototypes -----------------------------------------------*/
42
void
TIM6_DAC_IRQHandler
(
void
);
43
/* Private functions ---------------------------------------------------------*/
44
54
HAL_StatusTypeDef
HAL_InitTick
(uint32_t TickPriority)
55
{
56
RCC_ClkInitTypeDef
clkconfig;
57
uint32_t uwTimclock, uwAPB1Prescaler = 0U;
58
uint32_t uwPrescalerValue = 0U;
59
uint32_t pFLatency;
60
HAL_StatusTypeDef
status;
61
62
/* Enable TIM6 clock */
63
__HAL_RCC_TIM6_CLK_ENABLE();
64
65
/* Get clock configuration */
66
HAL_RCC_GetClockConfig
(&clkconfig, &pFLatency);
67
68
/* Get APB1 prescaler */
69
uwAPB1Prescaler = clkconfig.
APB1CLKDivider
;
70
71
/* Compute TIM6 clock */
72
if
(uwAPB1Prescaler ==
RCC_HCLK_DIV1
)
73
{
74
uwTimclock =
HAL_RCC_GetPCLK1Freq
();
75
}
76
else
77
{
78
uwTimclock = 2 *
HAL_RCC_GetPCLK1Freq
();
79
}
80
81
/* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */
82
uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U);
83
84
/* Initialize TIM6 */
85
TimHandle
.Instance = TIM6;
86
87
/* Initialize TIMx peripheral as follow:
88
+ Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base.
89
+ Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock.
90
+ ClockDivision = 0
91
+ Counter direction = Up
92
*/
93
TimHandle
.Init.Period = (1000000U / 1000U) - 1U;
94
TimHandle
.Init.Prescaler = uwPrescalerValue;
95
TimHandle
.Init.ClockDivision = 0U;
96
TimHandle
.Init.CounterMode =
TIM_COUNTERMODE_UP
;
97
TimHandle
.Init.AutoReloadPreload =
TIM_AUTORELOAD_PRELOAD_DISABLE
;
98
status =
HAL_TIM_Base_Init
(&
TimHandle
);
99
if
(status ==
HAL_OK
)
100
{
101
/* Start the TIM time Base generation in interrupt mode */
102
status =
HAL_TIM_Base_Start_IT
(&
TimHandle
);
103
if
(status ==
HAL_OK
)
104
{
105
/* Enable the TIM6 global Interrupt */
106
HAL_NVIC_EnableIRQ
(TIM6_DAC_IRQn);
107
108
if
(TickPriority < (1UL << __NVIC_PRIO_BITS))
109
{
110
/* Enable the TIM6 global Interrupt */
111
HAL_NVIC_SetPriority
(TIM6_DAC_IRQn, TickPriority, 0);
112
uwTickPrio
= TickPriority;
113
}
114
else
115
{
116
status =
HAL_ERROR
;
117
}
118
}
119
}
120
121
/* Return function status */
122
return
status;
123
}
124
130
void
HAL_SuspendTick
(
void
)
131
{
132
/* Disable TIM6 update Interrupt */
133
__HAL_TIM_DISABLE_IT
(&
TimHandle
,
TIM_IT_UPDATE
);
134
}
135
141
void
HAL_ResumeTick
(
void
)
142
{
143
/* Enable TIM6 Update interrupt */
144
__HAL_TIM_ENABLE_IT
(&
TimHandle
,
TIM_IT_UPDATE
);
145
}
146
155
void
HAL_TIM_PeriodElapsedCallback
(
TIM_HandleTypeDef
*htim)
156
{
157
HAL_IncTick
();
158
}
159
164
void
TIM6_DAC_IRQHandler
(
void
)
165
{
166
HAL_TIM_IRQHandler
(&
TimHandle
);
167
}
168
172
176
177
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
HAL_IncTick
void HAL_IncTick(void)
This function is called to increment a global variable "uwTick" used as application time base.
Definition
stm32f4xx_hal.c:312
uwTickPrio
uint32_t uwTickPrio
Definition
stm32f4xx_hal.c:95
TIM6_DAC_IRQHandler
void TIM6_DAC_IRQHandler(void)
This function handles TIM interrupt request.
Definition
stm32f4xx_hal_timebase_tim_template.c:164
HAL_ResumeTick
void HAL_ResumeTick(void)
Resume Tick increment.
Definition
stm32f4xx_hal_timebase_tim_template.c:141
HAL_InitTick
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
This function configures the TIM6 as a time base source. The time source is configured to have 1ms ti...
Definition
stm32f4xx_hal_timebase_tim_template.c:54
HAL_TIM_PeriodElapsedCallback
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
Period elapsed callback in non blocking mode.
Definition
stm32f4xx_hal_timebase_tim_template.c:155
TimHandle
TIM_HandleTypeDef TimHandle
Definition
stm32f4xx_hal_timebase_tim_template.c:40
HAL_SuspendTick
void HAL_SuspendTick(void)
Suspend Tick increment.
Definition
stm32f4xx_hal_timebase_tim_template.c:130
RCC_HCLK_DIV1
#define RCC_HCLK_DIV1
Definition
stm32f4xx_hal_rcc.h:241
HAL_RCC_GetPCLK1Freq
uint32_t HAL_RCC_GetPCLK1Freq(void)
HAL_RCC_GetClockConfig
void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency)
TIM_AUTORELOAD_PRELOAD_DISABLE
#define TIM_AUTORELOAD_PRELOAD_DISABLE
Definition
stm32f4xx_hal_tim.h:550
TIM_COUNTERMODE_UP
#define TIM_COUNTERMODE_UP
Definition
stm32f4xx_hal_tim.h:519
HAL_TIM_Base_Init
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
HAL_TIM_Base_Start_IT
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
HAL_TIM_IRQHandler
void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
__HAL_TIM_DISABLE_IT
#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified TIM interrupt.
Definition
stm32f4xx_hal_tim.h:1154
__HAL_TIM_ENABLE_IT
#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified TIM interrupt.
Definition
stm32f4xx_hal_tim.h:1138
TIM_IT_UPDATE
#define TIM_IT_UPDATE
Definition
stm32f4xx_hal_tim.h:673
stm32f4xx_hal.h
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition.
Definition
stm32f4xx_hal_def.h:39
HAL_ERROR
@ HAL_ERROR
Definition
stm32f4xx_hal_def.h:41
HAL_OK
@ HAL_OK
Definition
stm32f4xx_hal_def.h:40
RCC_ClkInitTypeDef
RCC System, AHB and APB busses clock configuration structure definition.
Definition
stm32f4xx_hal_rcc.h:76
RCC_ClkInitTypeDef::APB1CLKDivider
uint32_t APB1CLKDivider
Definition
stm32f4xx_hal_rcc.h:86
TIM_HandleTypeDef
TIM Time Base Handle Structure definition.
Definition
stm32f4xx_hal_tim.h:340
hal-driver
Src
stm32f4xx_hal_timebase_tim_template.c
Generated by
1.17.0