void init( void ) { SystemInit(); // Set Systick to 1ms interval if (SysTick_Config(SystemCoreClock / 1000)) { // Capture error while (true); } // Disable watchdog WDT_Disable(WDT); // Initialize C library __libc_init_array(); // Disable pull-up on every pin for (uint i = 0u; i < PINS_COUNT; i++) digitalWrite(i, LOW); // Enable parallel access on PIO output data registers PIOA->PIO_OWER = 0xFFFFFFFF; PIOB->PIO_OWER = 0xFFFFFFFF; //PIOC->PIO_OWER = 0xFFFFFFFF; //PIOD->PIO_OWER = 0xFFFFFFFF; //turn off ERASE and JTAG pins MATRIX->CCFG_SYSIO = CCFG_SYSIO_SYSIO12 | CCFG_SYSIO_SYSIO7 | CCFG_SYSIO_SYSIO6 | CCFG_SYSIO_SYSIO5 | CCFG_SYSIO_SYSIO4; // Initialize Serial port UART pins PIO_Configure( g_APinDescription[PINS_USART0].pPort, g_APinDescription[PINS_USART0].ulPinType, g_APinDescription[PINS_USART0].ulPin, g_APinDescription[PINS_USART0].ulPinConfiguration); digitalWrite(0u, HIGH); // Enable pullup for RX0 // Initialize Serial port USART pins // Pins are disconnected from PIO controller and hooked to the peripheral. // Currently PIO_Configure always enables the pullup resistor for peripherals. This appears to be a bug, as it is not written correctly for that purpose, but has that affect. PIO_Configure( g_APinDescription[PINS_UART1].pPort, g_APinDescription[PINS_UART1].ulPinType, g_APinDescription[PINS_UART1].ulPin, g_APinDescription[PINS_UART1].ulPinConfiguration); PIO_Configure( g_APinDescription[B1].pPort, g_APinDescription[B1].ulPinType, g_APinDescription[B1].ulPin, g_APinDescription[B1].ulPinConfiguration); /* TODO: wire up USB ID line and check out USB configuration // Initialize USB pins PIO_Configure( g_APinDescription[PINS_USB].pPort, g_APinDescription[PINS_USB].ulPinType, g_APinDescription[PINS_USB].ulPin, g_APinDescription[PINS_USB].ulPinConfiguration); //TODO: Initialize I2C pins for crypto IC PIO_Configure( g_APinDescription[PINS_SPI].pPort, g_APinDescription[PINS_SPI].ulPinType, g_APinDescription[PINS_SPI].ulPin, g_APinDescription[PINS_SPI].ulPinConfiguration); */ // Initialize Analog Controller pmc_enable_periph_clk(ID_ADC); adc_init(ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP_FAST); adc_configure_timing(ADC, 0, ADC_SETTLING_TIME_3, 1); adc_configure_trigger(ADC, ADC_TRIG_SW, 0); // Disable hardware trigger. adc_disable_interrupt(ADC, 0xFFFFFFFF); // Disable all ADC interrupts. adc_disable_all_channel(ADC); // Initialize analogOutput module analogOutputInit(); }
void init( void ) { SystemInit(); // Set Systick to 1ms interval, common to all SAM3 variants if (SysTick_Config(SystemCoreClock / 1000)) { // Capture error while (true); } // Disable watchdog WDT_Disable(WDT); // Initialize C library __libc_init_array(); // Disable pull-up on every pin for (int i = 0; i < PINS_COUNT; i++) digitalWrite(i, LOW); // Enable parallel access on PIO output data registers PIOA->PIO_OWER = 0xFFFFFFFF; PIOB->PIO_OWER = 0xFFFFFFFF; PIOC->PIO_OWER = 0xFFFFFFFF; PIOD->PIO_OWER = 0xFFFFFFFF; // Initialize Serial port U(S)ART pins PIO_Configure( g_APinDescription[PINS_UART].pPort, g_APinDescription[PINS_UART].ulPinType, g_APinDescription[PINS_UART].ulPin, g_APinDescription[PINS_UART].ulPinConfiguration); digitalWrite(0, HIGH); // Enable pullup for RX0 PIO_Configure( g_APinDescription[PINS_USART0].pPort, g_APinDescription[PINS_USART0].ulPinType, g_APinDescription[PINS_USART0].ulPin, g_APinDescription[PINS_USART0].ulPinConfiguration); PIO_Configure( g_APinDescription[PINS_USART1].pPort, g_APinDescription[PINS_USART1].ulPinType, g_APinDescription[PINS_USART1].ulPin, g_APinDescription[PINS_USART1].ulPinConfiguration); PIO_Configure( g_APinDescription[PINS_USART3].pPort, g_APinDescription[PINS_USART3].ulPinType, g_APinDescription[PINS_USART3].ulPin, g_APinDescription[PINS_USART3].ulPinConfiguration); // Initialize USB pins PIO_Configure( g_APinDescription[PINS_USB].pPort, g_APinDescription[PINS_USB].ulPinType, g_APinDescription[PINS_USB].ulPin, g_APinDescription[PINS_USB].ulPinConfiguration); // Initialize CAN pins /* PIO_Configure( g_APinDescription[PINS_CAN0].pPort, g_APinDescription[PINS_CAN0].ulPinType, g_APinDescription[PINS_CAN0].ulPin, g_APinDescription[PINS_CAN0].ulPinConfiguration); PIO_Configure( g_APinDescription[PINS_CAN1].pPort, g_APinDescription[PINS_CAN1].ulPinType, g_APinDescription[PINS_CAN1].ulPin, g_APinDescription[PINS_CAN1].ulPinConfiguration); */ // Initialize Analog Controller pmc_enable_periph_clk(ID_ADC); adc_init(ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP_FAST); adc_configure_timing(ADC, 0, ADC_SETTLING_TIME_3, 1); adc_configure_trigger(ADC, ADC_TRIG_SW, 0); // Disable hardware trigger. adc_disable_interrupt(ADC, 0xFFFFFFFF); // Disable all ADC interrupts. adc_disable_all_channel(ADC); // Initialize analogOutput module analogOutputInit(); }
void init( void ) { SystemInit(); // Set Systick to 1ms interval, common to all SAM3 variants if (SysTick_Config(SystemCoreClock / 1000)) { // Capture error while (true); } /* Configure the SysTick Handler Priority: Preemption priority and subpriority */ NVIC_SetPriority(SysTick_IRQn, 15); // Disable watchdog //WDT_Disable(WDT); // Initialize C library __libc_init_array(); // default 13pin led will off. pinMode(13,OUTPUT); digitalWrite(13, LOW); /* // Enable parallel access on PIo output data registers PIOA->PIO_OWER = 0xFFFFFFFF; PIOB->PIO_OWER = 0xFFFFFFFF; PIOC->PIO_OWER = 0xFFFFFFFF; PIOD->PIO_OWER = 0xFFFFFFFF; // Initialize Serial port U(S)Art pins PIO_Configure( g_APinDescription[PINS_UART].pport, g_APinDescription[PINS_UART].ulpintype, g_APinDescription[PINS_UART].ulpin, g_APinDescription[PINS_UART].ulpinconfiguration); digitalWrite(0, HIGH); // Enable pullup for rx0 PIO_Configure( g_APinDescription[PINS_USART0].pport, g_APinDescription[PINS_USART0].ulpintype, g_APinDescription[PINS_USART0].ulpin, g_APinDescription[PINS_USART0].ulpinconfiguration); PIO_Configure( g_APinDescription[PINS_USART1].pport, g_APinDescription[PINS_USART1].ulpintype, g_APinDescription[PINS_USART1].ulpin, g_APinDescription[PINS_USART1].ulpinconfiguration); PIO_Configure( g_APinDescription[PINS_USART3].pport, g_APinDescription[PINS_USART3].ulpintype, g_APinDescription[PINS_USART3].ulpin, g_APinDescription[PINS_USART3].ulpinconfiguration); // Initialize USB pins PIO_Configure( g_APinDescription[PINS_USB].pport, g_APinDescription[PINS_USB].ulpintype, g_APinDescription[PINS_USB].ulpin, g_APinDescription[PINS_USB].ulpinconfiguration); // Initialize CAN pins PIO_Configure( g_APinDescription[PINS_CAN0].pport, g_APinDescription[PINS_CAN0].ulpintype, g_APinDescription[PINS_CAN0].ulpin, g_APinDescription[PINS_CAN0].ulpinconfiguration); PIO_Configure( g_APinDescription[PINS_CAN1].pport, g_APinDescription[PINS_CAN1].ulpintype, g_APinDescription[PINS_CAN1].ulPin, g_APinDescription[PINS_CAN1].ulPinConfiguration); */ //disable JTAG-DP,release pin 29(PB3),30(PB4),23(PA15) RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); ////remap Timer4 //GPIO_PinRemapConfig(GPIO_Remap_TIM4,ENABLE); ////remap USART3 //GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE); ////remap USART2 //GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE); ////remap CAN1,to PD0,PD1 //GPIO_PinRemapConfig(GPIO_Remap2_CAN1,ENABLE); // Initialize Analog Controller ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; //RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOC, ENABLE); // Enable ADC1 clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); ADC_DeInit(); ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_6Cycles; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; ADC_CommonInit(&ADC_CommonInitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; /* ADC1 regular channel 12 configuration ************************************/ ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //ADC_InitStructure.ADC_ExternalTrigConv = ; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1, &ADC_InitStructure); // Enable ADC1 ADC_Cmd(ADC1, ENABLE); // Enable ADC1 reset calibration register //ADC_ResetCalibration(ADC1); // Check the end of ADC1 reset calibration register while(ADC_GetSoftwareStartConvStatus(ADC1)); // Start ADC1 calibration //ADC_StartCalibration(ADC1); // Check the end of ADC1 calibration //while(ADC_GetCalibrationStatus(ADC1)); // Initialize analogOutput module analogOutputInit(); /* Configure the NVIC Preemption Priority Bits */ /* 4 bits for pre-emption priority(0-15 PreemptionPriority) and 0 bits for subpriority(0 SubPriority) */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); }