You've already forked Ada_Drivers_Library
mirror of
https://github.com/AdaCore/Ada_Drivers_Library.git
synced 2026-02-12 12:26:55 -08:00
arch/ARM/cortex_m: add Systick package
This commit is contained in:
96
arch/ARM/cortex_m/src/cortex_m-systick.adb
Normal file
96
arch/ARM/cortex_m/src/cortex_m-systick.adb
Normal file
@@ -0,0 +1,96 @@
|
||||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- Copyright (C) 2022, AdaCore --
|
||||
-- --
|
||||
-- Redistribution and use in source and binary forms, with or without --
|
||||
-- modification, are permitted provided that the following conditions are --
|
||||
-- met: --
|
||||
-- 1. Redistributions of source code must retain the above copyright --
|
||||
-- notice, this list of conditions and the following disclaimer. --
|
||||
-- 2. Redistributions in binary form must reproduce the above copyright --
|
||||
-- notice, this list of conditions and the following disclaimer in --
|
||||
-- the documentation and/or other materials provided with the --
|
||||
-- distribution. --
|
||||
-- 3. Neither the name of the copyright holder nor the names of its --
|
||||
-- contributors may be used to endorse or promote products derived --
|
||||
-- from this software without specific prior written permission. --
|
||||
-- --
|
||||
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
|
||||
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
|
||||
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
|
||||
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
|
||||
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
|
||||
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
|
||||
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
|
||||
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
|
||||
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
|
||||
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
|
||||
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
with Cortex_M_SVD.SysTick; use Cortex_M_SVD.SysTick;
|
||||
|
||||
with HAL; use HAL;
|
||||
|
||||
package body Cortex_M.Systick is
|
||||
|
||||
---------------
|
||||
-- Configure --
|
||||
---------------
|
||||
|
||||
procedure Configure
|
||||
(Source : Clock_Source;
|
||||
Generate_Interrupt : Boolean;
|
||||
Reload_Value : HAL.UInt24)
|
||||
is
|
||||
begin
|
||||
SysTick_Periph.CSR.CLKSOURCE :=
|
||||
(case Source is
|
||||
when CPU_Clock => Cpu_Clk,
|
||||
when External_Clock => External_Clk);
|
||||
|
||||
SysTick_Periph.CSR.TICKINT :=
|
||||
(if Generate_Interrupt then Enable else Disable);
|
||||
|
||||
SysTick_Periph.RVR.RELOAD := Reload_Value;
|
||||
SysTick_Periph.CVR.CURRENT := Counter;
|
||||
end Configure;
|
||||
|
||||
------------
|
||||
-- Enable --
|
||||
------------
|
||||
|
||||
procedure Enable is
|
||||
begin
|
||||
SysTick_Periph.CSR.ENABLE := Enable;
|
||||
end Enable;
|
||||
|
||||
-------------
|
||||
-- Disable --
|
||||
-------------
|
||||
|
||||
procedure Disable is
|
||||
begin
|
||||
SysTick_Periph.CSR.ENABLE := Disable;
|
||||
end Disable;
|
||||
|
||||
---------------------
|
||||
-- Counted_To_Zero --
|
||||
---------------------
|
||||
|
||||
function Counted_To_Zero return Boolean is
|
||||
begin
|
||||
return SysTick_Periph.CSR.COUNTFLAG;
|
||||
end Counted_To_Zero;
|
||||
|
||||
-------------
|
||||
-- Counter --
|
||||
-------------
|
||||
|
||||
function Counter return HAL.UInt24 is
|
||||
begin
|
||||
return SysTick_Periph.CVR.CURRENT;
|
||||
end Counter;
|
||||
|
||||
end Cortex_M.Systick;
|
||||
55
arch/ARM/cortex_m/src/cortex_m-systick.ads
Normal file
55
arch/ARM/cortex_m/src/cortex_m-systick.ads
Normal file
@@ -0,0 +1,55 @@
|
||||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- Copyright (C) 2022, AdaCore --
|
||||
-- --
|
||||
-- Redistribution and use in source and binary forms, with or without --
|
||||
-- modification, are permitted provided that the following conditions are --
|
||||
-- met: --
|
||||
-- 1. Redistributions of source code must retain the above copyright --
|
||||
-- notice, this list of conditions and the following disclaimer. --
|
||||
-- 2. Redistributions in binary form must reproduce the above copyright --
|
||||
-- notice, this list of conditions and the following disclaimer in --
|
||||
-- the documentation and/or other materials provided with the --
|
||||
-- distribution. --
|
||||
-- 3. Neither the name of the copyright holder nor the names of its --
|
||||
-- contributors may be used to endorse or promote products derived --
|
||||
-- from this software without specific prior written permission. --
|
||||
-- --
|
||||
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
|
||||
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
|
||||
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
|
||||
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
|
||||
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
|
||||
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
|
||||
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
|
||||
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
|
||||
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
|
||||
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
|
||||
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
with HAL;
|
||||
|
||||
package Cortex_M.Systick is
|
||||
pragma Preelaborate;
|
||||
|
||||
type Clock_Source is (CPU_Clock, External_Clock);
|
||||
|
||||
procedure Configure (Source : Clock_Source;
|
||||
Generate_Interrupt : Boolean;
|
||||
Reload_Value : HAL.UInt24);
|
||||
|
||||
procedure Enable;
|
||||
-- Enable Systick
|
||||
|
||||
procedure Disable;
|
||||
-- Disable Systick
|
||||
|
||||
function Counted_To_Zero return Boolean;
|
||||
-- Return the value of the COUNTFLAB bit of the Control and Status Register
|
||||
|
||||
function Counter return HAL.UInt24;
|
||||
-- Return the current value of the counter
|
||||
|
||||
end Cortex_M.Systick;
|
||||
Reference in New Issue
Block a user