Browse Source

machine添加获取时钟的weak实现

heyuanjie87 5 years ago
parent
commit
99d86116db
1 changed files with 24 additions and 3 deletions
  1. 24 3
      port/modules/machine/modmachine.c

+ 24 - 3
port/modules/machine/modmachine.c

@@ -126,10 +126,31 @@ STATIC mp_obj_t machine_soft_reset(void) {
 }
 MP_DEFINE_CONST_FUN_OBJ_0(machine_soft_reset_obj, machine_soft_reset);
 
+/*
+* @param clkid - range 0~127 (e.g 0:SYSCLK 1:HCLK 2:PCLK1 etc)
+*
+* @return 0 - ok, -1 - no such clock
+*/
+RT_WEAK int mp_port_get_freq(int clkid, int *freq)
+{
+    return -1;
+}
+
 STATIC mp_obj_t machine_freq(void) {
-    //TODO
-    MP_RTT_NOT_IMPL_PRINT;
-    return MP_OBJ_SMALL_INT_VALUE(0);
+    int i;
+    mp_obj_list_t *ret_list = m_new(mp_obj_list_t, 1);
+    mp_obj_list_init(ret_list, 0);
+    int freq;
+
+    for (i = 0; i < 128; i ++)
+    {
+        if (mp_port_get_freq(i, &freq) != 0)
+            break;
+
+        mp_obj_list_append(ret_list, mp_obj_new_int(freq));
+    }
+
+    return MP_OBJ_FROM_PTR(ret_list);
 }
 MP_DEFINE_CONST_FUN_OBJ_0(machine_freq_obj, machine_freq);