STM32G0 MCAL 0.0.1
Tiny MCAL for educational purpose.
Loading...
Searching...
No Matches
Mcu_Types.h
Go to the documentation of this file.
1
10#ifndef MCU_TYPES_H__
11#define MCU_TYPES_H__
12
13#include "Registers.h"
14#include "Std_Types.h"
15
20#define MCU_ID_INIT 0x00u
21#define MCU_ID_INIT_RAM 0x01u
22#define MCU_ID_INIT_CLOCK 0x02u
23#define MCU_ID_DISTRIBUTE_PLL_CLOCK 0x03u
24#define MCU_ID_GET_PLL_STATUS 0x04u
25#define MCU_ID_GET_RESET_REASON 0x05u
26#define MCU_ID_GET_RESET_RAW_VALUE 0x06u
27#define MCU_ID_PERFORM_RESET 0x07u
28#define MCU_ID_SET_MODE 0x08u
29#define MCU_ID_GET_VERSION_INFO 0x09u
30#define MCU_ID_GET_RAM_STATE 0x0Au
33
38#define MCU_E_PARAM_CONFIG 0x0Au
39#define MCU_E_PARAM_CLOCK 0x0Bu
40#define MCU_E_PARAM_MODE 0x0Cu
41#define MCU_E_PARAM_RAMSECTION 0x0Du
42#define MCU_E_PLL_NOT_LOCKED 0x0Eu
43#define MCU_E_UNINIT 0x0Fu
44#define MCU_E_PARAM_POINTER 0x10u
45#define MCU_E_INIT_FAILED 0x11u
48
53#ifndef UTEST
54#define MCU_STATIC static
55#else
56#define MCU_STATIC
57#endif
60
65#define MCU_PLL_SOURCE_MASK 0x03u
66#define MCU_PLL_SOURCE_NONE 0x00000000u
67#define MCU_PLL_SOURCE_NOT_VALID 0x00000001u
68#define MCU_PLL_SOURCE_HSI 0x00000002u
69#define MCU_PLL_SOURCE_HSE 0x00000003u
72
77#define MCU_PLL_OUTPUT_PLLP 0u
78#define MCU_PLL_OUTPUT_PLLQ 1u
79#define MCU_PLL_OUTPUT_PLLR 2u
82
87#define MCU_PLLM_OFFSET 4u
88#define MCU_PLLM_MASK 0x70u
89#define MCU_PLLM_DIV1 ( 0x00000000u << MCU_PLLM_OFFSET )
90#define MCU_PLLM_DIV2 ( 0x00000001u << MCU_PLLM_OFFSET )
91#define MCU_PLLM_DIV3 ( 0x00000002u << MCU_PLLM_OFFSET )
92#define MCU_PLLM_DIV4 ( 0x00000003u << MCU_PLLM_OFFSET )
93#define MCU_PLLM_DIV5 ( 0x00000004u << MCU_PLLM_OFFSET )
94#define MCU_PLLM_DIV6 ( 0x00000005u << MCU_PLLM_OFFSET )
95#define MCU_PLLM_DIV7 ( 0x00000006u << MCU_PLLM_OFFSET )
96#define MCU_PLLM_DIV8 ( 0x00000007u << MCU_PLLM_OFFSET )
99
104#define MCU_PLLN_OFFSET 8u
105#define MCU_PLLN_MASK 0x7F00u
106#define MCU_PLLN_MIN_VALUE 8u
107#define MCU_PLLN_MAX_VALUE 86u
110
115#define MCU_PLLP_OFFSET 17u
116#define MCU_PLLP_MASK 0x003E0000u
117#define MCU_PLLP_DIV2 ( 1UL << MCU_PLLP_OFFSET )
118#define MCU_PLLP_DIV3 ( 2UL << MCU_PLLP_OFFSET )
119#define MCU_PLLP_DIV4 ( 3UL << MCU_PLLP_OFFSET )
120#define MCU_PLLP_DIV5 ( 4UL << MCU_PLLP_OFFSET )
121#define MCU_PLLP_DIV6 ( 5UL << MCU_PLLP_OFFSET )
122#define MCU_PLLP_DIV7 ( 6UL << MCU_PLLP_OFFSET )
123#define MCU_PLLP_DIV8 ( 7UL << MCU_PLLP_OFFSET )
124#define MCU_PLLP_DIV9 ( 8UL << MCU_PLLP_OFFSET )
125#define MCU_PLLP_DIV10 ( 9UL << MCU_PLLP_OFFSET )
126#define MCU_PLLP_DIV11 ( 10UL << MCU_PLLP_OFFSET )
127#define MCU_PLLP_DIV12 ( 11UL << MCU_PLLP_OFFSET )
128#define MCU_PLLP_DIV13 ( 12UL << MCU_PLLP_OFFSET )
129#define MCU_PLLP_DIV14 ( 13UL << MCU_PLLP_OFFSET )
130#define MCU_PLLP_DIV15 ( 14UL << MCU_PLLP_OFFSET )
131#define MCU_PLLP_DIV16 ( 15UL << MCU_PLLP_OFFSET )
132#define MCU_PLLP_DIV17 ( 16UL << MCU_PLLP_OFFSET )
133#define MCU_PLLP_DIV18 ( 17UL << MCU_PLLP_OFFSET )
134#define MCU_PLLP_DIV19 ( 18UL << MCU_PLLP_OFFSET )
135#define MCU_PLLP_DIV20 ( 19UL << MCU_PLLP_OFFSET )
136#define MCU_PLLP_DIV21 ( 20UL << MCU_PLLP_OFFSET )
137#define MCU_PLLP_DIV22 ( 21UL << MCU_PLLP_OFFSET )
138#define MCU_PLLP_DIV23 ( 22UL << MCU_PLLP_OFFSET )
139#define MCU_PLLP_DIV24 ( 23UL << MCU_PLLP_OFFSET )
140#define MCU_PLLP_DIV25 ( 24UL << MCU_PLLP_OFFSET )
141#define MCU_PLLP_DIV26 ( 25UL << MCU_PLLP_OFFSET )
142#define MCU_PLLP_DIV27 ( 26UL << MCU_PLLP_OFFSET )
143#define MCU_PLLP_DIV28 ( 27UL << MCU_PLLP_OFFSET )
144#define MCU_PLLP_DIV29 ( 28UL << MCU_PLLP_OFFSET )
145#define MCU_PLLP_DIV30 ( 29UL << MCU_PLLP_OFFSET )
146#define MCU_PLLP_DIV31 ( 30UL << MCU_PLLP_OFFSET )
147#define MCU_PLLP_DIV32 ( 31UL << MCU_PLLP_OFFSET )
150
155#define MCU_PLLQ_OFFSET 25u
156#define MCU_PLLQ_MASK 0x0E000000u
157#define MCU_PLLQ_DIV2 ( 1UL << MCU_PLLQ_OFFSET )
158#define MCU_PLLQ_DIV3 ( 2UL << MCU_PLLQ_OFFSET )
159#define MCU_PLLQ_DIV4 ( 3UL << MCU_PLLQ_OFFSET )
160#define MCU_PLLQ_DIV5 ( 4UL << MCU_PLLQ_OFFSET )
161#define MCU_PLLQ_DIV6 ( 5UL << MCU_PLLQ_OFFSET )
162#define MCU_PLLQ_DIV7 ( 6UL << MCU_PLLQ_OFFSET )
163#define MCU_PLLQ_DIV8 ( 7UL << MCU_PLLQ_OFFSET )
166
171#define MCU_PLLR_OFFSET 9u
172#define MCU_PLLR_MASK 0xE0000000u
173#define MCU_PLLR_DIV2 ( 1UL << MCU_PLLR_OFFSET )
174#define MCU_PLLR_DIV3 ( 2UL << MCU_PLLR_OFFSET )
175#define MCU_PLLR_DIV4 ( 3UL << MCU_PLLR_OFFSET )
176#define MCU_PLLR_DIV5 ( 4UL << MCU_PLLR_OFFSET )
177#define MCU_PLLR_DIV6 ( 5UL << MCU_PLLR_OFFSET )
178#define MCU_PLLR_DIV7 ( 6UL << MCU_PLLR_OFFSET )
179#define MCU_PLLR_DIV8 ( 7UL << MCU_PLLR_OFFSET )
182
187#define MCU_OSCILLATORTYPE_NONE 0u
188#define MCU_OSCILLATORTYPE_HSE 1u
189#define MCU_OSCILLATORTYPE_HSI 2u
190#define MCU_OSCILLATORTYPE_LSE 3u
191#define MCU_OSCILLATORTYPE_LSI 4u
192#define MCU_OSCILLATORTYPE_HSI48 5u
195
200#define MCU_HSE_OFF 0u
201#define MCU_HSE_ON 1u
202#define MCU_HSE_BYPASS 2u
205
210#define MCU_LSE_OFF 0u
211#define MCU_LSE_ON 1u
212#define MCU_LSE_BYPASS 2u
215
220#define MCU_HSI_OFF 0u
221#define MCU_HSI_ON 1u
222#define MCU_HSICALIBRATION_DEFAULT 64u
225
230#define MCU_LSI_OFF 0u
231#define MCU_LSI_ON 1u
234
239#define MCU_HSI48_OFF 0u
240#define MCU_HSI48_ON 1u
243
248#define MCU_HSI_DIV_OFFSET 11u
249#define MCU_HSI_DIV_MASK 0x3800u
250#define MCU_HSI_DIV1 ( 0UL << MCU_HSI_DIV_OFFSET )
251#define MCU_HSI_DIV2 ( 1UL << MCU_HSI_DIV_OFFSET )
252#define MCU_HSI_DIV4 ( 2UL << MCU_HSI_DIV_OFFSET )
253#define MCU_HSI_DIV8 ( 3UL << MCU_HSI_DIV_OFFSET )
254#define MCU_HSI_DIV16 ( 4UL << MCU_HSI_DIV_OFFSET )
255#define MCU_HSI_DIV32 ( 5UL << MCU_HSI_DIV_OFFSET )
256#define MCU_HSI_DIV64 ( 6UL << MCU_HSI_DIV_OFFSET )
257#define MCU_HSI_DIV128 ( 7UL << MCU_HSI_DIV_OFFSET )
260
265#define MCU_HSICALIBRATION_OFFSET 8u
266#define MCU_HSICALIBRATION_MASK 0x7F00u
267#define MCU_HSICALIBRATION_MIN_VALUE 0u
268#define MCU_HSICALIBRATION_MAX_VALUE 127u
271
276#define MCU_SYSCLKSOURCE_MASK 0x07u
277#define MCU_SYSCLKSOURCE_OFFSET 0u
278#define MCU_SYSCLKSOURCE_HSI ( 0u << MCU_SYSCLKSOURCE_OFFSET )
279#define MCU_SYSCLKSOURCE_HSE ( 1u << MCU_SYSCLKSOURCE_OFFSET )
280#define MCU_SYSCLKSOURCE_PLLCLK ( 2u << MCU_SYSCLKSOURCE_OFFSET )
281#define MCU_SYSCLKSOURCE_LSI ( 3u << MCU_SYSCLKSOURCE_OFFSET )
282#define MCU_SYSCLKSOURCE_LSE ( 4u << MCU_SYSCLKSOURCE_OFFSET )
285
290#define MCU_CLOCKTYPE_SYSCLK 0u
291#define MCU_CLOCKTYPE_HCLK 1u
292#define MCU_CLOCKTYPE_PCLK1 2u
295
300#define MCU_AHB_DIV_OFFSET 8u
301#define MCU_AHB_DIV_MASK 0xF00u
302#define MCU_AHB_DIV1 ( 7UL << MCU_AHB_DIV_OFFSET )
303#define MCU_AHB_DIV2 ( 8UL << MCU_AHB_DIV_OFFSET )
304#define MCU_AHB_DIV4 ( 9UL << MCU_AHB_DIV_OFFSET )
305#define MCU_AHB_DIV8 ( 10UL << MCU_AHB_DIV_OFFSET )
306#define MCU_AHB_DIV16 ( 11UL << MCU_AHB_DIV_OFFSET )
307#define MCU_AHB_DIV64 ( 12UL << MCU_AHB_DIV_OFFSET )
308#define MCU_AHB_DIV128 ( 13UL << MCU_AHB_DIV_OFFSET )
309#define MCU_AHB_DIV256 ( 14UL << MCU_AHB_DIV_OFFSET )
310#define MCU_AHB_DIV512 ( 15UL << MCU_AHB_DIV_OFFSET )
313
318#define MCU_APB1_DIV_OFFSET 12u
319#define MCU_APB1_DIV_MASK 0x7000u
320#define MCU_APB1_DIV1 ( 3UL << MCU_APB1_DIV_OFFSET )
321#define MCU_APB1_DIV2 ( 4UL << MCU_APB1_DIV_OFFSET )
322#define MCU_APB1_DIV4 ( 5UL << MCU_APB1_DIV_OFFSET )
323#define MCU_APB1_DIV8 ( 6UL << MCU_APB1_DIV_OFFSET )
324#define MCU_APB1_DIV16 ( 7UL << MCU_APB1_DIV_OFFSET )
327
332#define MCU_PLL_STATE_DISABLED 0u
333#define MCU_PLL_STATE_ENABLED 1u
336
348
358
371
378
385
392
405
416
432
450
462
473
489
501
502#endif
_Mcu_ResetType
Reset types
Definition Mcu_Types.h:365
@ MCU_SW_RESET
Definition Mcu_Types.h:368
@ MCU_POWER_ON_RESET
Definition Mcu_Types.h:366
@ MCU_WATCHDOG_RESET
Definition Mcu_Types.h:367
@ MCU_RESET_UNDEFINED
Definition Mcu_Types.h:369
uint32 Mcu_RamSectionType
Specifies the identification (ID) for a RAM section
Definition Mcu_Types.h:391
enum _Mcu_StatusType Mcu_StatusType
Hardware unit status datatype
struct _Mcu_HwUnit Mcu_HwUnit
Hardware control unit structure
_Mcu_RamStateType
RAM state (valid or invalid)
Definition Mcu_Types.h:401
@ MCU_RAMSTATE_INVALID
Definition Mcu_Types.h:402
@ MCU_RAMSTATE_VALID
Definition Mcu_Types.h:403
struct _Mcu_OscConfigType Mcu_OscConfigType
Osc Config unit structure
enum _Mcu_ResetType Mcu_ResetType
Reset types
struct _Mcu_ConfigType Mcu_ConfigType
Hardware dependent structure
enum _Mcu_PllStatusType Mcu_PllStatusType
Status value returned by the function Mcu_GetPllStatus of the MCU module
uint32 Mcu_ModeType
Specifies the identification (ID) for a MCU mode
Definition Mcu_Types.h:384
uint32 Mcu_ClockType
ID for a clock setting
Definition Mcu_Types.h:357
uint32 Mcu_RawResetType
Specifies the reset reason in raw register format read from reset status register
Definition Mcu_Types.h:377
enum _Mcu_RamStateType Mcu_RamStateType
RAM state (valid or invalid)
_Mcu_PllStatusType
Status value returned by the function Mcu_GetPllStatus of the MCU module
Definition Mcu_Types.h:343
@ MCU_PLL_LOCKED
Definition Mcu_Types.h:344
@ MCU_PLL_STATUS_UNDEFINED
Definition Mcu_Types.h:346
@ MCU_PLL_UNLOCKED
Definition Mcu_Types.h:345
struct _Mcu_SysClkConfigType Mcu_SysClkConfigType
Clk Config unit structure
struct _Mcu_ClkConfigType Mcu_ClkConfigType
McuClk Config unit structure
_Mcu_StatusType
Hardware unit status datatype
Definition Mcu_Types.h:412
@ MCU_STATE_UNINIT
Definition Mcu_Types.h:413
@ MCU_STATE_INIT
Definition Mcu_Types.h:414
struct _Mcu_PllConfigType Mcu_PllConfigType
Pll Config unit structure
unsigned int uint32
Definition Platform_Types.h:98
This file contains definitions and configurations for the NVIC.
Specification of Standard Types
McuClk Config unit structure
Definition Mcu_Types.h:469
Mcu_SysClkConfigType ClkConfig
Definition Mcu_Types.h:471
Mcu_OscConfigType OscConfig
Definition Mcu_Types.h:470
Hardware dependent structure
Definition Mcu_Types.h:482
Mcu_PllStatusType PllStatus
Definition Mcu_Types.h:486
Mcu_ClockType ClockSetting
Definition Mcu_Types.h:483
Mcu_ClkConfigType ClockConfig
Definition Mcu_Types.h:487
Mcu_RamSectionType RamSection
Definition Mcu_Types.h:485
Mcu_ModeType McuMode
Definition Mcu_Types.h:484
Hardware control unit structure
Definition Mcu_Types.h:497
Mcu_StatusType HwUnitState
Definition Mcu_Types.h:499
Mcu_ConfigType * Config
Definition Mcu_Types.h:498
Osc Config unit structure
Definition Mcu_Types.h:439
uint32 OscillatorType
Definition Mcu_Types.h:440
uint32 LSIState
Definition Mcu_Types.h:446
uint32 HSICalibrationValue
Definition Mcu_Types.h:445
uint32 HSEState
Definition Mcu_Types.h:441
Mcu_PllConfigType PLL
Definition Mcu_Types.h:448
uint32 HSIDivider
Definition Mcu_Types.h:444
uint32 HSIState
Definition Mcu_Types.h:443
uint32 HSI48State
Definition Mcu_Types.h:447
uint32 LSEState
Definition Mcu_Types.h:442
Pll Config unit structure
Definition Mcu_Types.h:423
uint32 PllM
Definition Mcu_Types.h:426
uint32 PllP
Definition Mcu_Types.h:428
uint32 PllR
Definition Mcu_Types.h:430
uint32 PLLN
Definition Mcu_Types.h:427
uint32 PllQ
Definition Mcu_Types.h:429
uint32 PllSource
Definition Mcu_Types.h:424
uint32 PllState
Definition Mcu_Types.h:425
Clk Config unit structure
Definition Mcu_Types.h:457
uint32 SysClockSource
Definition Mcu_Types.h:458
uint32 APB1ClockDivider
Definition Mcu_Types.h:460
uint32 AHBClockDivider
Definition Mcu_Types.h:459