diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl
index 3da5201039..ab632daf34 100644
--- a/src/systems/abstractsystem.jl
+++ b/src/systems/abstractsystem.jl
@@ -1330,11 +1330,17 @@ end
 """
 $(TYPEDSIGNATURES)
 
-Get the parameters of the system `sys` and its subsystems.
+Get the standard parameters of the system `sys` and its subsystems.
 
-See also [`@parameters`](@ref) and [`ModelingToolkit.get_ps`](@ref).
+# Keyword arguments
+
+- `initial_parameters`: Whether to include parameters for initial values of variables in the initialization system.
+- `dependent_parameters`: Whether to include parameters that are determined by parameter dependencies.
+
+See also [`full_parameters`](@ref) and [`ModelingToolkit.get_ps`](@ref).
 """
-function parameters(sys::AbstractSystem; initial_parameters = false)
+function parameters(
+        sys::AbstractSystem; initial_parameters = false, dependent_parameters = false)
     ps = get_ps(sys)
     if ps == SciMLBase.NullParameters()
         return []
@@ -1343,12 +1349,15 @@ function parameters(sys::AbstractSystem; initial_parameters = false)
         ps = first.(ps)
     end
     systems = get_systems(sys)
-    result = unique(isempty(systems) ? ps :
-                    [ps; reduce(vcat, namespace_parameters.(systems))])
+    ps = unique(isempty(systems) ? ps :
+                [ps; reduce(vcat, namespace_parameters.(systems))])
     if !initial_parameters && !is_initializesystem(sys)
-        filter!(x -> !iscall(x) || !isa(operation(x), Initial), result)
+        filter!(x -> !iscall(x) || !isa(operation(x), Initial), ps)
     end
-    return result
+    if dependent_parameters
+        ps = vcat(ps, ModelingToolkit.dependent_parameters(sys))
+    end
+    return ps
 end
 
 function dependent_parameters(sys::AbstractSystem)
@@ -1387,8 +1396,15 @@ function parameter_dependencies(sys::AbstractSystem)
     return vcat(namespaced_deps, pdeps)
 end
 
+"""
+$(TYPEDSIGNATURES)
+
+Get all parameters of the system `sys` and its subsystems, including initial values and dependent parameters.
+
+See also [`parameters`](@ref) and [`ModelingToolkit.get_ps`](@ref).
+"""
 function full_parameters(sys::AbstractSystem)
-    vcat(parameters(sys; initial_parameters = true), dependent_parameters(sys))
+    return parameters(sys; initial_parameters = true, dependent_parameters = true)
 end
 
 """
diff --git a/test/split_parameters.jl b/test/split_parameters.jl
index 74f8d41d73..14cd1ad14c 100644
--- a/test/split_parameters.jl
+++ b/test/split_parameters.jl
@@ -311,3 +311,20 @@ end
     @test sysref.subsys.c in ps
     @test length(ps) == 2
 end
+
+@testset "Parameter getter flags" begin
+    evalinterp(I, t) = I(t)
+    @register_symbolic evalinterp(I::LinearInterpolation, t)
+
+    @parameters P1 P2 (C::LinearInterpolation)(..) I::LinearInterpolation
+    @variables x(t) y(t)
+    eqs = [D(x) ~ P1 + P2 + C(t) + evalinterp(I, y), y ~ 2 * x]
+    pdeps = [P1 ~ 2 * P2]
+    @named M = ODESystem(eqs, t; parameter_dependencies = pdeps)
+    Ms = structural_simplify(M)
+
+    @test Set(parameters(Ms)) == Set([P2, I, C])
+    @test Set(parameters(Ms; initial_parameters = true)) ==
+          Set([P2, I, C, Initial(P1), Initial(x), Initial(y)])
+    @test Set(parameters(Ms; dependent_parameters = true)) == Set([P2, I, C, P1])
+end