YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
src
MCU
msp432p401r
lock_base_msp432.h
1
/*
2
* lock_base_msp432.h
3
*
4
* A basic lock implementation for msp432
5
*
6
* Created on: 24.07.2017
7
* Author: Andreas Terstegge
8
*/
9
10
#ifndef _LOCK_BASE_MSP432_H
11
#define _LOCK_BASE_MSP432_H
12
13
#include "lock_base_interface.h"
14
#include "msp.h"
15
#include "core_cm4.h"
16
17
class
lock_base_msp432
:
public
lock_base_interface
18
{
19
public
:
20
lock_base_msp432
() : _lock(0) { }
21
virtual
~lock_base_msp432
() =
default
;
22
23
// No copy, no assignment
24
lock_base_msp432
(
const
lock_base_msp432
&) =
delete
;
25
lock_base_msp432
& operator= (
const
lock_base_msp432
&) =
delete
;
26
27
bool
try_lock()
override
{
28
// Try to get exclusive access
29
if
(__LDREXB(&_lock))
return
false
;
30
// Okay, we got it. Try to set the lock
31
bool
res = (__STREXB(1, &_lock) == 0);
32
__DMB
();
33
return
res;
34
}
35
36
void
unlock()
override
{
37
__DMB
();
38
_lock = 0;
39
}
40
41
bool
is_locked()
override
{
42
__DMB
();
43
return
(_lock);
44
}
45
46
private
:
47
uint8_t _lock;
48
};
49
50
#endif
// _LOCK_BASE_MSP432_H
lock_base_interface
Definition
lock_base_interface.h:28
lock_base_msp432
Definition
lock_base_msp432.h:18
__DMB
#define __DMB()
Data Memory Barrier.
Definition
cmsis_armcc.h:195
Generated by
1.12.0