Слияние кода завершено, страница обновится автоматически
#include "luat_base.h"
#include "luat_mcu.h"
#include "wm_include.h"
#include "wm_cpu.h"
#include "wm_internal_flash.h"
#include "FreeRTOS.h"
#include "task.h"
#define LUAT_LOG_TAG "mcu"
#include "luat_log.h"
/*
enum CPU_CLK{
CPU_CLK_240M = 2,
CPU_CLK_160M = 3,
CPU_CLK_80M = 6,
CPU_CLK_40M = 12,
CPU_CLK_2M = 240,
};
*/
int luat_mcu_set_clk(size_t mhz) {
switch(mhz) {
case 240:
tls_sys_clk_set(CPU_CLK_240M);
break;
case 160:
tls_sys_clk_set(CPU_CLK_160M);
break;
case 80:
tls_sys_clk_set(CPU_CLK_80M);
break;
case 40:
tls_sys_clk_set(CPU_CLK_40M);
break;
case 2:
tls_sys_clk_set(CPU_CLK_2M);
break;
default :
return -1;
}
return 0;
}
int luat_mcu_get_clk(void) {
tls_sys_clk sysclk;
tls_sys_clk_get(&sysclk);
return sysclk.cpuclk;
}
static u8 unique_id[18] = {0};
static u8 unique_id_got = 0;
const char* luat_mcu_unique_id(size_t* t) {
if (!unique_id_got && tls_fls_read_unique_id(unique_id) == 0)
unique_id_got = 1;
*t = unique_id_got ? unique_id[1]+2 : 0;
return unique_id;
}
long luat_mcu_ticks(void) {
return xTaskGetTickCount();
}
uint32_t luat_mcu_hz(void) {
return configTICK_RATE_HZ;
}
#include "wm_include.h"
#include "wm_timer.h"
#include "wm_regs.h"
uint32_t us_timer_ticks = 0;
u8 u64_tick_timer_id = 0;
static void utimer_cb(void* arg) {
us_timer_ticks ++;
}
void luat_mcu_tick64_init(void) {
struct tls_timer_cfg cfg = {0};
cfg.unit = TLS_TIMER_UNIT_US;
cfg.timeout = (u32)(-1);
cfg.is_repeat = 1;
cfg.callback = utimer_cb;
cfg.arg = NULL;
u64_tick_timer_id = tls_timer_create(&cfg);
tls_timer_start(u64_tick_timer_id);
}
uint64_t luat_mcu_tick64(void) {
uint64_t ret = ((uint64_t) us_timer_ticks) << 32;
ret += M32(HR_TIMER0_CNT + 4*u64_tick_timer_id);
return ret;
}
int luat_mcu_us_period(void) {
return 1;
}
uint64_t luat_mcu_tick64_ms(void) {
return luat_mcu_tick64() / 1000;
}
void luat_mcu_set_clk_source(uint8_t source_main, uint8_t source_32k, uint32_t delay) {
LLOGE("not support setXTAL");
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )