K74B/87400/usr/common/systemInit.c

83 lines
2.4 KiB
C
Raw Permalink Normal View History

2024-01-25 14:22:18 +08:00
/**
* @copyright 2015 Indie Semiconductor.
*
* This file is proprietary to Indie Semiconductor.
* All rights reserved. Reproduction or distribution, in whole
* or in part, is forbidden except by express written permission
* of Indie Semiconductor.
*
* @file systemInit.c
* @Author: Jack.Pan
* @E-mail:jack.pan@indiemicro.com
* @Date: 2020/09/10
*/
#include <systemInit.h>
#include <meta.h>
#include <linSlaveTask.h>
#include <linStackTask.h>
#include <wdt_device.h>
#include "PINdef.h"
void gpios_init(void);
void pmu_init(void);
void gpios_init(void)
{
GPIO_Init(IO_KEY3,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_KEY4,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_KEY5,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_KEY6,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_KEY7,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_KEY8,GPIO_DIR_INPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED1,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED2,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED3,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED4,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED5,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(IO_LED6,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
}
void pmu_init(void)
{
SYSCTRLA_SFRS->PMU_ACCESS_KEY.PMU_ACCESS_KEY = 0x0A;
/* Init set BOR voltage level for cpu low voltage safety*/
PMU_BORInit((Bor1V5Thres_t)HWCFG_Get1P5VBOR_Code(), (Bor3V3Thres_t)HWCFG_Get3P3VBOR_Code());
/* Disable wake up timer */
PMU_WakeTimerInit(WAKEUP_TIMEER_DISABLE, WAKEUP_TIMEER_INTERVAL_32768ms);
}
void SYS_Init(void)
{
/* Enable trim revise access enable*/
HWCFG_TrimAccessUnlock();
CRGA_SFRS->MODULERSTREQ = 0xFFU;
/* Init system clock */
Clock_SystemMainClockInit(SYS_MAIN_CLOCK_DIV);
pmu_init();
/* Init global timer engine for driving soft timer */
SysTick_Init(SOFT_TIMER_INTERVAL *1000U * MAIN_CPU_CLOCK, SoftTimer_ExpireCallback);
#if WATCH_DOG_EN == 1U
WDTA_Enable(WDTA_INTERVAL_18432MS); /* 8s */
#endif
/* Init gpios settings */
gpios_init();
/*HWCFG_TrimAccessLockUntilReset();*/
/* tasks init must be called before use. */
TM_PostTask(TASK_ID_SOFT_TIMER);
TM_PostTask(TASK_ID_SAFETY_MONITOR);
TM_PostTask(TASK_ID_MOTOR);
TM_PostTask(TASK_ID_LINS);
TM_PostTask(TASK_ID_PDS);
TM_PostTask(TASK_ID_ADC_MEASURE);
TM_PostTask(TASK_ID_APPL);
}