Skip to content

Commit 3bde54d

Browse files
committed
Initial support for CPU frequency selection
1 parent eeabbf4 commit 3bde54d

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

hardware/esp8266com/esp8266/boards.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
menu.UploadSpeed=Upload Speed
2-
2+
menu.CpuFrequency=CPU Frequency
33
##############################################################
44
esp01.name=Generic ESP8266 board
55

@@ -17,6 +17,12 @@ esp01.build.board=ESP8266_ESP01
1717
esp01.build.core=esp8266
1818
esp01.build.variant=esp01
1919

20+
esp01.menu.CpuFrequency.80=80MHz
21+
esp01.menu.CpuFrequency.80.build.f_cpu=80000000L
22+
23+
esp01.menu.CpuFrequency.160=160MHz
24+
esp01.menu.CpuFrequency.160.build.f_cpu=160000000L
25+
2026
esp01.upload.tool=esptool
2127
esp01.menu.UploadSpeed.115200=115200
2228
esp01.menu.UploadSpeed.115200.upload.speed=115200

hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,24 @@ extern "C" {
3737

3838
int atexit(void (*func)()) { return 0; }
3939

40+
extern "C" void ets_update_cpu_frequency(int freqmhz);
4041
void initVariant() __attribute__((weak));
4142
void initVariant() { }
4243

4344
extern void loop();
4445
extern void setup();
4546

47+
void preloop_update_frequency() __attribute__((weak));
48+
void preloop_update_frequency()
49+
{
50+
#if defined(F_CPU) && (F_CPU == 16000000L)
51+
REG_SET_BIT(0x3ff00014, BIT(0));
52+
ets_update_cpu_frequency(160);
53+
#endif
54+
}
55+
56+
57+
4658
extern void (*__init_array_start)(void);
4759
extern void (*__init_array_end)(void);
4860

@@ -87,6 +99,7 @@ static void loop_wrapper()
8799
setup();
88100
setup_done = true;
89101
}
102+
preloop_update_frequency();
90103
loop();
91104
esp_schedule();
92105
}

0 commit comments

Comments
 (0)