1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openLuat-luatos-soc-air101

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
luat_mcu_air101.c 2.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Wendal Chen Отправлено 2 лет назад bbbb0ba
#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 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openLuat-luatos-soc-air101.git
git@gitlife.ru:oschina-mirror/openLuat-luatos-soc-air101.git
oschina-mirror
openLuat-luatos-soc-air101
openLuat-luatos-soc-air101
master