Skip to content

Commit 2f7e69c

Browse files
Fabien-Chouteaureznikmm
authored andcommitted
arch/ARM/cortex_m: add Systick package
1 parent b3d8558 commit 2f7e69c

File tree

2 files changed

+151
-0
lines changed

2 files changed

+151
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
------------------------------------------------------------------------------
2+
-- --
3+
-- Copyright (C) 2022, AdaCore --
4+
-- --
5+
-- Redistribution and use in source and binary forms, with or without --
6+
-- modification, are permitted provided that the following conditions are --
7+
-- met: --
8+
-- 1. Redistributions of source code must retain the above copyright --
9+
-- notice, this list of conditions and the following disclaimer. --
10+
-- 2. Redistributions in binary form must reproduce the above copyright --
11+
-- notice, this list of conditions and the following disclaimer in --
12+
-- the documentation and/or other materials provided with the --
13+
-- distribution. --
14+
-- 3. Neither the name of the copyright holder nor the names of its --
15+
-- contributors may be used to endorse or promote products derived --
16+
-- from this software without specific prior written permission. --
17+
-- --
18+
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
19+
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
20+
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
21+
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
22+
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
23+
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
24+
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
25+
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
26+
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
27+
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
28+
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
29+
-- --
30+
------------------------------------------------------------------------------
31+
32+
with Cortex_M_SVD.SysTick; use Cortex_M_SVD.SysTick;
33+
34+
with HAL; use HAL;
35+
36+
package body Cortex_M.Systick is
37+
38+
---------------
39+
-- Configure --
40+
---------------
41+
42+
procedure Configure
43+
(Source : Clock_Source;
44+
Generate_Interrupt : Boolean;
45+
Reload_Value : HAL.UInt24)
46+
is
47+
begin
48+
SysTick_Periph.CSR.CLKSOURCE :=
49+
(case Source is
50+
when CPU_Clock => Cpu_Clk,
51+
when External_Clock => External_Clk);
52+
53+
SysTick_Periph.CSR.TICKINT :=
54+
(if Generate_Interrupt then Enable else Disable);
55+
56+
SysTick_Periph.RVR.RELOAD := Reload_Value;
57+
SysTick_Periph.CVR.CURRENT := Counter;
58+
end Configure;
59+
60+
------------
61+
-- Enable --
62+
------------
63+
64+
procedure Enable is
65+
begin
66+
SysTick_Periph.CSR.ENABLE := Enable;
67+
end Enable;
68+
69+
-------------
70+
-- Disable --
71+
-------------
72+
73+
procedure Disable is
74+
begin
75+
SysTick_Periph.CSR.ENABLE := Disable;
76+
end Disable;
77+
78+
---------------------
79+
-- Counted_To_Zero --
80+
---------------------
81+
82+
function Counted_To_Zero return Boolean is
83+
begin
84+
return SysTick_Periph.CSR.COUNTFLAG;
85+
end Counted_To_Zero;
86+
87+
-------------
88+
-- Counter --
89+
-------------
90+
91+
function Counter return HAL.UInt24 is
92+
begin
93+
return SysTick_Periph.CVR.CURRENT;
94+
end Counter;
95+
96+
end Cortex_M.Systick;
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
------------------------------------------------------------------------------
2+
-- --
3+
-- Copyright (C) 2022, AdaCore --
4+
-- --
5+
-- Redistribution and use in source and binary forms, with or without --
6+
-- modification, are permitted provided that the following conditions are --
7+
-- met: --
8+
-- 1. Redistributions of source code must retain the above copyright --
9+
-- notice, this list of conditions and the following disclaimer. --
10+
-- 2. Redistributions in binary form must reproduce the above copyright --
11+
-- notice, this list of conditions and the following disclaimer in --
12+
-- the documentation and/or other materials provided with the --
13+
-- distribution. --
14+
-- 3. Neither the name of the copyright holder nor the names of its --
15+
-- contributors may be used to endorse or promote products derived --
16+
-- from this software without specific prior written permission. --
17+
-- --
18+
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
19+
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
20+
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
21+
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
22+
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
23+
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
24+
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
25+
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
26+
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
27+
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
28+
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
29+
-- --
30+
------------------------------------------------------------------------------
31+
32+
with HAL;
33+
34+
package Cortex_M.Systick is
35+
pragma Preelaborate;
36+
37+
type Clock_Source is (CPU_Clock, External_Clock);
38+
39+
procedure Configure (Source : Clock_Source;
40+
Generate_Interrupt : Boolean;
41+
Reload_Value : HAL.UInt24);
42+
43+
procedure Enable;
44+
-- Enable Systick
45+
46+
procedure Disable;
47+
-- Disable Systick
48+
49+
function Counted_To_Zero return Boolean;
50+
-- Return the value of the COUNTFLAB bit of the Control and Status Register
51+
52+
function Counter return HAL.UInt24;
53+
-- Return the current value of the counter
54+
55+
end Cortex_M.Systick;

0 commit comments

Comments
 (0)