Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
/*
* 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>
#ifdef __ADC__
#include <hpl_adc_base.h>
/* The channel amount for ADC */
#define ADC_0_CH_AMOUNT 1
/* The buffer size for ADC */
#define ADC_0_BUFFER_SIZE 16
/* The maximal channel number of enabled channels */
#define ADC_0_CH_MAX 0
struct adc_async_descriptor ADC_0;
struct adc_async_channel_descriptor ADC_0_ch[ADC_0_CH_AMOUNT];
static uint8_t ADC_0_buffer[ADC_0_BUFFER_SIZE];
static uint8_t ADC_0_map[ADC_0_CH_MAX + 1];
/**
* \brief ADC initialization function
*
* Enables ADC peripheral, clocks and initializes ADC driver
*/
void ADC_0_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, ADC);
_gclk_enable_channel(ADC_GCLK_ID, CONF_GCLK_ADC_SRC);
adc_async_init(&ADC_0, ADC, ADC_0_map, ADC_0_CH_MAX, ADC_0_CH_AMOUNT, &ADC_0_ch[0], (void *)NULL);
adc_async_register_channel_buffer(&ADC_0, 0, ADC_0_buffer, ADC_0_BUFFER_SIZE);
// Disable digital pin circuitry
gpio_set_pin_direction(LDR, GPIO_DIRECTION_OFF);
gpio_set_pin_function(LDR, PINMUX_PA02B_ADC_AIN0);
}
#endif
struct timer_descriptor TIMER_0;
struct timer_descriptor TIMER_1;
struct spi_m_async_descriptor SPI_0;
struct i2c_m_async_desc I2C_0;
struct usart_sync_descriptor USART_0;
struct calendar_descriptor CALENDAR_0;
void EXTERNAL_IRQ_0_init(void)
{
_gclk_enable_channel(EIC_GCLK_ID, CONF_GCLK_EIC_SRC);
#ifdef __TZ__
// Set pin direction to input
gpio_set_pin_direction(TZ1, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(TZ1,
// <y> Pull configuration
// <id> pad_pull_config
// <GPIO_PULL_OFF"> Off
// <GPIO_PULL_UP"> Pull-up
// <GPIO_PULL_DOWN"> Pull-down
GPIO_PULL_DOWN);
gpio_set_pin_function(TZ1, PINMUX_PA18A_EIC_EXTINT2);
// Set pin direction to input
gpio_set_pin_direction(TZ2, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(TZ2,
// <y> Pull configuration
// <id> pad_pull_config
// <GPIO_PULL_OFF"> Off
// <GPIO_PULL_UP"> Pull-up
// <GPIO_PULL_DOWN"> Pull-down
GPIO_PULL_DOWN);
gpio_set_pin_function(TZ2, PINMUX_PA19A_EIC_EXTINT3);
#endif
// Set pin direction to input
gpio_set_pin_direction(PWR_SENSE, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(PWR_SENSE,
// <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(PWR_SENSE, PINMUX_PA05A_EIC_EXTINT5);
// Set pin direction to input
gpio_set_pin_direction(DCF_DATA, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(DCF_DATA,
// <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(DCF_DATA, PINMUX_PA06A_EIC_EXTINT6);
// Set pin direction to input
gpio_set_pin_direction(SWITCH, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(SWITCH,
// <y> Pull configuration
// <id> pad_pull_config
// <GPIO_PULL_OFF"> Off
// <GPIO_PULL_UP"> Pull-up
// <GPIO_PULL_DOWN"> Pull-down
GPIO_PULL_UP);
gpio_set_pin_function(SWITCH, PINMUX_PA15A_EIC_EXTINT15);
ext_irq_init();
}
void SPI_0_PORT_init(void)
{
gpio_set_pin_level(DSPL_DO,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(DSPL_DO, GPIO_DIRECTION_OUT);
gpio_set_pin_function(DSPL_DO, PINMUX_PA08C_SERCOM0_PAD0);
gpio_set_pin_level(DSPL_SCK,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(DSPL_SCK, GPIO_DIRECTION_OUT);
gpio_set_pin_function(DSPL_SCK, PINMUX_PA09C_SERCOM0_PAD1);
// Set pin direction to input
gpio_set_pin_direction(DSPL_MISO, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(DSPL_MISO,
// <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(DSPL_MISO, PINMUX_PA11C_SERCOM0_PAD3);
}
void SPI_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, SERCOM0);
_gclk_enable_channel(SERCOM0_GCLK_ID_CORE, CONF_GCLK_SERCOM0_CORE_SRC);
}
void SPI_0_init(void)
{
SPI_0_CLOCK_init();
spi_m_async_init(&SPI_0, SERCOM0);
SPI_0_PORT_init();
}
void I2C_0_PORT_init(void)
{
gpio_set_pin_pull_mode(DHT_SDA,
// <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(DHT_SDA, PINMUX_PA16C_SERCOM1_PAD0);
gpio_set_pin_pull_mode(DHT_SCL,
// <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(DHT_SCL, PINMUX_PA17C_SERCOM1_PAD1);
}
void I2C_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, SERCOM1);
_gclk_enable_channel(SERCOM1_GCLK_ID_CORE, CONF_GCLK_SERCOM1_CORE_SRC);
_gclk_enable_channel(SERCOM1_GCLK_ID_SLOW, CONF_GCLK_SERCOM1_SLOW_SRC);
}
void I2C_0_init(void)
{
I2C_0_CLOCK_init();
i2c_m_async_init(&I2C_0, SERCOM1);
I2C_0_PORT_init();
}
void USART_0_PORT_init(void)
{
gpio_set_pin_function(PA22, PINMUX_PA22C_SERCOM3_PAD0);
gpio_set_pin_function(PA23, PINMUX_PA23C_SERCOM3_PAD1);
}
void USART_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, SERCOM3);
_gclk_enable_channel(SERCOM3_GCLK_ID_CORE, CONF_GCLK_SERCOM3_CORE_SRC);
}
void USART_0_init(void)
{
USART_0_CLOCK_init();
usart_sync_init(&USART_0, SERCOM3, (void *)NULL);
USART_0_PORT_init();
}
void delay_driver_init(void)
{
delay_init(SysTick);
}
void CALENDAR_0_CLOCK_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBA, RTC);
_gclk_enable_channel(RTC_GCLK_ID, CONF_GCLK_RTC_SRC);
}
void CALENDAR_0_init(void)
{
CALENDAR_0_CLOCK_init();
calendar_init(&CALENDAR_0, RTC);
}
/**
* \brief Timer initialization function
*
* Enables Timer peripheral, clocks and initializes Timer driver
*/
static void TIMER_0_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, TC3);
_gclk_enable_channel(TC3_GCLK_ID, CONF_GCLK_TC3_SRC);
timer_init(&TIMER_0, TC3, _tc_get_timer());
}
/**
* \brief Timer initialization function
*
* Enables Timer peripheral, clocks and initializes Timer driver
*/
static void TIMER_1_init(void)
{
_pm_enable_bus_clock(PM_BUS_APBC, TC4);
_gclk_enable_channel(TC4_GCLK_ID, CONF_GCLK_TC4_SRC);
timer_init(&TIMER_1, TC4, _tc_get_timer());
}
void system_init(void)
{
init_mcu();
// GPIO on PA00
// Set pin direction to input
gpio_set_pin_direction(XIN32, GPIO_DIRECTION_IN);
gpio_set_pin_pull_mode(XIN32,
// <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(XIN32, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA03
gpio_set_pin_level(DCF_CTL,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(DCF_CTL, GPIO_DIRECTION_OUT);
gpio_set_pin_function(DCF_CTL, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA04
gpio_set_pin_level(PERIPHERAL_CTL,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(PERIPHERAL_CTL, GPIO_DIRECTION_OUT);
gpio_set_pin_function(PERIPHERAL_CTL, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA07
gpio_set_pin_level(DCF_PDN,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(DCF_PDN, GPIO_DIRECTION_OUT);
gpio_set_pin_function(DCF_PDN, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA10
gpio_set_pin_level(DSPL_SS,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
// Set pin direction to output
gpio_set_pin_direction(DSPL_SS, GPIO_DIRECTION_OUT);
gpio_set_pin_function(DSPL_SS, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA14
gpio_set_pin_level(LED,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
true);
// Set pin direction to output
gpio_set_pin_direction(LED, GPIO_DIRECTION_OUT);
gpio_set_pin_function(LED, GPIO_PIN_FUNCTION_OFF);
// GPIO on PA27
#ifdef __ADC__
gpio_set_pin_level(LDR_SINK,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
true);
// Set pin direction to output
gpio_set_pin_direction(LDR_SINK, GPIO_DIRECTION_OUT);
gpio_set_pin_function(LDR_SINK, GPIO_PIN_FUNCTION_OFF);
ADC_0_init();
#endif
EXTERNAL_IRQ_0_init();
SPI_0_init();
I2C_0_init();
USART_0_init();
delay_driver_init();
CALENDAR_0_init();
TIMER_0_init();
TIMER_1_init();
}
d9bedbeffThis file is pinned to the selected release. Download the original to open it in your design tool.