From 78550c25e593d553cc8c468749259366a5fff4e3 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 28 Nov 2009 15:05:46 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1335 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM3-STM32F103-GCC/Makefile | 14 ++--- demos/ARMCM3-STM32F103-GCC/board.c | 79 ++----------------------- demos/ARMCM3-STM32F103-GCC/halconf.h | 88 ++++++++++++++++++++++++++++ demos/ARMCM3-STM32F103-GCC/main.c | 10 +--- 4 files changed, 103 insertions(+), 88 deletions(-) create mode 100644 demos/ARMCM3-STM32F103-GCC/halconf.h diff --git a/demos/ARMCM3-STM32F103-GCC/Makefile b/demos/ARMCM3-STM32F103-GCC/Makefile index 53c9a26e3..87293f6f8 100644 --- a/demos/ARMCM3-STM32F103-GCC/Makefile +++ b/demos/ARMCM3-STM32F103-GCC/Makefile @@ -57,6 +57,8 @@ LDSCRIPT= ch.ld # Imported source files CHIBIOS = ../.. +include ${CHIBIOS}/os/hal/hal.mk +include ${CHIBIOS}/os/hal/platforms/STM32/platform.mk include ${CHIBIOS}/os/ports/GCC/ARMCM3/port.mk include ${CHIBIOS}/os/kernel/kernel.mk include ${CHIBIOS}/test/test.mk @@ -66,12 +68,10 @@ include ${CHIBIOS}/test/test.mk CSRC = ${PORTSRC} \ ${KERNSRC} \ ${TESTSRC} \ - ${CHIBIOS}/os/io/pal.c \ - ${CHIBIOS}/os/io/serial.c \ - ${CHIBIOS}/os/io/platforms/STM32/pal_lld.c \ - ${CHIBIOS}/os/io/platforms/STM32/serial_lld.c \ - ${CHIBIOS}/os/io/platforms/STM32/stm32_dma.c \ + ${HALSRC} \ + ${PLATFORMSRC} \ ${CHIBIOS}/os/various/evtimer.c \ + ${CHIBIOS}/os/various/syscalls.c \ board.c main.c # C++ sources that can be compiled in ARM or THUMB mode depending on the global @@ -102,9 +102,7 @@ TCPPSRC = ASMSRC = $(PORTASM) \ ${CHIBIOS}/os/ports/GCC/ARMCM3/STM32F103/vectors.s -INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) \ - ${CHIBIOS}/os/io \ - ${CHIBIOS}/os/io/platforms/STM32 \ +INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) $(HALINC) $(PLATFORMINC) \ ${CHIBIOS}/os/various # diff --git a/demos/ARMCM3-STM32F103-GCC/board.c b/demos/ARMCM3-STM32F103-GCC/board.c index dac529780..58be4d77f 100644 --- a/demos/ARMCM3-STM32F103-GCC/board.c +++ b/demos/ARMCM3-STM32F103-GCC/board.c @@ -17,32 +17,8 @@ along with this program. If not, see . */ -#include -#include -#include -#include - -#include "board.h" - -#define AIRCR_VECTKEY 0x05FA0000 - -/* - * Digital I/O ports static configuration as defined in @p board.h. - */ -static const STM32GPIOConfig pal_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 -}; +#include "ch.h" +#include "hal.h" /* * Early initialization code. @@ -51,39 +27,7 @@ static const STM32GPIOConfig pal_config = */ void hwinit0(void) { - /* - * Clocks and PLL initialization. - */ - // HSI setup. - RCC->CR = RCC_CR_HSITRIM_RESET_BITS | RCC_CR_HSION; - while (!(RCC->CR & RCC_CR_HSIRDY)) - ; // Waits until HSI stable, it should already be. - // 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 on the PLL clock. - while ((RCC->CFGR & RCC_CFGR_SW) != RCC_CFGR_SW_PLL) - ; - - /* - * I/O ports initialization as specified in board.h. - */ - palInit(&pal_config); + stm32_clock_init(); } /* @@ -95,24 +39,13 @@ void hwinit1(void) { /* * NVIC/SCB initialization. - * 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); + stm32_nvic_init(); /* - * SysTick initialization. + * HAL initialization. */ - SysTick->LOAD = SYSCLK / (8000000 / CH_FREQUENCY) - 1; - SysTick->VAL = 0; - SysTick->CTRL = SysTick_CTRL_ENABLE | SysTick_CTRL_TICKINT; - - /* - * Other subsystems initialization. - */ - sdInit(); + halInit(); /* * ChibiOS/RT initialization. diff --git a/demos/ARMCM3-STM32F103-GCC/halconf.h b/demos/ARMCM3-STM32F103-GCC/halconf.h new file mode 100644 index 000000000..648a113e7 --- /dev/null +++ b/demos/ARMCM3-STM32F103-GCC/halconf.h @@ -0,0 +1,88 @@ +/* + 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 . +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @addtogroup HAL + * @{ + */ + +#ifndef _HALCONF_H_ +#define _HALCONF_H_ + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(CH_HAL_USE_PAL) || defined(__DOXYGEN__) +#define CH_HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(CH_HAL_USE_ADC) || defined(__DOXYGEN__) +#define CH_HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(CH_HAL_USE_CAN) || defined(__DOXYGEN__) +#define CH_HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(CH_HAL_USE_MAC) || defined(__DOXYGEN__) +#define CH_HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MII subsystem. + */ +#if !defined(CH_HAL_USE_MII) || defined(__DOXYGEN__) +#define CH_HAL_USE_MII FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(CH_HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define CH_HAL_USE_SERIAL TRUE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(CH_HAL_USE_SPI) || defined(__DOXYGEN__) +#define CH_HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(CH_HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define CH_HAL_USE_MMC_SPI FALSE +#endif + +#endif /* _HALCONF_H_ */ + +/** @} */ diff --git a/demos/ARMCM3-STM32F103-GCC/main.c b/demos/ARMCM3-STM32F103-GCC/main.c index 46d947696..2e62d944d 100644 --- a/demos/ARMCM3-STM32F103-GCC/main.c +++ b/demos/ARMCM3-STM32F103-GCC/main.c @@ -17,13 +17,9 @@ along with this program. If not, see . */ -#include -#include -#include -#include -#include - -#include "board.h" +#include "ch.h" +#include "hal.h" +#include "test.h" /* * Red LEDs blinker thread, times are in milliseconds.