Projectiles shoot in time with Update() function, instead of intended firing rate in coroutine.

I have a script that gets an array of targetables from another script, and shoots at them whenever they are in range. However, it shoots as fast as Update can go, instead of a timed firing rate in the coroutine. what fixes can I do to make it fire at intended firing rate?

[RequireComponent(typeof(TarGetter))]
public class ProjectileSpawn : MonoBehaviour
{
    [SerializeField] TarGetter targetter;
    [SerializeField] float firingRate = 1f;
    [SerializeField] int maxRate = 5;
    [SerializeField] GameObject projectile;
    [SerializeField] Transform spawnPoint;
    private const string FIRING_POINT = "Firing Point";
    Coroutine shootTargets;

    public float FiringRate
    {   get { return firingRate; }
        set
        { firingRate = value;
          if(value > maxRate)
            {
                firingRate = maxRate;
            }
        }
    }

    private void Start()
    {
        targetter = GetComponent<TarGetter>();
        spawnPoint = GetComponentInChildren<Transform>().Find(FIRING_POINT);
    }
    private void Update()
    {
        TargetsAcquired();
    }

    private void TargetsAcquired()
    {
       
        foreach (Shape t in targetter.target)
        {
            if (t != null)
            {
                shootTargets = StartCoroutine(FireProjectiles(FiringRate, t));
            }
            else if(!t)
            {
                if (shootTargets != null)
                {
                    StopCoroutine(shootTargets);
                }
                else
                {
                    return;
                }
            }
        }
        
    }

    IEnumerator FireProjectiles(float rate, Shape target)
    {
        while (true)
        {
            GameObject fire = Instantiate(projectile, spawnPoint.transform.position, transform.rotation) as GameObject;
            fire.GetComponent<Projectile>().GetTarget(target);
            yield return new WaitForSeconds(rate);
        }
    }
}

try debugging your rate call Debug.Log(FiringRate); right before you assign shootTargets and Debug.Log(rate); in the start of FireProjectiles.