From 564a68e825255ad1162f26adb7660f1d30c40c53 Mon Sep 17 00:00:00 2001 From: patrick Date: Sat, 21 Aug 2010 20:01:37 +0000 Subject: [PATCH] PipBee: Updating project files to fix compile errors. Routine just toggles each LED successively. There is a known error when enabling the PIOS_COM_Init(); or more specifically PIOS_USART_Init(); which blocks at some point when called. This may be due to the pios_board.c defines which I will check later today. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1361 ebee16cc-31ac-478f-84a7-5cbb03baadba --- flight/PipBee/inc/pios_board.h | 76 ++++---- flight/PipBee/inc/pios_config.h | 26 +-- flight/PipBee/pios_board.c | 330 +++++++++++++++++--------------- flight/PipBee/pipbee.c | 36 ++-- 4 files changed, 247 insertions(+), 221 deletions(-) diff --git a/flight/PipBee/inc/pios_board.h b/flight/PipBee/inc/pios_board.h index 9019bf1fa..2822f9ecd 100644 --- a/flight/PipBee/inc/pios_board.h +++ b/flight/PipBee/inc/pios_board.h @@ -85,29 +85,29 @@ TIM8 | | | | #define PIOS_LED_PINS { PIOS_LED_LED1_GPIO_PIN, PIOS_LED_LED2_GPIO_PIN, PIOS_LED_LED3_GPIO_PIN, PIOS_LED_LED4_GPIO_PIN } #define PIOS_LED_CLKS { PIOS_LED_LED1_GPIO_CLK, PIOS_LED_LED2_GPIO_CLK, PIOS_LED_LED3_GPIO_CLK, PIOS_LED_LED4_GPIO_CLK } -#define USB_LED_ON PIOS_LED_On(LED1); -#define USB_LED_OFF PIOS_LED_Off(LED1); -#define USB_LED_TOGGLE PIOS_LED_Toggle(LED1); -#define LINK_LED_ON PIOS_LED_On(LED2); -#define LINK_LED_OFF PIOS_LED_Off(LED2); -#define LINK_LED_TOGGLE PIOS_LED_Toggle(LED2); -#define RX_LED_ON PIOS_LED_On(LED3); -#define RX_LED_OFF PIOS_LED_Off(LED3); -#define RX_LED_TOGGLE PIOS_LED_Toggle(LED3); -#define TX_LED_ON PIOS_LED_On(LED4); -#define TX_LED_OFF PIOS_LED_Off(LED4); -#define TX_LED_TOGGLE PIOS_LED_Toggle(LED4); +#define USB_LED_ON PIOS_LED_On(LED1) +#define USB_LED_OFF PIOS_LED_Off(LED1) +#define USB_LED_TOGGLE PIOS_LED_Toggle(LED1) +#define LINK_LED_ON PIOS_LED_On(LED2) +#define LINK_LED_OFF PIOS_LED_Off(LED2) +#define LINK_LED_TOGGLE PIOS_LED_Toggle(LED2) +#define RX_LED_ON PIOS_LED_On(LED3) +#define RX_LED_OFF PIOS_LED_Off(LED3) +#define RX_LED_TOGGLE PIOS_LED_Toggle(LED3) +#define TX_LED_ON PIOS_LED_On(LED4) +#define TX_LED_OFF PIOS_LED_Off(LED4) +#define TX_LED_TOGGLE PIOS_LED_Toggle(LED4) //------------------------- // Delay Timer //------------------------- -#define PIOS_DELAY_TIMER TIM2 +#define PIOS_DELAY_TIMER TIM2 #define PIOS_DELAY_TIMER_RCC_FUNC RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE) //------------------------- // System Settings //------------------------- -#define PIOS_MASTER_CLOCK 72000000 +#define PIOS_MASTER_CLOCK 72000000 #define PIOS_PERIPHERAL_CLOCK (PIOS_MASTER_CLOCK / 2) #if defined(USE_BOOTLOADER) #define PIOS_NVIC_VECTTAB_FLASH ((uint32_t)0x08006000) @@ -121,7 +121,7 @@ TIM8 | | | | #define PIOS_IRQ_PRIO_LOW 12 // lower than RTOS #define PIOS_IRQ_PRIO_MID 8 // higher than RTOS #define PIOS_IRQ_PRIO_HIGH 5 // for SPI, ADC, I2C etc... -#define PIOS_IRQ_PRIO_HIGHEST 4 // for USART etc... +#define PIOS_IRQ_PRIO_HIGHEST 4 // for USART etc... //------------------------- // SPI @@ -133,8 +133,8 @@ TIM8 | | | | //------------------------- // PIOS_USART //------------------------- -#define PIOS_USART_RX_BUFFER_SIZE 256 -#define PIOS_USART_TX_BUFFER_SIZE 256 +#define PIOS_USART_RX_BUFFER_SIZE 256 +#define PIOS_USART_TX_BUFFER_SIZE 256 #define PIOS_COM_COM 0 #define PIOS_COM_DEBUG PIOS_COM_COM @@ -151,15 +151,15 @@ TIM8 | | | | // PIOS_ADC_PinGet(7) = //------------------------- //#define PIOS_ADC_OVERSAMPLING_RATE 1 -#define PIOS_ADC_USE_TEMP_SENSOR 0 -#define PIOS_ADC_TEMP_SENSOR_ADC ADC1 +#define PIOS_ADC_USE_TEMP_SENSOR 0 +#define PIOS_ADC_TEMP_SENSOR_ADC ADC1 #define PIOS_ADC_TEMP_SENSOR_ADC_CHANNEL 1 -#define PIOS_ADC_PIN1_GPIO_PORT GPIOB // PB1 (PSU Voltage) -#define PIOS_ADC_PIN1_GPIO_PIN GPIO_Pin_1 // ADC12_IN9 -#define PIOS_ADC_PIN1_GPIO_CHANNEL ADC_Channel_9 -#define PIOS_ADC_PIN1_ADC ADC2 -#define PIOS_ADC_PIN1_ADC_NUMBER 4 +#define PIOS_ADC_PIN1_GPIO_PORT GPIOB // PB1 (PSU Voltage) +#define PIOS_ADC_PIN1_GPIO_PIN GPIO_Pin_1 // ADC12_IN9 +#define PIOS_ADC_PIN1_GPIO_CHANNEL ADC_Channel_9 +#define PIOS_ADC_PIN1_ADC ADC2 +#define PIOS_ADC_PIN1_ADC_NUMBER 4 #define PIOS_ADC_NUM_PINS 1 @@ -167,17 +167,17 @@ TIM8 | | | | #define PIOS_ADC_PINS { PIOS_ADC_PIN1_GPIO_PIN } #define PIOS_ADC_CHANNELS { PIOS_ADC_PIN1_GPIO_CHANNEL } #define PIOS_ADC_MAPPING { PIOS_ADC_PIN1_ADC } -#define PIOS_ADC_CHANNEL_MAPPING { PIOS_ADC_PIN1_ADC_NUMBER } -#define PIOS_ADC_NUM_CHANNELS (PIOS_ADC_NUM_PINS + PIOS_ADC_USE_TEMP_SENSOR) -#define PIOS_ADC_NUM_ADC_CHANNELS 2 +#define PIOS_ADC_CHANNEL_MAPPING { PIOS_ADC_PIN1_ADC_NUMBER } +#define PIOS_ADC_NUM_CHANNELS (PIOS_ADC_NUM_PINS + PIOS_ADC_USE_TEMP_SENSOR) +#define PIOS_ADC_NUM_ADC_CHANNELS 2 #define PIOS_ADC_USE_ADC2 1 -#define PIOS_ADC_CLOCK_FUNCTION RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE) +#define PIOS_ADC_CLOCK_FUNCTION RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE) #define PIOS_ADC_ADCCLK RCC_PCLK2_Div8 /* RCC_PCLK2_Div2: ADC clock = PCLK2/2 */ /* RCC_PCLK2_Div4: ADC clock = PCLK2/4 */ /* RCC_PCLK2_Div6: ADC clock = PCLK2/6 */ /* RCC_PCLK2_Div8: ADC clock = PCLK2/8 */ -#define PIOS_ADC_SAMPLE_TIME ADC_SampleTime_239Cycles5 +#define PIOS_ADC_SAMPLE_TIME ADC_SampleTime_239Cycles5 /* Sample time: */ /* With an ADCCLK = 14 MHz and a sampling time of 293.5 cycles: */ /* Tconv = 239.5 + 12.5 = 252 cycles = 18�s */ @@ -197,33 +197,33 @@ TIM8 | | | | // PIOS_ADC_PinGet(7) = //------------------------- //#define PIOS_ADC_OVERSAMPLING_RATE 1 -#define PIOS_ADC_USE_TEMP_SENSOR 0 -#define PIOS_ADC_TEMP_SENSOR_ADC ADC1 +#define PIOS_ADC_USE_TEMP_SENSOR 0 +#define PIOS_ADC_TEMP_SENSOR_ADC ADC1 #define PIOS_ADC_TEMP_SENSOR_ADC_CHANNEL 1 #define PIOS_ADC_PIN1_GPIO_PORT GPIOB // PB1 (PSU Voltage) #define PIOS_ADC_PIN1_GPIO_PIN GPIO_Pin_1 // ADC12_IN9 #define PIOS_ADC_PIN1_GPIO_CHANNEL ADC_Channel_9 -#define PIOS_ADC_PIN1_ADC ADC2 +#define PIOS_ADC_PIN1_ADC ADC2 #define PIOS_ADC_PIN1_ADC_NUMBER 4 -#define PIOS_ADC_NUM_PINS 1 +#define PIOS_ADC_NUM_PINS 1 #define PIOS_ADC_PORTS { PIOS_ADC_PIN1_GPIO_PORT } #define PIOS_ADC_PINS { PIOS_ADC_PIN1_GPIO_PIN } #define PIOS_ADC_CHANNELS { PIOS_ADC_PIN1_GPIO_CHANNEL } #define PIOS_ADC_MAPPING { PIOS_ADC_PIN1_ADC } -#define PIOS_ADC_CHANNEL_MAPPING { PIOS_ADC_PIN1_ADC_NUMBER } -#define PIOS_ADC_NUM_CHANNELS (PIOS_ADC_NUM_PINS + PIOS_ADC_USE_TEMP_SENSOR) -#define PIOS_ADC_NUM_ADC_CHANNELS 2 +#define PIOS_ADC_CHANNEL_MAPPING { PIOS_ADC_PIN1_ADC_NUMBER } +#define PIOS_ADC_NUM_CHANNELS (PIOS_ADC_NUM_PINS + PIOS_ADC_USE_TEMP_SENSOR) +#define PIOS_ADC_NUM_ADC_CHANNELS 2 #define PIOS_ADC_USE_ADC2 1 -#define PIOS_ADC_CLOCK_FUNCTION RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE) +#define PIOS_ADC_CLOCK_FUNCTION RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE) #define PIOS_ADC_ADCCLK RCC_PCLK2_Div8 /* RCC_PCLK2_Div2: ADC clock = PCLK2/2 */ /* RCC_PCLK2_Div4: ADC clock = PCLK2/4 */ /* RCC_PCLK2_Div6: ADC clock = PCLK2/6 */ /* RCC_PCLK2_Div8: ADC clock = PCLK2/8 */ -#define PIOS_ADC_SAMPLE_TIME ADC_SampleTime_239Cycles5 +#define PIOS_ADC_SAMPLE_TIME ADC_SampleTime_239Cycles5 /* Sample time: */ /* With an ADCCLK = 14 MHz and a sampling time of 293.5 cycles: */ /* Tconv = 239.5 + 12.5 = 252 cycles = 18�s */ diff --git a/flight/PipBee/inc/pios_config.h b/flight/PipBee/inc/pios_config.h index 393257123..e9df5eb1c 100644 --- a/flight/PipBee/inc/pios_config.h +++ b/flight/PipBee/inc/pios_config.h @@ -1,26 +1,26 @@ /** ****************************************************************************** * - * @file pios_config.h + * @file pios_config.h * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. + * @brief PiOS configuration header. * - Central compile time config for the project. * @see The GNU Public License (GPL) Version 3 * *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ diff --git a/flight/PipBee/pios_board.c b/flight/PipBee/pios_board.c index 5463480e2..dfc35ae68 100644 --- a/flight/PipBee/pios_board.c +++ b/flight/PipBee/pios_board.c @@ -7,19 +7,19 @@ * @see The GNU Public License (GPL) Version 3 * *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ @@ -30,118 +30,134 @@ #include /* OP Interface - * - * NOTE: Leave this declared as const data so that it ends up in the + * + * NOTE: Leave this declared as const data so that it ends up in the * .rodata section (ie. Flash) rather than in the .bss section (RAM). */ void PIOS_SPI_perif_irq_handler(void); void DMA1_Channel5_IRQHandler() __attribute__ ((alias ("PIOS_SPI_perif_irq_handler"))); void DMA1_Channel4_IRQHandler() __attribute__ ((alias ("PIOS_SPI_perif_irq_handler"))); -static const struct pios_spi_cfg pios_spi_perif_cfg = { - .regs = SPI1, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - .SPI_BaudRatePrescaler = 7 << 3, /* Maximum divider (ie. slowest clock rate) */ - }, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .handler = PIOS_SPI_perif_irq_handler, - .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), - .init = { - .NVIC_IRQChannel = DMA1_Channel4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel4, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel5, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_4, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .sclk = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_5, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .miso = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .mosi = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, +static const struct pios_spi_cfg pios_spi_perif_cfg = +{ + .regs = SPI1, + .init = + { + .SPI_Mode = SPI_Mode_Master, + .SPI_Direction = SPI_Direction_2Lines_FullDuplex, + .SPI_DataSize = SPI_DataSize_8b, + .SPI_NSS = SPI_NSS_Soft, + .SPI_FirstBit = SPI_FirstBit_MSB, + .SPI_CRCPolynomial = 7, + .SPI_CPOL = SPI_CPOL_High, + .SPI_CPHA = SPI_CPHA_2Edge, + .SPI_BaudRatePrescaler = 7 << 3, /* Maximum divider (ie. slowest clock rate) */ + }, + .dma = + { + .ahb_clk = RCC_AHBPeriph_DMA1, + .irq = + { + .handler = PIOS_SPI_perif_irq_handler, + .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), + .init = + { + .NVIC_IRQChannel = DMA1_Channel4_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .rx = + { + .channel = DMA1_Channel4, + .init = + { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), + .DMA_DIR = DMA_DIR_PeripheralSRC, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_Medium, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + .tx = + { + .channel = DMA1_Channel5, + .init = + { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), + .DMA_DIR = DMA_DIR_PeripheralDST, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_Medium, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + }, + .ssel = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_4, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, + .sclk = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_5, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, + .miso = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_6, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .mosi = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_7, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, }; /* * Board specific number of devices. */ -struct pios_spi_dev pios_spi_devs[] = { - { - .cfg = &pios_spi_perif_cfg, - }, +struct pios_spi_dev pios_spi_devs[] = +{ + { + .cfg = &pios_spi_perif_cfg, + }, }; uint8_t pios_spi_num_devices = NELEMENTS(pios_spi_devs); void PIOS_SPI_perif_irq_handler(void) { - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(PIOS_SPI_PERIF); + /* Call into the generic code to handle the IRQ for this specific device */ + PIOS_SPI_IRQ_Handler(PIOS_SPI_PERIF); } #endif /* PIOS_INCLUDE_SPI */ @@ -154,58 +170,67 @@ void PIOS_SPI_perif_irq_handler(void) */ void PIOS_USART_com_irq_handler(void); void USART3_IRQHandler() __attribute__ ((alias ("PIOS_USART_com_irq_handler"))); -const struct pios_usart_cfg pios_usart_com_cfg = { - .regs = USART1, - .init = { - .USART_BaudRate = 57600, - .USART_WordLength = USART_WordLength_8b, - .USART_Parity = USART_Parity_No, - .USART_StopBits = USART_StopBits_1, - .USART_HardwareFlowControl = USART_HardwareFlowControl_None, - .USART_Mode = USART_Mode_Rx | USART_Mode_Tx, - }, - .irq = { - .handler = PIOS_USART_com_irq_handler, - .init = { - .NVIC_IRQChannel = USART1_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .rx = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .tx = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, +const struct pios_usart_cfg pios_usart_com_cfg = +{ + .regs = USART1, + .init = + { + .USART_BaudRate = 57600, + .USART_WordLength = USART_WordLength_8b, + .USART_Parity = USART_Parity_No, + .USART_StopBits = USART_StopBits_1, + .USART_HardwareFlowControl = USART_HardwareFlowControl_None, + .USART_Mode = USART_Mode_Rx | USART_Mode_Tx, + }, + .irq = + { + .handler = PIOS_USART_com_irq_handler, + .init = + { + .NVIC_IRQChannel = USART1_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .rx = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_10, + .GPIO_Speed = GPIO_Speed_2MHz, + .GPIO_Mode = GPIO_Mode_IPU, + }, + }, + .tx = + { + .gpio = GPIOA, + .init = + { + .GPIO_Pin = GPIO_Pin_9, + .GPIO_Speed = GPIO_Speed_2MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, }; /* * Board specific number of devices. */ -struct pios_usart_dev pios_usart_devs[] = { +struct pios_usart_dev pios_usart_devs[] = +{ #define PIOS_USART_COM 0 - { - .cfg = &pios_usart_com_cfg, - }, + { + .cfg = &pios_usart_com_cfg, + }, }; uint8_t pios_usart_num_devices = NELEMENTS(pios_usart_devs); void PIOS_USART_com_irq_handler(void) { - PIOS_USART_IRQ_Handler(PIOS_USART_COM); + PIOS_USART_IRQ_Handler(PIOS_USART_COM); } #endif /* PIOS_INCLUDE_USART */ @@ -222,11 +247,12 @@ void PIOS_USART_com_irq_handler(void) */ extern const struct pios_com_driver pios_usart_com_driver; -struct pios_com_dev pios_com_devs[] = { - { - .id = PIOS_USART_COM, - .driver = &pios_usart_com_driver, - }, +struct pios_com_dev pios_com_devs[] = +{ + { + .id = PIOS_USART_COM, + .driver = &pios_usart_com_driver, + }, }; const uint8_t pios_com_num_devices = NELEMENTS(pios_com_devs); diff --git a/flight/PipBee/pipbee.c b/flight/PipBee/pipbee.c index d676dc4b4..4663e129c 100644 --- a/flight/PipBee/pipbee.c +++ b/flight/PipBee/pipbee.c @@ -5,21 +5,21 @@ * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @brief Main PipBee functions * @see The GNU Public License (GPL) Version 3 - * + * *****************************************************************************/ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ @@ -53,16 +53,16 @@ int main() // Brings up System using CMSIS functions, enables the LEDs. PIOS_SYS_Init(); - + // Delay system PIOS_DELAY_Init(); - + // UART communication system - PIOS_COM_Init(); - + //PIOS_COM_Init(); // TODO: Find problem when enabling this + // ADC system PIOS_ADC_Init(); - + // SPI link to master PIOS_SPI_Init(); @@ -113,7 +113,7 @@ int main() PIOS_DELAY_WaitmS(200); } - + return 0; }