diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c index 8eb8cc8ca2..736cf3b0a2 100644 --- a/esp8266/esp_mphal.c +++ b/esp8266/esp_mphal.c @@ -93,7 +93,3 @@ void HAL_Delay(uint32_t Delay) { void mp_hal_set_interrupt_char(int c) { // TODO } - -uint32_t mp_hal_get_cpu_freq(void) { - return ets_get_cpu_frequency(); -} diff --git a/esp8266/etshal.h b/esp8266/etshal.h index 5ee67d027f..61d8399db7 100644 --- a/esp8266/etshal.h +++ b/esp8266/etshal.h @@ -5,6 +5,5 @@ void ets_isr_unmask(); void ets_install_putc1(); void ets_isr_attach(); void uart_div_modify(); -uint32_t ets_get_cpu_frequency(); #endif // _INCLUDED_ETSHAL_H_ diff --git a/esp8266/modpyb.c b/esp8266/modpyb.c index 5d57317b73..f02de9e305 100644 --- a/esp8266/modpyb.c +++ b/esp8266/modpyb.c @@ -81,10 +81,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_info_obj, 0, 1, pyb_info); STATIC mp_obj_t pyb_freq(mp_uint_t n_args, const mp_obj_t *args) { if (n_args == 0) { // get - return mp_obj_new_int(mp_hal_get_cpu_freq() * 1000000); + return mp_obj_new_int(system_get_cpu_freq() * 1000000); } else { // set - nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "can't change freq")); + mp_int_t freq = mp_obj_get_int(args[0]) / 1000000; + if (freq != 80 && freq != 160) { + nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, + "frequency can only be either 80Mhz or 160MHz")); + } + system_update_cpu_freq(freq); + return mp_const_none; } } STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_freq_obj, 0, 1, pyb_freq);