git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1334 35acf78f-673a-0410-8e92-d51de3d6d3f4
parent
16178e1c45
commit
8b412a5a70
|
@ -30,6 +30,8 @@
|
||||||
#include "halconf.h"
|
#include "halconf.h"
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|
||||||
|
#include "hal_lld.h"
|
||||||
|
|
||||||
#include "pal.h"
|
#include "pal.h"
|
||||||
#include "adc.h"
|
#include "adc.h"
|
||||||
#include "can.h"
|
#include "can.h"
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
|
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "stm32_dma.h"
|
|
||||||
#include "nvic.h"
|
|
||||||
|
|
||||||
#if CH_HAL_USE_ADC
|
#if CH_HAL_USE_ADC
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,128 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/hal_lld.c
|
||||||
|
* @brief HAL Driver subsystem low level driver source template
|
||||||
|
* @addtogroup HAL_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ch.h>
|
||||||
|
#include <hal.h>
|
||||||
|
|
||||||
|
#define AIRCR_VECTKEY 0x05FA0000
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Digital I/O ports static configuration as defined in @p board.h.
|
||||||
|
*/
|
||||||
|
const STM32GPIOConfig pal_default_config =
|
||||||
|
{
|
||||||
|
{VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
|
||||||
|
{VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
|
||||||
|
{VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
|
||||||
|
{VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
|
||||||
|
#if !defined(STM32F10X_LD)
|
||||||
|
{VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
|
||||||
|
#endif
|
||||||
|
#if defined(STM32F10X_HD)
|
||||||
|
{VAL_GPIOFODR, VAL_GPIOFCRL, VAL_GPIOFCRH},
|
||||||
|
{VAL_GPIOGODR, VAL_GPIOGCRL, VAL_GPIOGCRH},
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver interrupt handlers. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Low level HAL driver initialization.
|
||||||
|
*/
|
||||||
|
void hal_lld_init(void) {
|
||||||
|
|
||||||
|
#if CH_HAL_USE_ADC || CH_HAL_USE_SPI
|
||||||
|
dmaInit();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief STM32 clocks and PLL initialization.
|
||||||
|
* @note All the involved constants come from the file @p board.h.
|
||||||
|
*/
|
||||||
|
void stm32_clock_init(void) {
|
||||||
|
|
||||||
|
/* HSI setup.*/
|
||||||
|
RCC->CR = RCC_CR_HSITRIM_RESET_BITS | RCC_CR_HSION;
|
||||||
|
while (!(RCC->CR & RCC_CR_HSIRDY))
|
||||||
|
; /* Waits until HSI stable. */
|
||||||
|
/* HSE setup.*/
|
||||||
|
RCC->CR |= RCC_CR_HSEON;
|
||||||
|
while (!(RCC->CR & RCC_CR_HSERDY))
|
||||||
|
; /* Waits until HSE stable. */
|
||||||
|
/* PLL setup.*/
|
||||||
|
RCC->CFGR = RCC_CFGR_PLLSRC_HSE_BITS | PLLPREBITS | PLLMULBITS;
|
||||||
|
RCC->CR |= RCC_CR_PLLON;
|
||||||
|
while (!(RCC->CR & RCC_CR_PLLRDY))
|
||||||
|
; /* Waits until PLL stable. */
|
||||||
|
/* Clock sources.*/
|
||||||
|
RCC->CFGR |= RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE1_DIV2 |
|
||||||
|
RCC_CFGR_PPRE2_DIV2 | RCC_CFGR_ADCPRE_DIV8 |
|
||||||
|
RCC_CFGR_MCO_NOCLOCK | USBPREBITS;
|
||||||
|
|
||||||
|
/* Flash setup and final clock selection. */
|
||||||
|
FLASH->ACR = FLASHBITS; /* Flash wait states depending on clock. */
|
||||||
|
RCC->CFGR |= RCC_CFGR_SW_PLL; /* Switches the PLL clock ON. */
|
||||||
|
while ((RCC->CFGR & RCC_CFGR_SW) != RCC_CFGR_SW_PLL)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief STM32 NVIC/SCB/SYSTICK initialization.
|
||||||
|
* @note All the involved constants come from the file @p board.h.
|
||||||
|
*/
|
||||||
|
void stm32_nvic_init(void) {
|
||||||
|
|
||||||
|
/* Note: PRIGROUP 4:0 (4:4).*/
|
||||||
|
SCB->AIRCR = AIRCR_VECTKEY | SCB_AIRCR_PRIGROUP_0 | SCB_AIRCR_PRIGROUP_1;
|
||||||
|
NVICSetSystemHandlerPriority(HANDLER_SVCALL, PRIORITY_SVCALL);
|
||||||
|
NVICSetSystemHandlerPriority(HANDLER_SYSTICK, PRIORITY_SYSTICK);
|
||||||
|
NVICSetSystemHandlerPriority(HANDLER_PENDSV, PRIORITY_PENDSV);
|
||||||
|
|
||||||
|
SysTick->LOAD = SYSCLK / (8000000 / CH_FREQUENCY) - 1;
|
||||||
|
SysTick->VAL = 0;
|
||||||
|
SysTick->CTRL = SysTick_CTRL_ENABLE | SysTick_CTRL_TICKINT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/hal_lld.h
|
||||||
|
* @brief HAL subsystem low level driver header template
|
||||||
|
* @addtogroup HAL_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _HAL_LLD_H_
|
||||||
|
#define _HAL_LLD_H_
|
||||||
|
|
||||||
|
#include "nvic.h"
|
||||||
|
#include "stm32_dma.h"
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver pre-compile time settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver constants. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver data structures and types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* External declarations. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void hal_lld_init(void);
|
||||||
|
void stm32_clock_init(void);
|
||||||
|
void stm32_nvic_init(void);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _HAL_LLD_H_ */
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -1,10 +1,11 @@
|
||||||
# List of all the STM32 platform files.
|
# List of all the STM32 platform files.
|
||||||
PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/STM32/stm32_dma.c \
|
PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/STM32/hal_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/adc_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/adc_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/can_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/can_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/pal_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/pal_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/serial_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/serial_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/spi_lld.c
|
${CHIBIOS}/os/hal/platforms/STM32/spi_lld.c \
|
||||||
|
${CHIBIOS}/os/hal/platforms/STM32/stm32_dma.c
|
||||||
|
|
||||||
# Required include directories
|
# Required include directories
|
||||||
PLATFORMINC = ${CHIBIOS}/os/hal/platforms/STM32
|
PLATFORMINC = ${CHIBIOS}/os/hal/platforms/STM32
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
|
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "nvic.h"
|
|
||||||
|
|
||||||
#if CH_HAL_USE_SERIAL
|
#if CH_HAL_USE_SERIAL
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
|
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "nvic.h"
|
|
||||||
#include "stm32_dma.h"
|
|
||||||
|
|
||||||
#if CH_HAL_USE_SPI
|
#if CH_HAL_USE_SPI
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "stm32_dma.h"
|
#include "hal.h"
|
||||||
|
|
||||||
#undef FALSE
|
|
||||||
#undef TRUE
|
|
||||||
#include <stm32f10x.h>
|
|
||||||
#define FALSE 0
|
|
||||||
#define TRUE (!FALSE)
|
|
||||||
|
|
||||||
static cnt_t dmacnt1;
|
static cnt_t dmacnt1;
|
||||||
#if defined(STM32F10X_HD) || defined (STM32F10X_CL)
|
#if defined(STM32F10X_HD) || defined (STM32F10X_CL)
|
||||||
|
|
|
@ -27,8 +27,13 @@
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief HAL initialization.
|
||||||
|
*/
|
||||||
void halInit(void) {
|
void halInit(void) {
|
||||||
|
|
||||||
|
hal_lld_init();
|
||||||
|
|
||||||
#if CH_HAL_USE_PAL
|
#if CH_HAL_USE_PAL
|
||||||
palInit(&pal_default_config);
|
palInit(&pal_default_config);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/hal_lld.c
|
||||||
|
* @brief HAL Driver subsystem low level driver source template
|
||||||
|
* @addtogroup HAL_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ch.h>
|
||||||
|
#include <hal.h>
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver interrupt handlers. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Low level HAL driver initialization.
|
||||||
|
*/
|
||||||
|
void hal_lld_init(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/hal_lld.h
|
||||||
|
* @brief HAL subsystem low level driver header template
|
||||||
|
* @addtogroup HAL_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _HAL_LLD_H_
|
||||||
|
#define _HAL_LLD_H_
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver pre-compile time settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver constants. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver data structures and types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* External declarations. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void hal_lld_init(void);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _HAL_LLD_H_ */
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,87 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file XXX.c
|
||||||
|
* @brief XXX Driver code.
|
||||||
|
* @addtogroup XXX
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ch.h>
|
||||||
|
#include <xxx.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief XXX Driver initialization.
|
||||||
|
*/
|
||||||
|
void xxxInit(void) {
|
||||||
|
|
||||||
|
xxx_lld_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes the standard part of a @p XXXDriver structure.
|
||||||
|
*
|
||||||
|
* @param[in] xxxp pointer to the @p XXXDriver object
|
||||||
|
*/
|
||||||
|
void xxxObjectInit(XXXDriver *xxxp) {
|
||||||
|
|
||||||
|
xxxp->xxx_state = XXX_STOP;
|
||||||
|
xxxp->xxx_config = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Configures and activates the XXX peripheral.
|
||||||
|
*
|
||||||
|
* @param[in] xxxp pointer to the @p XXXDriver object
|
||||||
|
* @param[in] config pointer to the @p XXXConfig object
|
||||||
|
*/
|
||||||
|
void xxxStart(XXXDriver *xxxp, const XXXConfig *config) {
|
||||||
|
|
||||||
|
chDbgCheck((xxxp != NULL) && (config != NULL), "xxxStart");
|
||||||
|
|
||||||
|
chSysLock();
|
||||||
|
chDbgAssert((xxxp->xxx_state == XXX_STOP) || (xxxp->xxx_state == XXX_READY),
|
||||||
|
"xxxStart(), #1",
|
||||||
|
"invalid state");
|
||||||
|
xxxp->xxx_config = config;
|
||||||
|
xxx_lld_start(xxxp);
|
||||||
|
xxxp->xxx_state = XXX_READY;
|
||||||
|
chSysUnlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Deactivates the XXX peripheral.
|
||||||
|
*
|
||||||
|
* @param[in] xxxp pointer to the @p XXXDriver object
|
||||||
|
*/
|
||||||
|
void xxxStop(XXXDriver *xxxp) {
|
||||||
|
|
||||||
|
chDbgCheck(xxxp != NULL, "xxxStop");
|
||||||
|
|
||||||
|
chSysLock();
|
||||||
|
chDbgAssert((xxxp->xxx_state == XXX_STOP) || (xxxp->xxx_state == XXX_READY),
|
||||||
|
"xxxStop(), #1",
|
||||||
|
"invalid state");
|
||||||
|
xxx_lld_stop(xxxp);
|
||||||
|
xxxp->xxx_state = XXX_STOP;
|
||||||
|
chSysUnlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,54 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file xxx.h
|
||||||
|
* @brief XXX Driver macros and structures.
|
||||||
|
* @addtogroup XXX
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _XXX_H_
|
||||||
|
#define _XXX_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Driver state machine possible states.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
XXX_UNINIT = 0, /**< @brief Not initialized. */
|
||||||
|
XXX_STOP = 1, /**< @brief Stopped. */
|
||||||
|
XXX_READY = 2, /**< @brief Ready. */
|
||||||
|
} xxxstate_t;
|
||||||
|
|
||||||
|
#include "xxx_lld.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void xxxInit(void);
|
||||||
|
void xxxObjectInit(XXXDriver *xxxp);
|
||||||
|
void xxxStart(XXXDriver *xxxp, const XXXConfig *config);
|
||||||
|
void xxxStop(XXXDriver *xxxp);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _XXX_H_ */
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/xxx_lld.c
|
||||||
|
* @brief XXX Driver subsystem low level driver source template
|
||||||
|
* @addtogroup XXX_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ch.h>
|
||||||
|
#include <xxx.h>
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver local functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver interrupt handlers. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Low Level Driver exported functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Low level XXX driver initialization.
|
||||||
|
*/
|
||||||
|
void xxx_lld_init(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Configures and activates the XXX peripheral.
|
||||||
|
*
|
||||||
|
* @param[in] xxxp pointer to the @p XXXDriver object
|
||||||
|
*/
|
||||||
|
void xxx_lld_start(XXXDriver *xxxp) {
|
||||||
|
|
||||||
|
if (xxxp->xxx_state == XXX_STOP) {
|
||||||
|
/* Clock activation.*/
|
||||||
|
}
|
||||||
|
/* Configuration.*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Deactivates the XXX peripheral.
|
||||||
|
*
|
||||||
|
* @param[in] xxxp pointer to the @p XXXDriver object
|
||||||
|
*/
|
||||||
|
void xxx_lld_stop(XXXDriver *xxxp) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS/RT.
|
||||||
|
|
||||||
|
ChibiOS/RT 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.
|
||||||
|
|
||||||
|
ChibiOS/RT 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file templates/xxx_lld.h
|
||||||
|
* @brief XXX Driver subsystem low level driver header template
|
||||||
|
* @addtogroup XXX_LLD
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _XXX_LLD_H_
|
||||||
|
#define _XXX_LLD_H_
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver pre-compile time settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver constants. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver data structures and types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Driver configuration structure.
|
||||||
|
* @note It could be empty on some architectures.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
} XXXConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Structure representing an XXX driver.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/**
|
||||||
|
* @brief Driver state.
|
||||||
|
*/
|
||||||
|
xxxstate_t xxx_state;
|
||||||
|
/**
|
||||||
|
* @brief Current configuration data.
|
||||||
|
*/
|
||||||
|
const XXXConfig *xxx_config;
|
||||||
|
/* End of the mandatory fields.*/
|
||||||
|
} XXXDriver;
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* External declarations. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void xxx_lld_init(void);
|
||||||
|
void xxx_lld_start(XXXDriver *xxxp);
|
||||||
|
void xxx_lld_stop(XXXDriver *xxxp);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _XXX_LLD_H_ */
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -107,7 +107,9 @@ int _lseek_r(struct _reent *r, int file, int ptr, int dir)
|
||||||
|
|
||||||
int _write_r(struct _reent *r, int file, char * ptr, int len)
|
int _write_r(struct _reent *r, int file, char * ptr, int len)
|
||||||
{
|
{
|
||||||
|
#if defined(STDOUT_SD)
|
||||||
int n;
|
int n;
|
||||||
|
#endif
|
||||||
|
|
||||||
(void)r;
|
(void)r;
|
||||||
(void)file;
|
(void)file;
|
||||||
|
|
Loading…
Reference in New Issue