/* Initializes pin muxing for SPI interface - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_SPI_PinMux(void) { #if (defined(BOARD_NXP_LPCXPRESSO_1549)) /* Enable the clock to the Switch Matrix */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM); /* * Initialize SPI0 pins connect * SCK0: PINASSIGN3[15:8]: Select P0.0 * MOSI0: PINASSIGN3[23:16]: Select P0.16 * MISO0: PINASSIGN3[31:24] : Select P0.10 * SSEL0: PINASSIGN4[7:0]: Select P0.9 */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 0, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 16, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 10, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 9, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_SWM_MovablePinAssign(SWM_SPI0_SCK_IO, 0); /* P0.0 */ Chip_SWM_MovablePinAssign(SWM_SPI0_MOSI_IO, 16);/* P0.16 */ Chip_SWM_MovablePinAssign(SWM_SPI0_MISO_IO, 10);/* P0.10 */ Chip_SWM_MovablePinAssign(SWM_SPI0_SSELSN_0_IO, 9); /* P0.9 */ /* Disable the clock to the Switch Matrix to save power */ Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_SWM); #else /* Configure your own SPI pin muxing here if needed */ #warning "No SPI pin muxing defined" #endif }
static rt_err_t rt_led_init(rt_device_t dev) { /*led2 Blue:P0.31 ,led1 Green:P0.30 ,led0 Red:P0_29 P38,P32*/ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 29, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 10, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 9, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 29); Chip_GPIO_SetPinState(LPC_GPIO, 0, 29, false); Chip_GPIO_SetPinDIROutput(LPC_GPIO, 1, 10); Chip_GPIO_SetPinState(LPC_GPIO, 1, 10, true); Chip_GPIO_SetPinDIROutput(LPC_GPIO, 1, 9); Chip_GPIO_SetPinState(LPC_GPIO, 1, 9, true); led.ctrl[0].num = 29; led.ctrl[0].port = 0; led.ctrl[1].num = 10; led.ctrl[1].port = 1; led.ctrl[2].num = 9; led.ctrl[2].port = 1; return RT_EOK; }
void AVALON_PWM_Init(void) { /* System CLK 48MHz */ Chip_TIMER_Init(LPC_TIMER16_0); Chip_TIMER_Disable(LPC_TIMER16_0); /* CT16B0_MAT0/CT16B0_MAT1/CT16B0_MAT2 Init */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, IOCON_FUNC2 | IOCON_MODE_INACT); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 9, IOCON_FUNC2 | IOCON_MODE_INACT); Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 15, IOCON_FUNC2 | IOCON_MODE_INACT); /* CT16B0_MAT0 duty:50% */ Chip_TIMER_ExtMatchControlSet(LPC_TIMER16_0, 1, TIMER_EXTMATCH_TOGGLE, 0); Chip_TIMER_SetMatch(LPC_TIMER16_0, 0, DUTY_50); /* CT16B0_MAT1 duty:25% */ Chip_TIMER_ExtMatchControlSet(LPC_TIMER16_0, 1, TIMER_EXTMATCH_TOGGLE, 1); Chip_TIMER_SetMatch(LPC_TIMER16_0, 1, DUTY_25); /* CT16B0_MAT2 duty:10% */ Chip_TIMER_ExtMatchControlSet(LPC_TIMER16_0, 1, TIMER_EXTMATCH_TOGGLE, 2); Chip_TIMER_SetMatch(LPC_TIMER16_0, 2, DUTY_10); /* Prescale 0 */ Chip_TIMER_PrescaleSet(LPC_TIMER16_0, 0); /* PWM Period 800Hz */ Chip_TIMER_SetMatch(LPC_TIMER16_0, 3, DUTY_100); Chip_TIMER_ResetOnMatchEnable(LPC_TIMER16_0, 3); /* CT16B0_MAT0/CT16B0_MAT1/CT16B0_MAT2 Enable */ LPC_TIMER16_0->PWMC = 0x7;//pwm Chip_TIMER_Enable(LPC_TIMER16_0); }
void App_Button_Init(void) { ButtonWaiting = 0; //Initialize the timer for the debouncing, but don't start it Chip_TIMER_Init(DEBOUNCE_TIMER); Chip_TIMER_Reset(DEBOUNCE_TIMER); DEBOUNCE_TIMER->PR = 100; DEBOUNCE_TIMER->MCR = (1<<1)|(1<<0); //Enable MR0 match interrupt, Reset TC on MR0 match DEBOUNCE_TIMER->MR[0]= 0xFFFF; //MR0 match value //Enable the IRQ for the timer NVIC_EnableIRQ(DEBOUNCE_TIMER_NVIC_NAME); //Set all button pins to GPIO input with pullup Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTON_1_PORT, BUTTON_1_PIN, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTON_2_PORT, BUTTON_2_PIN, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTON_3_PORT, BUTTON_3_PIN, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTON_4_PORT, BUTTON_4_PIN, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTON_5_PORT, BUTTON_5_PIN, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTON_1_PORT, BUTTON_1_PIN); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTON_2_PORT, BUTTON_2_PIN); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTON_3_PORT, BUTTON_3_PIN); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTON_4_PORT, BUTTON_4_PIN); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTON_5_PORT, BUTTON_5_PIN); //TODO: Probably put this in the main initalization... Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_PINT); //Setup GPIO interrupts for each button /* Configure interrupt channel for the GPIO pin in SysCon block */ Chip_SYSCTL_SetPinInterrupt(BUTTON_1_PININT_INDEX, BUTTON_1_PORT, BUTTON_1_PIN); Chip_SYSCTL_SetPinInterrupt(BUTTON_2_PININT_INDEX, BUTTON_2_PORT, BUTTON_2_PIN); Chip_SYSCTL_SetPinInterrupt(BUTTON_3_PININT_INDEX, BUTTON_3_PORT, BUTTON_3_PIN); Chip_SYSCTL_SetPinInterrupt(BUTTON_4_PININT_INDEX, BUTTON_4_PORT, BUTTON_4_PIN); Chip_SYSCTL_SetPinInterrupt(BUTTON_5_PININT_INDEX, BUTTON_5_PORT, BUTTON_5_PIN); /* Configure channel interrupt as edge sensitive and falling edge interrupt */ Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH(BUTTON_1_PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH(BUTTON_2_PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH(BUTTON_3_PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH(BUTTON_4_PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH(BUTTON_5_PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_PININT, PININTCH(BUTTON_1_PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_PININT, PININTCH(BUTTON_2_PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_PININT, PININTCH(BUTTON_3_PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_PININT, PININTCH(BUTTON_4_PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_PININT, PININTCH(BUTTON_5_PININT_INDEX)); Chip_PININT_ClearIntStatus(LPC_PININT, ((1 << BUTTON_1_PININT_INDEX)|(1<<BUTTON_2_PININT_INDEX)|(1<<BUTTON_3_PININT_INDEX)|(1<<BUTTON_4_PININT_INDEX)|(1<<BUTTON_5_PININT_INDEX)) ); App_EnableButtons(); return; }
void spi_pin_mux() { Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_SCK_PORT, SPI_SCK_PIN, (IOCON_FUNC2 | IOCON_MODE_INACT) | IOCON_DIGMODE_EN); Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_MOSI_PORT, SPI_MOSI_PIN, (IOCON_FUNC2 | IOCON_MODE_INACT) | IOCON_DIGMODE_EN); Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_MISO_PORT, SPI_MISO_PIN, (IOCON_FUNC3 | IOCON_MODE_INACT) | IOCON_DIGMODE_EN); }
static void Init_UART_PinMux(void) { #if (defined(BOARD_NXP_XPRESSO_11U14) || defined(BOARD_NGX_BLUEBOARD_11U24)) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 18, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_MODE_PULLUP); /* PIO0_18 used for RXD */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 19, IOCON_FUNC1 | IOCON_MODE_INACT); /* PIO0_19 used for TXD */ #else #error "No Pin muxing defined for UART operation" #endif }
int main(void) { Dice noppa; uint32_t sysTickRate; #if defined (__USE_LPCOPEN) // Read clock settings and update SystemCoreClock variable SystemCoreClockUpdate(); #if !defined(NO_BOARD_LIB) // Set up and initialize all required blocks and // functions related to the board hardware Board_Init(); // Set the LED to the state of "On" Board_LED_Set(0, true); #endif #endif sysTickRate = Chip_Clock_GetSysTickClockRate(); // Määritellään nappi PB1 toimimaan inputtina Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 0, (IOCON_MODE_PULLUP | IOCON_DIGMODE_EN | IOCON_INV_EN)); Chip_GPIO_SetPinDIRInput(LPC_GPIO, 1, 0); // Määritellään nappi PC0 toimimaan inputtina Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, (IOCON_MODE_PULLUP | IOCON_DIGMODE_EN | IOCON_INV_EN)); Chip_GPIO_SetPinDIRInput(LPC_GPIO, 0, 8); /* Enable and setup SysTick Timer at a periodic rate */ SysTick_Config(sysTickRate / TICKRATE_HZ1); noppa.SetValue(0); while(1) { if (Chip_GPIO_GetPinState(LPC_GPIO, 1,0)) { noppa.SetValue(0); while(Chip_GPIO_GetPinState(LPC_GPIO, 1,0)) { } if(!Chip_GPIO_GetPinState(LPC_GPIO, 1,0)) { noppa.SetValue(calc); } } // Testinappi, kaikki ledit syttyy if (Chip_GPIO_GetPinState(LPC_GPIO, 0,8)) { while(Chip_GPIO_GetPinState(LPC_GPIO, 0,8)) { noppa.SetValue(7); } noppa.SetValue(0); } } return 0; }
/**************************************************************************************************** * @fn i2c_init * Configures the GPIOs, enables clock and also resets the I2C slave * * @param obj - reference to the i2c slave data structure * * @return none * ***************************************************************************************************/ void i2c_init(i2c_t *obj) { /* Enable I2C clock and reset I2C peripheral */ Chip_I2C_Init(I2C_HOSTIF); /* Setup I2C pin mux */ Chip_IOCON_PinMuxSet(LPC_IOCON, HOSTIF_SCL_PIN); Chip_IOCON_PinMuxSet(LPC_IOCON, HOSTIF_SDA_PIN); pi2c_slave_obj = obj; }
void Board_I2C_Init(void) { Chip_SYSCTL_PeriphReset(RESET_I2C0); Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIO0_4, (IOCON_FUNC1)); Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIO0_5, (IOCON_FUNC1)); Chip_SYSCTL_DeassertPeriphReset(RESET_I2C0); Chip_I2C_Init(DEFAULT_I2C); Chip_I2C_SetClockRate(DEFAULT_I2C, SPEED_100KHZ); Chip_I2C_SetMasterEventHandler(DEFAULT_I2C, Chip_I2C_EventHandler); NVIC_EnableIRQ(I2C0_IRQn); }
void Board_UART_Init(uint32_t baudrate) { Chip_IOCON_PinMuxSet(LPC_IOCON, UART_RX_IOCON, (IOCON_FUNC1 | IOCON_MODE_INACT)); // Rx pin Chip_IOCON_PinMuxSet(LPC_IOCON, UART_TX_IOCON, (IOCON_FUNC1 | IOCON_MODE_INACT)); // Tx Pin Chip_UART_Init(LPC_USART); Chip_UART_SetBaud(LPC_USART, baudrate); Chip_UART_ConfigData(LPC_USART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS)); Chip_UART_SetupFIFOS(LPC_USART, (UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2)); Chip_UART_TXEnable(LPC_USART); }
static void Init_ADC_PinMux(void) { #if (defined(BOARD_NXP_XPRESSO_11U14) || defined(BOARD_NGX_BLUEBOARD_11U24)) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 11, FUNC2); #elif defined(BOARD_NXP_XPRESSO_11C24) Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIO0_11, FUNC2); #else #error "Pin muxing for ADC not configured" #endif }
/* Initializes pin muxing for I2C interface - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_I2C_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_54102) /* Connect the I2C_SDA and I2C_SCL signals to port pins */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 27, (IOCON_FUNC1 | IOCON_DIGITAL_EN)); /* I2C2 */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 28, (IOCON_FUNC1 | IOCON_DIGITAL_EN)); /* I2C2 */ #else /* Configure your own I2C pin muxing here if needed */ #warning "No I2C pin muxing defined" #endif }
/* Set pin mux for SSP operation */ static void Init_SSP_PinMux(void) { Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 6, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGMODE_EN)); // SCK Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGMODE_EN)); // MISO Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 9, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGMODE_EN)); // MOSI Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 2, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 2); // SSEL(CS) as GPIO output //Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 22, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 22); // N_RESET as GPIO output }
/* Initializes pin muxing for I2C interface - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_I2C_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_1549) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 22, IOCON_DIGMODE_EN | I2C_MODE); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 23, IOCON_DIGMODE_EN | I2C_MODE); Chip_SWM_EnableFixedPin(SWM_FIXED_I2C0_SCL); Chip_SWM_EnableFixedPin(SWM_FIXED_I2C0_SDA); #else /* Configure your own I2C pin muxing here if needed */ #error "No I2C Pin Muxing defined for this example" #endif }
/* UART Pin mux function - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_UART_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_54000) Chip_Clock_SetAsyncSysconClockDiv(1); /* divided by 1 */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 0, IOCON_MODE_INACT | IOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 1, IOCON_MODE_INACT | IOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF); #else /* Configure your own UART pin muxing here if needed */ #warning No UART pin muxing defined #endif }
static void UART_PinMuxSetup(void) { #if defined(BOARD_NXP_LPCXPRESSO_54102) /* Setup UART TX Pin */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 0, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)); /* Setup UART RX Pin */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 1, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)); Chip_SYSCON_Enable_ASYNC_Syscon(true); /* Enable Async APB */ Chip_Clock_SetAsyncSysconClockDiv(1); /* Set Async clock divider to 1 */ #else #warning "No UART PIN/CLK setup for this example" #endif }
/* Initializes pin muxing for SPI interface - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_SPI_PinMux(void) { #if (defined(BOARD_NXP_LPCXPRESSO_54000)) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 14, (IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); /* SSEL */ Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 3, (IOCON_FUNC5 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); /* SCK */ Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 4, (IOCON_FUNC5 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); /* MISO */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 12, (IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)); /* MOSI */ #else /* Configure your own SPI pin muxing here if needed */ #warning "No SPI pin muxing defined" #endif }
/* Initializes pin muxing for SPI interface - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_SPI_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_54102) /* 1.3 = SPI0_SCK, 0.14 = SPI0_SSELN0, 0.12 = SPI0_MOSI, 1.4 = SPI0_MISO */ Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 3, (IOCON_FUNC5 | IOCON_DIGITAL_EN | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 14, (IOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 12, (IOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 4, (IOCON_FUNC5 | IOCON_DIGITAL_EN | IOCON_MODE_PULLUP)); #else /* Configure your own I2C pin muxing here if needed */ #warning "No I2C pin muxing defined" #endif }
void initRelayPins() { Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4, IOCON_FUNC0 | IOCON_STDI2C_EN); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, IOCON_FUNC0 | IOCON_STDI2C_EN); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 2, IOCON_FUNC0 | IOCON_MODE_INACT); for(int i=0; i<8; i++){ setPinState(i, false); setPinOut(i); } }
static void Init_UART_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_1549) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 13, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 18, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); /* UART signal muxing via SWM */ Chip_SWM_MovablePortPinAssign(SWM_UART0_RXD_I, 0, 13); Chip_SWM_MovablePortPinAssign(SWM_UART0_TXD_O, 0, 18); #else #error "No UART setup defined" #endif }
static void Init_I2C_PinMux(void) { #if (defined(BOARD_NXP_XPRESSO_11U14) || defined(BOARD_NGX_BLUEBOARD_11U24)) Chip_SYSCTL_PeriphReset(RESET_I2C0); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4, IOCON_FUNC1 | I2C_FASTPLUS_BIT); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, IOCON_FUNC1 | I2C_FASTPLUS_BIT); #elif (defined(BOARD_NXP_XPRESSO_11C24) || defined(BOARD_MCORE48_1125)) Chip_SYSCTL_PeriphReset(RESET_I2C0); Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIO0_4, IOCON_FUNC1 | I2C_FASTPLUS_BIT); Chip_IOCON_PinMuxSet(LPC_IOCON, IOCON_PIO0_5, IOCON_FUNC1 | I2C_FASTPLUS_BIT); #else #error "No Pin Muxing defined for I2C operation" #endif }
/* Initialize buttons on the board */ void Board_Buttons_Init(void) { //enable pull-ups Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTONS_ENCA_GPIO_PORT_NUM, BUTTONS_ENCA_GPIO_BIT_NUM, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTONS_ENCB_GPIO_PORT_NUM, BUTTONS_ENCB_GPIO_BIT_NUM, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, BUTTONS_ENCC_GPIO_PORT_NUM, BUTTONS_ENCC_GPIO_BIT_NUM, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN)); //set as input pins Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTONS_ENCA_GPIO_PORT_NUM, BUTTONS_ENCA_GPIO_BIT_NUM); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTONS_ENCB_GPIO_PORT_NUM, BUTTONS_ENCB_GPIO_BIT_NUM); Chip_GPIO_SetPinDIRInput(LPC_GPIO, BUTTONS_ENCC_GPIO_PORT_NUM, BUTTONS_ENCC_GPIO_BIT_NUM); }
static void Init_UART_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_1549) /* Disables pull-ups/pull-downs and enable digital mode */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 13, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 18, (IOCON_MODE_INACT | IOCON_DIGMODE_EN)); /* UART signal muxing via SWM */ Chip_SWM_MovablePortPinAssign(SWM_UART0_RXD_I, 0, 13); Chip_SWM_MovablePortPinAssign(SWM_UART0_TXD_O, 0, 18); #else #warning "No UART nmuxing defined for this example" #endif }
/* UART Pin mux function - note that SystemInit() may already setup your pin muxing at system startup */ static void Init_UART_PinMux(void) { #if defined(BOARD_NXP_LPCXPRESSO_1549) /* UART signals on pins PIO0_13 (FUNC0, U0_TXD) and PIO0_18 (FUNC0, U0_RXD) */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 13, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN)); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 18, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN)); /* UART signal muxing via SWM */ Chip_SWM_MovablePortPinAssign(SWM_UART0_RXD_I, 0, 13); Chip_SWM_MovablePortPinAssign(SWM_UART0_TXD_O, 0, 18); #else #warning "No UART nmuxing defined for this example" #endif }
void adc_init(void) { ADC_CLOCK_SETUP_T ADCSetup; /* * PIO0_12 AD1 V_25 * PIO0_14 AD3 V_18 * PIO0_16 AD5 V_CORE * PIO0_23 AD7 V_09 * */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 12, FUNC2); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 14, FUNC2); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 16, FUNC1); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 23, FUNC1); Chip_ADC_Init(LPC_ADC, &ADCSetup); }
void main (void) { volatile int i; SystemInit (); debug_init (); #ifdef DEBUG_LEVEL debug_set_level (DEBUG_LEVEL); #endif /* configure LED output */ Chip_IOCON_PinMuxSet (LPC_IOCON, LED_STATUS_PIO, IOCON_MODE_INACT | IOCON_FUNC0); Chip_GPIO_SetPinDIROutput (LPC_GPIO, LED_STATUS_PORT, LED_STATUS_PIN); Chip_GPIO_SetPinState (LPC_GPIO, LED_STATUS_PORT, LED_STATUS_PIN, false); DBG_NEWLINE (DBG_LEVEL_INFO); DBG (DBG_LEVEL_INFO, "Debug test firmware (" __GIT_SHA1__ ")"); DBG (DBG_LEVEL_INFO, "Compiled " __DATE__ " at " __TIME__ " on " __BUILD_HOSTNAME__ " using GCC " __VERSION__ " (%d.%d-%d)", __CS_SOURCERYGXX_MAJ__, __CS_SOURCERYGXX_MIN__, __CS_SOURCERYGXX_REV__); DBG (DBG_LEVEL_INFO, "MCU running at %d MHz", SystemCoreClock / 1000000); for (i = 0; i < 0x800000; i++); while (1) { /* toggle LED */ Chip_GPIO_SetPinToggle (LPC_GPIO, LED_STATUS_PORT, LED_STATUS_PIN); DBG (DBG_LEVEL_INFO, "Hello world !!!"); for (i = 0; i < 0x400000; i++); } }
static void usb_pin_clk_init(void) { /* enable USB main clock */ Chip_Clock_SetUSBClockSource(SYSCTL_USBCLKSRC_PLLOUT, 1); /* Enable AHB clock to the USB block and USB RAM. */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_USB); Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_USBRAM); /* power UP USB Phy */ Chip_SYSCTL_PowerUp(SYSCTL_POWERDOWN_USBPAD_PD); /* Enable IOCON clock */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_IOCON); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 3, (IOCON_FUNC1 | IOCON_MODE_INACT)); /* PIO0_3 used for USB_VBUS */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 6, (IOCON_FUNC1 | IOCON_MODE_INACT)); /* PIO0_6 used for USB_CONNECT */ }
/** * This brings up enough clocks to allow the processor to run quickly while initialising memory. * Other platform specific clock init can be done in init_platform() or init_architecture() */ WEAK void init_clocks( void ){ /** This brings up enough clocks to allow the processor to run quickly while initialising memory. * Other platform specific clock init can be done in init_platform() or init_architecture() */ //LPC54xx clock initialized in SystemInit(). #ifdef BOOTLOADER LPC_SYSCTL->SYSAHBCLKCTRL[0] |= 0x00000018; // Magicoe #if defined(__FPU_PRESENT) && __FPU_PRESENT == 1 fpuInit(); #endif #if defined(NO_BOARD_LIB) /* Chip specific SystemInit */ Chip_SystemInit(); #else /* Enable RAM 2 clock */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SRAM2); /* Board specific SystemInit */ Board_SystemInit(); //init pin muxing and clock. #endif LPC_SYSCTL->SYSAHBCLKCTRL[0] |= 0x00000018; // Magicoe Chip_SYSCTL_PowerUp(PDRUNCFG_PD_IRC_OSC_EN|PDRUNCFG_PD_IRC_EN); /* Configure PIN0.21 as CLKOUT with pull-up, monitor the MAINCLK on scope */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 21, IOCON_MODE_PULLUP | IOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF); Chip_Clock_SetCLKOUTSource(SYSCTL_CLKOUTSRC_RTC, 1); Chip_Clock_EnableRTCOsc(); Chip_RTC_Init(LPC_RTC); Chip_RTC_Enable1KHZ(LPC_RTC); Chip_RTC_Enable(LPC_RTC); #endif }
void App_SSP_Init (void) { //Setup pin muxing for SPI pins. //Note: CS pins are not set up here Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 10, (IOCON_FUNC2 | IOCON_MODE_PULLUP)); /* SCK0 */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, (IOCON_FUNC1 | IOCON_MODE_PULLUP)); /* MISO0 */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 9, (IOCON_FUNC1 | IOCON_MODE_PULLUP)); /* MOSI0 */ Chip_SSP_Init(LPC_SSP0); Chip_SSP_SetFormat(LPC_SSP0, SSP_BITS_8, SSP_FRAMEFORMAT_SPI, SSP_CLOCK_CPHA1_CPOL1); Chip_SSP_SetMaster(LPC_SSP0, 1); //Set to master mode Chip_SSP_SetBitRate(LPC_SSP0, 8000000); //Set SSP0 frequency to 8MHz Chip_SSP_Enable(LPC_SSP0); return; }
static void Init_I2C_PinMux(void) { Chip_SYSCTL_PeriphReset(RESET_I2C0); #if defined(BOARD_MANLEY_11U68) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4, IOCON_FUNC1 | I2C_FASTPLUS_BIT); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, IOCON_FUNC1 | I2C_FASTPLUS_BIT); #elif defined(BOARD_NXP_LPCXPRESSO_11U68) Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4, (IOCON_FUNC1 | I2C_FASTPLUS_BIT) | IOCON_DIGMODE_EN); Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, (IOCON_FUNC1 | I2C_FASTPLUS_BIT) | IOCON_DIGMODE_EN); #else #warning "No I2C Pin Muxing defined for this example" #endif }