In this paper, we present a system level dynamic scheduling algorithm to minimize the energy consumption by the DVS processor and multiple non-DVS peripheral devices in a hard real-time system. We show that the previous work which adopts the critical speed as the lower bound for scaling might not be most energy efficient when the energy overhead of shutting-down/waking-up is not negligible. Moreover, the widely used statically defined break even idle time might not be overall energy efficient due to its independence of job execution situations. In our approach, we first present an approach to enhance the computation of break even idle time dynamically. Then a dynamic scheduling approach is proposed in the management of speed determination and task preemption to reduce the energy consumption of the processor and devices. Compared with existing research, our approach can effectively reduce the system-level energy consumption for both CPU and peripheral devices.