no clue why, it didn't happen on my system.
i would always prevent using function definition within a dynamic environement since function evaluation can be done using Initialization or out side the manipulate command. If the input of the function is a dynamic parameter the function will reevaulate anyways.
Manipulate[
 l = p/r;(*Drawing hole radius as a percent of drawing disk radius*)
 k = r/R0;
 (*Drawing disk radius as a percent of stationary outer ring radius*)
 r = Clip[Round[r], {1, R0 - 1}];
 p = Clip[Round[p], {1, r - 1}];
 ParametricPlot[{
   Fx[t1], Fy[t1]}, {t1, 0, R Pi},
  Epilog -> Circle[{0, 0}, R0],
  PlotRange -> R0 {{-1.1, 1.1}, {-1.1, 1.1}}]
 ,
 {{R0, 32, "Stationary ring inner radius"}, 10, 200, 10, 
  Appearance -> "Labeled"},
 {{r, Round[R0/2], "Drawing disk radius"}, 1, Dynamic[R0 - 1], 1, 
  Appearance -> "Labeled"},
 {{p, Round[r/2], "Drawing hole radius"}, 1, Dynamic[r - 1], 1, 
  Appearance -> "Labeled"},
 {{R, 30, "Number of rotations"}, 1, 150, 10, Appearance -> "Labeled"},
 {l, ControlType -> None}, {k, ControlType -> None}
 , Initialization :> {
   Fx[t1_] := R0 ((1 - k) Cos[t1] + (l k Cos[((1 - k)/k)*t1])),
   Fy[t1_] := R0 ((1 - k) Sin[t1] - (l k Sin[((1 - k)/k)*t1]))
   }
 ]
Also using module within manipulate can be prevented by using the local parameters as manipulate variables without a control. this also localizes the variables, not sure but DynamicModule could be used instead if the parameter definitions should be dynamic..