blob: a79c13b6797c32d312870913bc4435180dd4a01b (
plain)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
/*!
* @file apm32f0xx_misc.c
*
* @brief This file provides all the miscellaneous firmware functions (add-on to CMSIS functions).
*
* @version V1.0.3
*
* @date 2022-09-20
*
* @attention
*
* Copyright (C) 2020-2022 Geehy Semiconductor
*
* You may not use this file except in compliance with the
* GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
*
* The program is only for reference, which is distributed in the hope
* that it will be useful and instructional for customers to develop
* their software. Unless required by applicable law or agreed to in
* writing, the program is distributed on an "AS IS" BASIS, WITHOUT
* ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
* See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
* and limitations under the License.
*/
/* Includes */
#include "apm32f0xx_misc.h"
/** @addtogroup APM32F0xx_StdPeriphDriver
@{
*/
/** @addtogroup MISC_Driver
@{
*/
/** @defgroup MISC_Macros Macros
@{
*/
/**@} end of group MISC_Macros*/
/** @defgroup MISC_Enumerations Enumerations
@{
*/
/**@} end of group MISC_Enumerations*/
/** @defgroup MISC_Structures Structures
@{
*/
/**@} end of group MISC_Structures*/
/** @defgroup MISC_Variables Variables
@{
*/
/**@} end of group MISC_Variables*/
/** @defgroup MISC_Functions Functions
@{
*/
/*!
* @brief Enable NVIC request
*
* @param irq: The NVIC interrupt request, detailed in IRQn_Type
*
* @param priority: Specifies the priority needed to set
*
* @retval None
*/
void NVIC_EnableIRQRequest(IRQn_Type irq, uint8_t priority)
{
NVIC_SetPriority(irq, priority);
NVIC_EnableIRQ(irq);
}
/*!
* @brief Disable NVIC request
*
* @param irq: The NVIC interrupt request, detailed in IRQn_Type
*
* @retval None
*/
void NVIC_DisableIRQRequest(IRQn_Type irq)
{
NVIC_DisableIRQ(irq);
}
/**
* @brief Enables the system to enter low power mode.
*
* @param lowPowerMode: Specifies the system to enter low power mode.
* This parameter can be one of the following values:
* @arg NVIC_LOWPOER_SEVONPEND: Low Power SEV on Pend.
* @arg NVIC_LOWPOER_SLEEPDEEP: Low Power DEEPSLEEP request.
* @arg NVIC_LOWPOER_SLEEPONEXIT: Low Power Sleep on Exit.
*
* @retval None
*/
void NVIC_EnableSystemLowPower(uint8_t lowPowerMode)
{
SCB->SCR |= lowPowerMode;
}
/**
* @brief Disables the system to enter low power mode.
*
* @param lowPowerMode: Specifies the system to enter low power mode.
* This parameter can be one of the following values:
* @arg NVIC_LOWPOER_SEVONPEND: Low Power SEV on Pend.
* @arg NVIC_LOWPOER_SLEEPDEEP: Low Power DEEPSLEEP request.
* @arg NVIC_LOWPOER_SLEEPONEXIT: Low Power Sleep on Exit.
*
* @retval None
*/
void NVIC_DisableSystemLowPower(uint8_t lowPowerMode)
{
SCB->SCR &= (uint32_t)(~(uint32_t)lowPowerMode);
}
/**
* @brief Configures the SysTick clock source.
*
* @param sysTickCLKSource: specifies the SysTick clock source.
* This parameter can be one of the following values:
* @arg SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clock source.
* @arg SysTick_CLKSource_HCLK: AHB clock selected as SysTick clock source.
*
* @retval None
*/
void SysTick_ConfigCLKSource(uint32_t sysTickCLKSource)
{
if (sysTickCLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}
/*!
* @brief Enter Wait Mode
*
* @param None
*
* @retval None
*/
void PMU_EnterWaitMode(void)
{
SCB->SCR &= (uint32_t)(~(uint32_t)NVIC_LOWPOER_SLEEPDEEP);
__WFI();
}
/*!
* @brief Enter Stop Mode with WFI instruction
*
* @param None
*
* @retval None
*/
void PMU_EnterHaltModeWFI(void)
{
SCB->SCR |= NVIC_LOWPOER_SLEEPDEEP;
__DSB();
__WFI();
}
/*!
* @brief Enter Stop Mode with WFE instruction
*
* @param None
*
* @retval None
*/
void PMU_EnterHaltModeWFE(void)
{
SCB->SCR |= NVIC_LOWPOER_SLEEPDEEP;
__DSB();
__WFE();
}
/**@} end of group MISC_Functions */
/**@} end of group MISC_Driver */
/**@} end of group APM32F0xx_StdPeriphDriver */
|