Sewi/Firmware/driver_init.c
2026-02-07 16:41:08 +01:00

109 lines
2.2 KiB
C

/*
* Code generated from Atmel Start.
*
* This file will be overwritten when reconfiguring your Atmel Start project.
* Please copy examples or other code you want to keep to a separate file
* to avoid losing it when reconfiguring.
*/
#include "driver_init.h"
#include <peripheral_clk_config.h>
#include <utils.h>
#include <hal_init.h>
#include <hpl_gclk_base.h>
#include <hpl_pm_base.h>
#include <hpl_adc_base.h>
#include <hpl_rtc_base.h>
struct timer_descriptor TIMER_0;
struct adc_sync_descriptor ADC_0;
struct wdt_descriptor WDT_0;
void ADC_0_PORT_init(void)
{
// Disable digital pin circuitry
gpio_set_pin_direction(PIN_ADC, GPIO_DIRECTION_OFF);
gpio_set_pin_function(PIN_ADC, PINMUX_PA04B_ADC_AIN2);
}
void ADC_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, ADC);
_gclk_enable_channel(ADC_GCLK_ID, CONF_GCLK_ADC_SRC);
}
void ADC_0_init(void)
{
ADC_0_CLOCK_init();
ADC_0_PORT_init();
adc_sync_init(&ADC_0, ADC, (void *)NULL);
}
void EXTERNAL_IRQ_0_init(void)
{
_gclk_enable_channel(EIC_GCLK_ID, CONF_GCLK_EIC_SRC);
// Set pin direction to input
gpio_set_pin_direction(PIN_BUTTON, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(PIN_BUTTON,
// <y> Pull configuration
// <id> pad_pull_config
// <GPIO_PULL_OFF"> Off
// <GPIO_PULL_UP"> Pull-up
// <GPIO_PULL_DOWN"> Pull-down
GPIO_PULL_OFF);
gpio_set_pin_function(PIN_BUTTON, PINMUX_PA15A_EIC_EXTINT1);
ext_irq_init();
}
void delay_driver_init(void)
{
delay_init(SysTick);
}
/**
* \brief Timer initialization function
*
* Enables Timer peripheral, clocks and initializes Timer driver
*/
static void TIMER_0_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBA, RTC);
_gclk_enable_channel(RTC_GCLK_ID, CONF_GCLK_RTC_SRC);
timer_init(&TIMER_0, RTC, _rtc_get_timer());
}
void WDT_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBA, WDT);
_gclk_enable_channel(WDT_GCLK_ID, CONF_GCLK_WDT_SRC);
}
void WDT_0_init(void)
{
WDT_0_CLOCK_init();
wdt_init(&WDT_0, WDT);
}
void system_init(void)
{
init_mcu();
ADC_0_init();
EXTERNAL_IRQ_0_init();
delay_driver_init();
TIMER_0_init();
WDT_0_init();
}