How to use IEnumerator? Pls help!

I want to make my enemy wait for 2 seconds when he hit the wall What i must to type in IEnumerator Waitfroseconds type? Everything i tried make him spin or just stay on the place forever pls help me

using UnityEngine;
 using System.Collections;
 
 public class EnemyPatrol : MonoBehaviour {
 
     public float moveSpeed;
     public bool moveRight;
 
     public Transform wallCheck;
     public float wallCheckRadius;
     public LayerMask whatIsWall;
     private bool hittingWall;
 
     public Transform edgeCheck;
     public float edgeCheckRadius;
     private bool notAtEdge;
 
 
     public float enemyWaitTime;
 
     void Start () 
     {
         
     }
         
     void FixedUpdate () {
 
         hittingWall = Physics2D.OverlapCircle (wallCheck.position, wallCheckRadius, whatIsWall);
 
         StartCoroutine (WaitTime());
 
         notAtEdge = Physics2D.OverlapCircle (edgeCheck.position, edgeCheckRadius, whatIsWall);
 
         if(hittingWall || !notAtEdge)
             
             moveRight = !moveRight;
 
         
         if (moveRight) 
         { 
             transform.localScale = new Vector3 (0.75f, 0.75f, 1f);
             GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, GetComponent<Rigidbody2D>().velocity.y);
         } else {
             transform.localScale = new Vector3 (-0.75f, 0.75f, 1f);
             GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, GetComponent<Rigidbody2D>().velocity.y);
         }
     }
 
     IEnumerator WaitTime() {
         yield return new WaitForSeconds (enemyWaitTime);
 
     }
 }

the coroutine won’t keep FixedUpdate from executing. you’re starting it kinda parallel. if you want to wait for code being executed after a wait time, put the code into the coroutine after the wait for seconds. if you want to wait for the coroutine directly, that’s only possible if started from another coroutine with yield return StartCoroutine