Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
card10
firmware
Commits
e524d839
Commit
e524d839
authored
Sep 15, 2021
by
schneider
Browse files
fix(pycardium): Fix potential race when systick counts from 1 to 0
parent
a80eb9a4
Pipeline
#5252
passed with stages
in 1 minute and 30 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
pycardium/mphalport.c
View file @
e524d839
...
...
@@ -166,13 +166,16 @@ void SysTick_Handler(void)
static
uint64_t
systick_get_us
()
{
uint32_t
val
,
count
;
uint32_t
irqsaved
=
__get_PRIMASK
();
/* The asynchronous/slow clocking of the systick means that
* its value can jump to 0 before the interrupt is triggered.
* Simply wait until it is not 0 and then read the count. */
do
{
__set_PRIMASK
(
0
);
val
=
SysTick
->
VAL
;
count
=
systick_count
;
__set_PRIMASK
(
irqsaved
);
}
while
(
val
==
0
);
uint64_t
us
=
count
*
SYSTICK_INTERVAL_US
+
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment