Skip to content

Commit 797aa09

Browse files
committed
Add support for CPU frequencies in the IDE board menu
1 parent 3d54e6d commit 797aa09

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

boards.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
menu.UploadSpeed=Upload Speed
2+
menu.CPUFreq=CPU Frequency
23
menu.FlashFreq=Flash Frequency
34
menu.FlashMode=Flash Mode
45
menu.FlashSize=Flash Size
@@ -49,6 +50,35 @@ esp32.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
4950
esp32.menu.PartitionScheme.fatflash=16M Fat
5051
esp32.menu.PartitionScheme.fatflash.build.partitions=ffat
5152

53+
esp32.menu.CPUFreq.240=240MHz
54+
esp32.menu.CPUFreq.240.build.f_cpu=240000000L
55+
esp32.menu.CPUFreq.160=160MHz
56+
esp32.menu.CPUFreq.160.build.f_cpu=160000000L
57+
esp32.menu.CPUFreq.80=80MHz
58+
esp32.menu.CPUFreq.80.build.f_cpu=80000000L
59+
esp32.menu.CPUFreq.40=40MHz (40MHz XTAL)
60+
esp32.menu.CPUFreq.40.build.f_cpu=40000000L
61+
esp32.menu.CPUFreq.26=26MHz (26MHz XTAL)
62+
esp32.menu.CPUFreq.26.build.f_cpu=26000000L
63+
esp32.menu.CPUFreq.20=20MHz (40MHz XTAL)
64+
esp32.menu.CPUFreq.20.build.f_cpu=20000000L
65+
esp32.menu.CPUFreq.13=13MHz
66+
esp32.menu.CPUFreq.13.build.f_cpu=13000000L
67+
esp32.menu.CPUFreq.10=10MHz (40MHz XTAL)
68+
esp32.menu.CPUFreq.10.build.f_cpu=10000000L
69+
esp32.menu.CPUFreq.8=8MHz (40MHz XTAL)
70+
esp32.menu.CPUFreq.8.build.f_cpu=8000000L
71+
esp32.menu.CPUFreq.5=5MHz
72+
esp32.menu.CPUFreq.5.build.f_cpu=5000000L
73+
esp32.menu.CPUFreq.4=4MHz
74+
esp32.menu.CPUFreq.4.build.f_cpu=4000000L
75+
esp32.menu.CPUFreq.3=3MHz
76+
esp32.menu.CPUFreq.3.build.f_cpu=3000000L
77+
esp32.menu.CPUFreq.2=2MHz
78+
esp32.menu.CPUFreq.2.build.f_cpu=2000000L
79+
esp32.menu.CPUFreq.1=1MHz
80+
esp32.menu.CPUFreq.1.build.f_cpu=1000000L
81+
5282
esp32.menu.FlashMode.qio=QIO
5383
esp32.menu.FlashMode.qio.build.flash_mode=dio
5484
esp32.menu.FlashMode.qio.build.boot=qio

cores/esp32/esp32-hal-misc.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ void yield()
4343
}
4444

4545
static uint32_t _cpu_freq_mhz = CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ;
46+
static uint32_t _sys_time_multiplier = 1;
4647

4748
bool setCpuFrequency(uint32_t cpu_freq_mhz){
4849
rtc_cpu_freq_config_t conf, cconf;
@@ -54,10 +55,13 @@ bool setCpuFrequency(uint32_t cpu_freq_mhz){
5455
log_e("CPU clock could not be set to %u MHz", cpu_freq_mhz);
5556
return false;
5657
}
58+
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
5759
log_i("%s: %u / %u = %u Mhz", (conf.source == RTC_CPU_FREQ_SRC_PLL)?"PLL":((conf.source == RTC_CPU_FREQ_SRC_APLL)?"APLL":((conf.source == RTC_CPU_FREQ_SRC_XTAL)?"XTAL":"8M")), conf.source_freq_mhz, conf.div, conf.freq_mhz);
58-
delay(1);
60+
delay(10);
61+
#endif
5962
rtc_clk_cpu_freq_set_config(&conf);
6063
_cpu_freq_mhz = conf.freq_mhz;
64+
_sys_time_multiplier = 80 / getApbFrequency();
6165
return true;
6266
}
6367

@@ -68,12 +72,12 @@ uint32_t getCpuFrequency(){
6872
}
6973

7074
uint32_t getApbFrequency(){
71-
return rtc_clk_apb_freq_get();
75+
return rtc_clk_apb_freq_get() / 1000000;
7276
}
7377

7478
unsigned long IRAM_ATTR micros()
7579
{
76-
return (unsigned long) ((esp_timer_get_time() * 240) / _cpu_freq_mhz);
80+
return (unsigned long) (esp_timer_get_time()) * _sys_time_multiplier;
7781
}
7882

7983
unsigned long IRAM_ATTR millis()
@@ -116,8 +120,8 @@ bool btInUse(){ return false; }
116120

117121
void initArduino()
118122
{
119-
#ifdef ARDUINO_CPU_FREQ
120-
setCpuFrequency(ARDUINO_CPU_FREQ);
123+
#ifdef F_CPU
124+
setCpuFrequency(F_CPU/1000000L);
121125
#endif
122126
#if CONFIG_SPIRAM_SUPPORT
123127
psramInit();

0 commit comments

Comments
 (0)