libyggdrasil
v1.0.0
cortex.h
Go to the documentation of this file.
1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
* _____.___. .___ .__.__ *
3
* \__ | | ____ ____ __| _/___________ _____|__| | *
4
* / | |/ ___\ / ___\ / __ |\_ __ \__ \ / ___/ | | *
5
* \____ / /_/ > /_/ > /_/ | | | \// __ \_\___ \| | |__ *
6
* / ______\___ /\___ /\____ | |__| (____ /____ >__|____/ *
7
* \/ /_____//_____/ \/ \/ \/ *
8
* - Midgard - *
9
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
10
* This software can be used by students and other personal of the *
11
* Bern University of Applied Sciences under the terms of the MIT *
12
* license. *
13
* For other persons this software is under the terms of the GNU *
14
* General Public License version 2. *
15
* *
16
* Copyright © 2021, Bern University of Applied Sciences. *
17
* All rights reserved. *
18
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
26
#pragma once
27
28
#include <
c/common/types.h
>
29
#include <
c/common/attributes.h
>
30
31
#include <core_cm7.h>
32
36
ALWAYS_INLINE
void
core_DisableInterrupts
(
void
) {
37
asm
volatile
(
"cpsid i"
: : :
"memory"
);
38
}
39
43
ALWAYS_INLINE
void
core_EnableInterrupts
(
void
) {
44
asm
volatile
(
"cpsie i"
: : :
"memory"
);
45
}
46
51
ALWAYS_INLINE
void
core_SetInterruptVectorBase
(
addr_t
address) {
52
SCB->VTOR = address;
53
}
54
59
ALWAYS_INLINE
void
core_Delay
(
u32
ms) {
60
u32
startTime = HAL_GetTick();
61
62
while
(HAL_GetTick() < startTime + ms);
63
}
types.h
Commonly used type definitions and helper templates.
addr_t
u32 addr_t
Definition:
types.h:52
core_SetInterruptVectorBase
ALWAYS_INLINE void core_SetInterruptVectorBase(addr_t address)
Sets the base address of the interrupt vector table.
Definition:
cortex.h:51
ALWAYS_INLINE
#define ALWAYS_INLINE
Definition:
attributes.h:34
u32
uint32_t u32
Definition:
types.h:38
core_DisableInterrupts
ALWAYS_INLINE void core_DisableInterrupts(void)
Disables all interrupts.
Definition:
cortex.h:36
attributes.h
Commonly used C and GNU attributes.
core_EnableInterrupts
ALWAYS_INLINE void core_EnableInterrupts(void)
Enables all interrupts.
Definition:
cortex.h:43
core_Delay
ALWAYS_INLINE void core_Delay(u32 ms)
Delays execution by a certain number of milliseconds.
Definition:
cortex.h:37
Inc
c
midgard
core
cortex.h
Generated by
1.8.20