-
Notifications
You must be signed in to change notification settings - Fork 72
/
rmp_test_stm32l051c8.h
121 lines (110 loc) · 4.26 KB
/
rmp_test_stm32l051c8.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/******************************************************************************
Filename : rmp_test_stm32l051c8.h
Author : pry
Date : 22/07/2017
Licence : The Unlicense; see LICENSE for details.
Description : The testbench for STM32L051C8.
******************************************************************************/
/* Include *******************************************************************/
#include "rmp.h"
/* End Include ***************************************************************/
/* Define ********************************************************************/
/* Counter read wrapper */
#define RMP_CNT_READ() ((rmp_tim_t)(TIM2->CNT))
/* Memory pool test switch */
/* #define TEST_MEM_POOL */
/* Minimal build switch */
/* #define MINIMAL_SIZE */
/* Timestamp data type */
typedef rmp_u16_t rmp_tim_t;
/* End Define ****************************************************************/
/* Global ********************************************************************/
#ifndef MINIMAL_SIZE
void Int_Handler(void);
rmp_ptr_t Stack_1[256];
rmp_ptr_t Stack_2[256];
TIM_HandleTypeDef TIM2_Handle={0};
TIM_HandleTypeDef TIM21_Handle={0};
void Timer_Init(void);
void Int_Init(void);
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
void TIM21_IRQHandler(void);
void Int_Disable(void);
/* End Global ****************************************************************/
/* Function:Timer_Init ********************************************************
Description : Initialize the timer for timing measurements. This function needs
to be adapted to your specific hardware.
Input : None.
Output : None.
Return : None.
******************************************************************************/
void Timer_Init(void)
{
/* TIM2 clock = CPU clock */
TIM2_Handle.Instance=TIM2;
TIM2_Handle.Init.Prescaler=0;
TIM2_Handle.Init.CounterMode=TIM_COUNTERMODE_UP;
TIM2_Handle.Init.Period=(rmp_tim_t)(-1);
TIM2_Handle.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&TIM2_Handle);
__HAL_RCC_TIM2_CLK_ENABLE();
__HAL_TIM_ENABLE(&TIM2_Handle);
}
/* End Function:Timer_Init ***************************************************/
/* Function:Int_Init **********************************************************
Description : Initialize an periodic interrupt source. This function needs
to be adapted to your specific hardware.
Input : None.
Output : None.
Return : None.
******************************************************************************/
void Int_Init(void)
{
/* TIM21 clock = CPU clock */
TIM21_Handle.Instance=TIM21;
TIM21_Handle.Init.Prescaler=0;
TIM21_Handle.Init.CounterMode=TIM_COUNTERMODE_DOWN;
TIM21_Handle.Init.Period=3600;
TIM21_Handle.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&TIM21_Handle);
__HAL_RCC_TIM21_CLK_ENABLE();
__HAL_TIM_ENABLE(&TIM21_Handle);
/* Clear interrupt pending bit, because we used EGR to update the registers */
__HAL_TIM_CLEAR_IT(&TIM21_Handle, TIM_IT_UPDATE);
HAL_TIM_Base_Start_IT(&TIM21_Handle);
}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM21)
{
/* Set the interrupt priority */
NVIC_SetPriority(TIM21_IRQn,0xFF);
/* Enable timer 21 interrupt */
NVIC_EnableIRQ(TIM21_IRQn);
/* Enable timer 21 clock */
__HAL_RCC_TIM21_CLK_ENABLE();
}
}
/* The interrupt handler */
void TIM21_IRQHandler(void)
{
TIM21->SR=~TIM_FLAG_UPDATE;
Int_Handler();
}
/* End Function:Int_Init *****************************************************/
/* Function:Int_Disable *******************************************************
Description : Disable the periodic interrupt source. This function needs
to be adapted to your specific hardware.
Input : None.
Output : None.
Return : None.
******************************************************************************/
void Int_Disable(void)
{
/* Disable timer 21 interrupt */
NVIC_DisableIRQ(TIM21_IRQn);
}
#endif
/* End Function:Int_Disable **************************************************/
/* End Of File ***************************************************************/
/* Copyright (C) Evo-Devo Instrum. All rights reserved ***********************/