
8 changed files with 2187 additions and 0 deletions
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio |
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); |
||||
you may not use this file except in compliance with the License. |
||||
You may obtain a copy of the License at |
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software |
||||
distributed under the License is distributed on an "AS IS" BASIS, |
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
See the License for the specific language governing permissions and |
||||
limitations under the License. |
||||
*/ |
||||
|
||||
#include "hal.h" |
||||
|
||||
#if HAL_USE_PAL || defined(__DOXYGEN__) |
||||
/**
|
||||
* @brief PAL setup. |
||||
* @details Digital I/O ports static configuration as defined in @p board.h. |
||||
* This variable is used by the HAL when initializing the PAL driver. |
||||
*/ |
||||
const PALConfig pal_default_config = { |
||||
#if STM32_HAS_GPIOA |
||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, |
||||
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOB |
||||
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, |
||||
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOC |
||||
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, |
||||
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOD |
||||
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, |
||||
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOE |
||||
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, |
||||
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOF |
||||
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, |
||||
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOG |
||||
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, |
||||
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOH |
||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, |
||||
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH}, |
||||
#endif |
||||
#if STM32_HAS_GPIOI |
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, |
||||
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH} |
||||
#endif |
||||
}; |
||||
#endif |
||||
|
||||
/**
|
||||
* @brief Early initialization code. |
||||
* @details This initialization must be performed just after stack setup |
||||
* and before any other initialization. |
||||
*/ |
||||
void __early_init(void) { |
||||
|
||||
stm32_clock_init(); |
||||
} |
||||
|
||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__) |
||||
/**
|
||||
* @brief MMC_SPI card detection. |
||||
*/ |
||||
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) { |
||||
|
||||
(void)mmcp; |
||||
/* TODO: Fill the implementation.*/ |
||||
return true; |
||||
} |
||||
|
||||
/**
|
||||
* @brief MMC_SPI card write protection detection. |
||||
*/ |
||||
bool mmc_lld_is_write_protected(MMCDriver *mmcp) { |
||||
|
||||
(void)mmcp; |
||||
/* TODO: Fill the implementation.*/ |
||||
return false; |
||||
} |
||||
#endif |
||||
|
||||
/**
|
||||
* @brief Board-specific initialization code. |
||||
* @todo Add your board-specific code, if any. |
||||
*/ |
||||
void boardInit(void) { |
||||
} |
@ -0,0 +1,757 @@
@@ -0,0 +1,757 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio |
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); |
||||
you may not use this file except in compliance with the License. |
||||
You may obtain a copy of the License at |
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software |
||||
distributed under the License is distributed on an "AS IS" BASIS, |
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
See the License for the specific language governing permissions and |
||||
limitations under the License. |
||||
*/ |
||||
|
||||
#ifndef _BOARD_H_ |
||||
#define _BOARD_H_ |
||||
|
||||
/*
|
||||
* Setup for a small custom STM32F030FxP6 breakout board. |
||||
*/ |
||||
|
||||
/*
|
||||
* Board identifier. |
||||
*/ |
||||
#define BOARD_STM32F030_BREAKOUT |
||||
#define BOARD_NAME "STM32F030FxP6 breakout" |
||||
|
||||
/*
|
||||
* Board oscillators-related settings. |
||||
* NOTE: LSE not fitted. |
||||
* NOTE: HSE not fitted. |
||||
*/ |
||||
#if !defined(STM32_LSECLK) |
||||
#define STM32_LSECLK 0U |
||||
#endif |
||||
|
||||
#define STM32_LSEDRV (3U << 3U) |
||||
|
||||
#if !defined(STM32_HSECLK) |
||||
#define STM32_HSECLK 0U |
||||
#endif |
||||
|
||||
#define STM32_HSE_BYPASS |
||||
|
||||
/*
|
||||
* MCU type as defined in the ST header. |
||||
*/ |
||||
#define STM32F030x6 |
||||
|
||||
/*
|
||||
* IO pins assignments. |
||||
*/ |
||||
#define GPIOA_PIN0 0U |
||||
#define GPIOA_PIN1 1U |
||||
#define GPIOA_PIN2 2U |
||||
#define GPIOA_PIN3 3U |
||||
#define GPIOA_LED_AMBER 4U |
||||
#define GPIOA_PIN5 5U |
||||
#define GPIOA_PIN6 6U |
||||
#define GPIOA_PIN7 7U |
||||
#define GPIOA_PIN8 8U |
||||
#define GPIOA_USART_TX 9U |
||||
#define GPIOA_USART_RX 10U |
||||
#define GPIOA_OTG_FS_DM 11U |
||||
#define GPIOA_OTG_FS_DP 12U |
||||
#define GPIOA_SWDIO 13U |
||||
#define GPIOA_SWCLK 14U |
||||
#define GPIOA_PIN15 15U |
||||
|
||||
#define GPIOB_PIN0 0U |
||||
#define GPIOB_BUTTON 1U |
||||
#define GPIOB_PIN2 2U |
||||
#define GPIOB_PIN3 3U |
||||
#define GPIOB_PIN4 4U |
||||
#define GPIOB_PIN5 5U |
||||
#define GPIOB_PIN6 6U |
||||
#define GPIOB_PIN7 7U |
||||
#define GPIOB_PIN8 8U |
||||
#define GPIOB_PIN9 9U |
||||
#define GPIOB_PIN10 10U |
||||
#define GPIOB_PIN11 11U |
||||
#define GPIOB_PIN12 12U |
||||
#define GPIOB_PIN13 13U |
||||
#define GPIOB_PIN14 14U |
||||
#define GPIOB_PIN15 15U |
||||
|
||||
#define GPIOC_PIN0 0U |
||||
#define GPIOC_PIN1 1U |
||||
#define GPIOC_PIN2 2U |
||||
#define GPIOC_PIN3 3U |
||||
#define GPIOC_PIN4 4U |
||||
#define GPIOC_PIN5 5U |
||||
#define GPIOC_PIN6 6U |
||||
#define GPIOC_PIN7 7U |
||||
#define GPIOC_PIN8 8U |
||||
#define GPIOC_PIN9 9U |
||||
#define GPIOC_PIN10 10U |
||||
#define GPIOC_PIN11 11U |
||||
#define GPIOC_PIN12 12U |
||||
#define GPIOC_PIN13 13U |
||||
#define GPIOC_PIN14 14U |
||||
#define GPIOC_PIN15 15U |
||||
|
||||
#define GPIOD_PIN0 0U |
||||
#define GPIOD_PIN1 1U |
||||
#define GPIOD_PIN2 2U |
||||
#define GPIOD_PIN3 3U |
||||
#define GPIOD_PIN4 4U |
||||
#define GPIOD_PIN5 5U |
||||
#define GPIOD_PIN6 6U |
||||
#define GPIOD_PIN7 7U |
||||
#define GPIOD_PIN8 8U |
||||
#define GPIOD_PIN9 9U |
||||
#define GPIOD_PIN10 10U |
||||
#define GPIOD_PIN11 11U |
||||
#define GPIOD_PIN12 12U |
||||
#define GPIOD_PIN13 13U |
||||
#define GPIOD_PIN14 14U |
||||
#define GPIOD_PIN15 15U |
||||
|
||||
#define GPIOF_OSC_IN 0U |
||||
#define GPIOF_OSC_OUT 1U |
||||
#define GPIOF_PIN2 2U |
||||
#define GPIOF_PIN3 3U |
||||
#define GPIOF_PIN4 4U |
||||
#define GPIOF_PIN5 5U |
||||
#define GPIOF_PIN6 6U |
||||
#define GPIOF_PIN7 7U |
||||
#define GPIOF_PIN8 8U |
||||
#define GPIOF_PIN9 9U |
||||
#define GPIOF_PIN10 10U |
||||
#define GPIOF_PIN11 11U |
||||
#define GPIOF_PIN12 12U |
||||
#define GPIOF_PIN13 13U |
||||
#define GPIOF_PIN14 14U |
||||
#define GPIOF_PIN15 15U |
||||
|
||||
/*
|
||||
* I/O ports initial setup, this configuration is established soon after reset |
||||
* in the initialization code. |
||||
* Please refer to the STM32 Reference Manual for details. |
||||
*/ |
||||
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) |
||||
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) |
||||
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U)) |
||||
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U)) |
||||
#define PIN_ODR_LOW(n) (0U << (n)) |
||||
#define PIN_ODR_HIGH(n) (1U << (n)) |
||||
#define PIN_OTYPE_PUSHPULL(n) (0U << (n)) |
||||
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n)) |
||||
#define PIN_OSPEED_2M(n) (0U << ((n) * 2U)) |
||||
#define PIN_OSPEED_10M(n) (1U << ((n) * 2U)) |
||||
#define PIN_OSPEED_40M(n) (3U << ((n) * 2U)) |
||||
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U)) |
||||
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U)) |
||||
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U)) |
||||
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U)) |
||||
|
||||
/*
|
||||
* GPIOA setup: |
||||
* |
||||
* PA0 - PIN0 (input pullup). |
||||
* PA1 - PIN1 (input pullup). |
||||
* PA2 - PIN2 (input pullup). |
||||
* PA3 - PIN3 (input pullup). |
||||
* PA4 - LED_AMBER (output pushpull high). |
||||
* PA5 - PIN5 (input pullup). |
||||
* PA6 - PIN6 (input pullup). |
||||
* PA7 - PIN7 (input pullup). |
||||
* PA8 - PIN8 (input pullup). |
||||
* PA9 - USART_TX (alternate 1). |
||||
* PA10 - USART_RX (alternate 1). |
||||
* PA11 - OTG_FS_DM (alternate 10). |
||||
* PA12 - OTG_FS_DP (alternate 10). |
||||
* PA13 - SWDIO (alternate 0). |
||||
* PA14 - SWCLK (alternate 0). |
||||
* PA15 - PIN15 (input pullup). |
||||
*/ |
||||
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_PIN0) | \ |
||||
PIN_MODE_INPUT(GPIOA_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN3) | \
|
||||
PIN_MODE_OUTPUT(GPIOA_LED_AMBER) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN8) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_USART_TX) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_USART_RX) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_OTG_FS_DM) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_OTG_FS_DP) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN15)) |
||||
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) | \ |
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_LED_AMBER) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_USART_TX) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_USART_RX) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_OTG_FS_DM) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_OTG_FS_DP) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN15)) |
||||
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_40M(GPIOA_PIN0) | \ |
||||
PIN_OSPEED_40M(GPIOA_PIN1) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN2) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN3) | \
|
||||
PIN_OSPEED_10M(GPIOA_LED_AMBER) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN5) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN6) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN7) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN8) | \
|
||||
PIN_OSPEED_10M(GPIOA_USART_TX) | \
|
||||
PIN_OSPEED_10M(GPIOA_USART_RX) | \
|
||||
PIN_OSPEED_40M(GPIOA_OTG_FS_DM) | \
|
||||
PIN_OSPEED_40M(GPIOA_OTG_FS_DP) | \
|
||||
PIN_OSPEED_40M(GPIOA_SWDIO) | \
|
||||
PIN_OSPEED_40M(GPIOA_SWCLK) | \
|
||||
PIN_OSPEED_40M(GPIOA_PIN15)) |
||||
#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLUP(GPIOA_PIN0) | \ |
||||
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
|
||||
PIN_PUPDR_FLOATING(GPIOA_LED_AMBER) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
|
||||
PIN_PUPDR_FLOATING(GPIOA_USART_TX) | \
|
||||
PIN_PUPDR_FLOATING(GPIOA_USART_RX) | \
|
||||
PIN_PUPDR_FLOATING(GPIOA_OTG_FS_DM) | \
|
||||
PIN_PUPDR_FLOATING(GPIOA_OTG_FS_DP) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \
|
||||
PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN15)) |
||||
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_PIN0) | \ |
||||
PIN_ODR_HIGH(GPIOA_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN3) | \
|
||||
PIN_ODR_LOW(GPIOA_LED_AMBER) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOA_USART_TX) | \
|
||||
PIN_ODR_HIGH(GPIOA_USART_RX) | \
|
||||
PIN_ODR_HIGH(GPIOA_OTG_FS_DM) | \
|
||||
PIN_ODR_HIGH(GPIOA_OTG_FS_DP) | \
|
||||
PIN_ODR_HIGH(GPIOA_SWDIO) | \
|
||||
PIN_ODR_HIGH(GPIOA_SWCLK) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN15)) |
||||
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_PIN0, 0) | \ |
||||
PIN_AFIO_AF(GPIOA_PIN1, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN2, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN3, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_LED_AMBER, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN5, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN6, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN7, 0)) |
||||
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0) | \ |
||||
PIN_AFIO_AF(GPIOA_USART_TX, 1) | \
|
||||
PIN_AFIO_AF(GPIOA_USART_RX, 1) | \
|
||||
PIN_AFIO_AF(GPIOA_OTG_FS_DM, 10) | \
|
||||
PIN_AFIO_AF(GPIOA_OTG_FS_DP, 10) | \
|
||||
PIN_AFIO_AF(GPIOA_SWDIO, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_SWCLK, 0) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN15, 0)) |
||||
|
||||
/*
|
||||
* GPIOB setup: |
||||
* |
||||
* PB0 - PIN0 (input pullup). |
||||
* PB1 - BUTTON (input floating). |
||||
* PB2 - PIN2 (input pullup). |
||||
* PB3 - PIN3 (input pullup). |
||||
* PB4 - PIN4 (input pullup). |
||||
* PB5 - PIN5 (input pullup). |
||||
* PB6 - PIN6 (input pullup). |
||||
* PB7 - PIN7 (input pullup). |
||||
* PB8 - PIN8 (input pullup). |
||||
* PB9 - PIN9 (input pullup). |
||||
* PB10 - PIN10 (input pullup). |
||||
* PB11 - PIN11 (input pullup). |
||||
* PB12 - PIN12 (input pullup). |
||||
* PB13 - PIN13 (input pullup). |
||||
* PB14 - PIN14 (input pullup). |
||||
* PB15 - PIN15 (input pullup). |
||||
*/ |
||||
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \ |
||||
PIN_MODE_INPUT(GPIOB_BUTTON) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN15)) |
||||
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \ |
||||
PIN_OTYPE_PUSHPULL(GPIOB_BUTTON) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN15)) |
||||
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_40M(GPIOB_PIN0) | \ |
||||
PIN_OSPEED_40M(GPIOB_BUTTON) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN2) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN3) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN4) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN5) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN6) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN7) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN8) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN9) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN10) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN11) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN12) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN13) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN14) | \
|
||||
PIN_OSPEED_40M(GPIOB_PIN15)) |
||||
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \ |
||||
PIN_PUPDR_FLOATING(GPIOB_BUTTON) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN15)) |
||||
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \ |
||||
PIN_ODR_HIGH(GPIOB_BUTTON) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN15)) |
||||
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0) | \ |
||||
PIN_AFIO_AF(GPIOB_BUTTON, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN2, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN3, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN4, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN5, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN6, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN7, 0)) |
||||
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0) | \ |
||||
PIN_AFIO_AF(GPIOB_PIN9, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN10, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN11, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN12, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN13, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN14, 0) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN15, 0)) |
||||
|
||||
/*
|
||||
* GPIOC setup: |
||||
* |
||||
* PC0 - PIN0 (input pullup). |
||||
* PC1 - PIN1 (input pullup). |
||||
* PC2 - PIN2 (input pullup). |
||||
* PC3 - PIN3 (input pullup). |
||||
* PC4 - PIN4 (input pullup). |
||||
* PC5 - PIN5 (input pullup). |
||||
* PC6 - PIN6 (input pullup). |
||||
* PC7 - PIN7 (input pullup). |
||||
* PC8 - PIN8 (input pullup). |
||||
* PC9 - PIN9 (input pullup). |
||||
* PC10 - PIN10 (input pullup). |
||||
* PC11 - PIN11 (input pullup). |
||||
* PC12 - PIN12 (input pullup). |
||||
* PC13 - PIN13 (input pullup). |
||||
* PC14 - PIN14 (input pullup). |
||||
* PC15 - PIN15 (input pullup). |
||||
*/ |
||||
#define VAL_GPIOC_MODER (PIN_MODE_INPUT(GPIOC_PIN0) | \ |
||||
PIN_MODE_INPUT(GPIOC_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN15)) |
||||
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) | \ |
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN15)) |
||||
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_40M(GPIOC_PIN0) | \ |
||||
PIN_OSPEED_40M(GPIOC_PIN1) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN2) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN3) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN4) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN5) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN6) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN7) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN8) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN9) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN10) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN11) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN12) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN13) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN14) | \
|
||||
PIN_OSPEED_40M(GPIOC_PIN15)) |
||||
#define VAL_GPIOC_PUPDR (PIN_PUPDR_PULLUP(GPIOC_PIN0) | \ |
||||
PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN15)) |
||||
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_PIN0) | \ |
||||
PIN_ODR_HIGH(GPIOC_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN15)) |
||||
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_PIN0, 0) | \ |
||||
PIN_AFIO_AF(GPIOC_PIN1, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN2, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN3, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN4, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN5, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN6, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN7, 0)) |
||||
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_PIN8, 0) | \ |
||||
PIN_AFIO_AF(GPIOC_PIN9, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN10, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN11, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN12, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN13, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN14, 0) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN15, 0)) |
||||
|
||||
/*
|
||||
* GPIOD setup: |
||||
* |
||||
* PD0 - PIN0 (input pullup). |
||||
* PD1 - PIN1 (input pullup). |
||||
* PD2 - PIN2 (input pullup). |
||||
* PD3 - PIN3 (input pullup). |
||||
* PD4 - PIN4 (input pullup). |
||||
* PD5 - PIN5 (input pullup). |
||||
* PD6 - PIN6 (input pullup). |
||||
* PD7 - PIN7 (input pullup). |
||||
* PD8 - PIN8 (input pullup). |
||||
* PD9 - PIN9 (input pullup). |
||||
* PD10 - PIN10 (input pullup). |
||||
* PD11 - PIN11 (input pullup). |
||||
* PD12 - PIN12 (input pullup). |
||||
* PD13 - PIN13 (input pullup). |
||||
* PD14 - PIN14 (input pullup). |
||||
* PD15 - PIN15 (input pullup). |
||||
*/ |
||||
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \ |
||||
PIN_MODE_INPUT(GPIOD_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN15)) |
||||
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \ |
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN15)) |
||||
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_40M(GPIOD_PIN0) | \ |
||||
PIN_OSPEED_40M(GPIOD_PIN1) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN2) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN3) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN4) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN5) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN6) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN7) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN8) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN9) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN10) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN11) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN12) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN13) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN14) | \
|
||||
PIN_OSPEED_40M(GPIOD_PIN15)) |
||||
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \ |
||||
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN15)) |
||||
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \ |
||||
PIN_ODR_HIGH(GPIOD_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN15)) |
||||
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0) | \ |
||||
PIN_AFIO_AF(GPIOD_PIN1, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN2, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN3, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN4, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN5, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN6, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN7, 0)) |
||||
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0) | \ |
||||
PIN_AFIO_AF(GPIOD_PIN9, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN10, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN11, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN12, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN13, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN14, 0) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN15, 0)) |
||||
|
||||
/*
|
||||
* GPIOF setup: |
||||
* |
||||
* PF0 - OSC_IN (input pullup). |
||||
* PF1 - OSC_OUT (input pullup). |
||||
* PF2 - PIN2 (input pullup). |
||||
* PF3 - PIN3 (input pullup). |
||||
* PF4 - PIN4 (input pullup). |
||||
* PF5 - PIN5 (input pullup). |
||||
* PF6 - PIN6 (input pullup). |
||||
* PF7 - PIN7 (input pullup). |
||||
* PF8 - PIN8 (input pullup). |
||||
* PF9 - PIN9 (input pullup). |
||||
* PF10 - PIN10 (input pullup). |
||||
* PF11 - PIN11 (input pullup). |
||||
* PF12 - PIN12 (input pullup). |
||||
* PF13 - PIN13 (input pullup). |
||||
* PF14 - PIN14 (input pullup). |
||||
* PF15 - PIN15 (input pullup). |
||||
*/ |
||||
#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_OSC_IN) | \ |
||||
PIN_MODE_INPUT(GPIOF_OSC_OUT) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN15)) |
||||
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_OSC_IN) | \ |
||||
PIN_OTYPE_PUSHPULL(GPIOF_OSC_OUT) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN15)) |
||||
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_2M(GPIOF_OSC_IN) | \ |
||||
PIN_OSPEED_2M(GPIOF_OSC_OUT) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN2) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN3) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN4) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN5) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN6) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN7) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN8) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN9) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN10) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN11) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN12) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN13) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN14) | \
|
||||
PIN_OSPEED_2M(GPIOF_PIN15)) |
||||
#define VAL_GPIOF_PUPDR (PIN_PUPDR_PULLUP(GPIOF_OSC_IN) | \ |
||||
PIN_PUPDR_PULLUP(GPIOF_OSC_OUT) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN15)) |
||||
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_OSC_IN) | \ |
||||
PIN_ODR_HIGH(GPIOF_OSC_OUT) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN15)) |
||||
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_OSC_IN, 0) | \ |
||||
PIN_AFIO_AF(GPIOF_OSC_OUT, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN2, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN3, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN4, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN5, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN6, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN7, 0)) |
||||
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0) | \ |
||||
PIN_AFIO_AF(GPIOF_PIN9, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN10, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN11, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN12, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN13, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN14, 0) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN15, 0)) |
||||
|
||||
|
||||
#if !defined(_FROM_ASM_) |
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
void boardInit(void); |
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
#endif /* _FROM_ASM_ */ |
||||
|
||||
#endif /* _BOARD_H_ */ |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
# List of all the board related files.
|
||||
BOARDSRC = ${ROOTDIR}/boards/STM32F030_BREAKOUT/board.c
|
||||
|
||||
# Required include directories
|
||||
BOARDINC = ${ROOTDIR}/boards/STM32F030_BREAKOUT
|
@ -0,0 +1,228 @@
@@ -0,0 +1,228 @@
|
||||
##############################################################################
|
||||
# Build global options
|
||||
# NOTE: Can be overridden externally.
|
||||
#
|
||||
|
||||
# Compiler options here.
|
||||
ifeq ($(USE_OPT),) |
||||
USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
|
||||
endif |
||||
|
||||
# C specific options here (added to USE_OPT).
|
||||
ifeq ($(USE_COPT),) |
||||
USE_COPT =
|
||||
endif |
||||
|
||||
# C++ specific options here (added to USE_OPT).
|
||||
ifeq ($(USE_CPPOPT),) |
||||
USE_CPPOPT = -fno-rtti
|
||||
endif |
||||
|
||||
# Enable this if you want the linker to remove unused code and data
|
||||
ifeq ($(USE_LINK_GC),) |
||||
USE_LINK_GC = yes
|
||||
endif |
||||
|
||||
# Linker extra options here.
|
||||
ifeq ($(USE_LDOPT),) |
||||
USE_LDOPT =
|
||||
endif |
||||
|
||||
# Enable this if you want link time optimizations (LTO)
|
||||
ifeq ($(USE_LTO),) |
||||
USE_LTO = yes
|
||||
endif |
||||
|
||||
# If enabled, this option allows to compile the application in THUMB mode.
|
||||
ifeq ($(USE_THUMB),) |
||||
USE_THUMB = yes
|
||||
endif |
||||
|
||||
# Enable this if you want to see the full log while compiling.
|
||||
ifeq ($(USE_VERBOSE_COMPILE),) |
||||
USE_VERBOSE_COMPILE = no
|
||||
endif |
||||
|
||||
# If enabled, this option makes the build process faster by not compiling
|
||||
# modules not used in the current configuration.
|
||||
ifeq ($(USE_SMART_BUILD),) |
||||
USE_SMART_BUILD = yes
|
||||
endif |
||||
|
||||
#
|
||||
# Build global options
|
||||
##############################################################################
|
||||
|
||||
##############################################################################
|
||||
# Architecture or project specific options
|
||||
#
|
||||
|
||||
# Stack size to be allocated to the Cortex-M process stack. This stack is
|
||||
# the stack used by the main() thread.
|
||||
ifeq ($(USE_PROCESS_STACKSIZE),) |
||||
USE_PROCESS_STACKSIZE = 0x200
|
||||
endif |
||||
|
||||
# Stack size to the allocated to the Cortex-M main/exceptions stack. This
|
||||
# stack is used for processing interrupts and exceptions.
|
||||
ifeq ($(USE_EXCEPTIONS_STACKSIZE),) |
||||
USE_EXCEPTIONS_STACKSIZE = 0x400
|
||||
endif |
||||
|
||||
#
|
||||
# Architecture or project specific options
|
||||
##############################################################################
|
||||
|
||||
##############################################################################
|
||||
# Project, sources and paths
|
||||
#
|
||||
|
||||
# Define project name here
|
||||
PROJECT = ch
|
||||
|
||||
MCU_FAMILY = STM32
|
||||
MCU_SERIES = STM32F0xx
|
||||
MCU_MODEL_FAMILY = STM32F030x4
|
||||
BOARD = STM32F030_BREAKOUT
|
||||
|
||||
ROOTDIR = ../..
|
||||
|
||||
# Imported source files and paths
|
||||
CHIBIOS = $(ROOTDIR)/ChibiOS_3.0.1
|
||||
# Startup files.
|
||||
include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(shell echo $(MCU_SERIES) | tr '[:upper:]' '[:lower:]').mk |
||||
# HAL-OSAL files (optional).
|
||||
include $(CHIBIOS)/os/hal/hal.mk |
||||
include $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk |
||||
ifneq ("$(wildcard $(ROOTDIR)/boards/$(BOARD))","") |
||||
include $(ROOTDIR)/boards/$(BOARD)/board.mk
|
||||
else |
||||
include $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
|
||||
endif |
||||
include $(CHIBIOS)/os/hal/osal/rt/osal.mk |
||||
# RTOS files (optional).
|
||||
include $(CHIBIOS)/os/rt/rt.mk |
||||
include $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v6m.mk |
||||
# Other files (optional).
|
||||
|
||||
# Define linker script file here
|
||||
ifneq ("$(wildcard $(ROOTDIR)/ld/$(MCU_MODEL_FAMILY).ld)","") |
||||
LDSCRIPT = $(ROOTDIR)/ld/$(MCU_MODEL_FAMILY).ld
|
||||
else |
||||
LDSCRIPT = $(STARTUPLD)/$(MCU_MODEL_FAMILY).ld
|
||||
endif |
||||
|
||||
# C sources that can be compiled in ARM or THUMB mode depending on the global
|
||||
# setting.
|
||||
CSRC = $(STARTUPSRC) \
|
||||
$(KERNSRC) \
|
||||
$(PORTSRC) \
|
||||
$(OSALSRC) \
|
||||
$(HALSRC) \
|
||||
$(PLATFORMSRC) \
|
||||
$(BOARDSRC) \
|
||||
$(CHIBIOS)/os/hal/lib/streams/chprintf.c \
|
||||
main.c
|
||||
|
||||
#$(CHIBIOS)/os/hal/lib/streams/memstreams.c \
|
||||
|
||||
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
|
||||
# setting.
|
||||
CPPSRC =
|
||||
|
||||
# C sources to be compiled in ARM mode regardless of the global setting.
|
||||
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
||||
# option that results in lower performance and larger code size.
|
||||
ACSRC =
|
||||
|
||||
# C++ sources to be compiled in ARM mode regardless of the global setting.
|
||||
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
||||
# option that results in lower performance and larger code size.
|
||||
ACPPSRC =
|
||||
|
||||
# C sources to be compiled in THUMB mode regardless of the global setting.
|
||||
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
||||
# option that results in lower performance and larger code size.
|
||||
TCSRC =
|
||||
|
||||
# C sources to be compiled in THUMB mode regardless of the global setting.
|
||||
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
||||
# option that results in lower performance and larger code size.
|
||||
TCPPSRC =
|
||||
|
||||
# List ASM source files here
|
||||
ASMSRC = $(STARTUPASM) $(PORTASM) $(OSALASM)
|
||||
|
||||
INCDIR = $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \
|
||||
$(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \
|
||||
$(CHIBIOS)/os/various $(CHIBIOS)/os/hal/lib/streams
|
||||
#
|
||||
# Project, sources and paths
|
||||
##############################################################################
|
||||
|
||||
##############################################################################
|
||||
# Compiler settings
|
||||
#
|
||||
|
||||
MCU = cortex-m0
|
||||
|
||||
#TRGT = arm-elf-
|
||||
TRGT = arm-none-eabi-
|
||||
CC = $(TRGT)gcc
|
||||
CPPC = $(TRGT)g++
|
||||
# Enable loading with g++ only if you need C++ runtime support.
|
||||
# NOTE: You can use C++ even without C++ support if you are careful. C++
|
||||
# runtime support makes code size explode.
|
||||
LD = $(TRGT)gcc
|
||||
#LD = $(TRGT)g++
|
||||
CP = $(TRGT)objcopy
|
||||
AS = $(TRGT)gcc -x assembler-with-cpp
|
||||
AR = $(TRGT)ar
|
||||
OD = $(TRGT)objdump
|
||||
SZ = $(TRGT)size
|
||||
HEX = $(CP) -O ihex
|
||||
BIN = $(CP) -O binary
|
||||
|
||||
# ARM-specific options here
|
||||
AOPT =
|
||||
|
||||
# THUMB-specific options here
|
||||
TOPT = -mthumb -DTHUMB
|
||||
|
||||
# Define C warning options here
|
||||
CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes
|
||||
|
||||
# Define C++ warning options here
|
||||
CPPWARN = -Wall -Wextra -Wundef
|
||||
|
||||
#
|
||||
# Compiler settings
|
||||
##############################################################################
|
||||
|
||||
##############################################################################
|
||||
# Start of user section
|
||||
#
|
||||
|
||||
# List all user C define here, like -D_DEBUG=1
|
||||
UDEFS =
|
||||
|
||||
# Define ASM defines here
|
||||
UADEFS =
|
||||
|
||||
# List all user directories here
|
||||
UINCDIR =
|
||||
|
||||
# List the user directory to look for the libraries here
|
||||
ULIBDIR =
|
||||
|
||||
# List all user libraries here
|
||||
ULIBS =
|
||||
|
||||
#
|
||||
# End of user defines
|
||||
##############################################################################
|
||||
|
||||
RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
|
||||
include $(RULESPATH)/rules.mk |
||||
|
||||
include $(ROOTDIR)/common.mk |
@ -0,0 +1,499 @@
@@ -0,0 +1,499 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio |
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); |
||||
you may not use this file except in compliance with the License. |
||||
You may obtain a copy of the License at |
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software |
||||
distributed under the License is distributed on an "AS IS" BASIS, |
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
See the License for the specific language governing permissions and |
||||
limitations under the License. |
||||
*/ |
||||
|
||||
/**
|
||||
* @file templates/chconf.h |
||||
* @brief Configuration file template. |
||||
* @details A copy of this file must be placed in each project directory, it |
||||
* contains the application specific kernel settings. |
||||
* |
||||
* @addtogroup config |
||||
* @details Kernel related settings and hooks. |
||||
* @{ |
||||
*/ |
||||
|
||||
#ifndef _CHCONF_H_ |
||||
#define _CHCONF_H_ |
||||
|
||||
/*===========================================================================*/ |
||||
/**
|
||||
* @name System timers settings |
||||
* @{ |
||||
*/ |
||||
/*===========================================================================*/ |
||||
|
||||
/**
|
||||
* @brief System time counter resolution. |
||||
* @note Allowed values are 16 or 32 bits. |
||||
*/ |
||||
#define CH_CFG_ST_RESOLUTION 16 |
||||
|
||||
/**
|
||||
* @brief System tick frequency. |
||||
* @details Frequency of the system timer that drives the system ticks. This |
||||
* setting also defines the system tick time unit. |
||||
*/ |
||||
#define CH_CFG_ST_FREQUENCY 1000 |
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode. |
||||
* @note If this value is zero then the system uses the classic |
||||
* periodic tick. This value represents the minimum number |
||||
* of ticks that is safe to specify in a timeout directive. |
||||
* The value one is not valid, timeouts are rounded up to |
||||
* this value. |
||||
*/ |
||||
#define CH_CFG_ST_TIMEDELTA 2 |
||||
|
||||
/** @} */ |
||||
|
||||
/*===========================================================================*/ |
||||
/**
|
||||
* @name Kernel parameters and options |
||||
* @{ |
||||
*/ |
||||
/*===========================================================================*/ |
||||
|
||||
/**
|
||||
* @brief Round robin interval. |
||||
* @details This constant is the number of system ticks allowed for the |
||||
* threads before preemption occurs. Setting this value to zero |
||||
* disables the preemption for threads with equal priority and the |
||||
* round robin becomes cooperative. Note that higher priority |
||||
* threads can still preempt, the kernel is always preemptive. |
||||
* @note Disabling the round robin preemption makes the kernel more compact |
||||
* and generally faster. |
||||
* @note The round robin preemption is not supported in tickless mode and |
||||
* must be set to zero in that case. |
||||
*/ |
||||
#define CH_CFG_TIME_QUANTUM 0 |
||||
|
||||
/**
|
||||
* @brief Managed RAM size. |
||||
* @details Size of the RAM area to be managed by the OS. If set to zero |
||||
* then the whole available RAM is used. The core memory is made |
||||
* available to the heap allocator and/or can be used directly through |
||||
* the simplified core memory allocator. |
||||
* |
||||
* @note In order to let the OS manage the whole RAM the linker script must |
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols. |
||||
* @note Requires @p CH_CFG_USE_MEMCORE. |
||||
*/ |
||||
#define CH_CFG_MEMCORE_SIZE 0 |
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression. |
||||
* @details When this option is activated the function @p chSysInit() |
||||
* does not spawn the idle thread. The application @p main() |
||||
* function becomes the idle thread and must implement an |
||||
* infinite loop. |
||||
*/ |
||||
#define CH_CFG_NO_IDLE_THREAD FALSE |
||||
|
||||
/** @} */ |
||||
|
||||
/*===========================================================================*/ |
||||
/**
|
||||
* @name Performance options |
||||
* @{ |
||||
*/ |
||||
/*===========================================================================*/ |
||||
|
||||
/**
|
||||
* @brief OS optimization. |
||||
* @details If enabled then time efficient rather than space efficient code |
||||
* is used when two possible implementations exist. |
||||
* |
||||
* @note This is not related to the compiler optimization options. |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_OPTIMIZE_SPEED TRUE |
||||
|
||||
/** @} */ |
||||
|
||||
/*===========================================================================*/ |
||||
/**
|
||||
* @name Subsystem options |
||||
* @{ |
||||
*/ |
||||
/*===========================================================================*/ |
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs. |
||||
* @details If enabled then the time measurement APIs are included in |
||||
* the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_TM FALSE |
||||
|
||||
/**
|
||||
* @brief Threads registry APIs. |
||||
* @details If enabled then the registry APIs are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_REGISTRY TRUE |
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs. |
||||
* @details If enabled then the @p chThdWait() function is included in |
||||
* the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_WAITEXIT TRUE |
||||
|
||||
/**
|
||||
* @brief Semaphores APIs. |
||||
* @details If enabled then the Semaphores APIs are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_SEMAPHORES TRUE |
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode. |
||||
* @details If enabled then the threads are enqueued on semaphores by |
||||
* priority rather than in FIFO order. |
||||
* |
||||
* @note The default is @p FALSE. Enable this if you have special |
||||
* requirements. |
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES. |
||||
*/ |
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE |
||||
|
||||
/**
|
||||
* @brief Mutexes APIs. |
||||
* @details If enabled then the mutexes APIs are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_MUTEXES TRUE |
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes. |
||||
* @note Recursive mutexes are heavier and have an increased |
||||
* memory footprint. |
||||
* |
||||
* @note The default is @p FALSE. |
||||
* @note Requires @p CH_CFG_USE_MUTEXES. |
||||
*/ |
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE |
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs. |
||||
* @details If enabled then the conditional variables APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_MUTEXES. |
||||
*/ |
||||
#define CH_CFG_USE_CONDVARS TRUE |
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout. |
||||
* @details If enabled then the conditional variables APIs with timeout |
||||
* specification are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_CONDVARS. |
||||
*/ |
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE |
||||
|
||||
/**
|
||||
* @brief Events Flags APIs. |
||||
* @details If enabled then the event flags APIs are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_EVENTS TRUE |
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout. |
||||
* @details If enabled then the events APIs with timeout specification |
||||
* are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_EVENTS. |
||||
*/ |
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE |
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs. |
||||
* @details If enabled then the synchronous messages APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_MESSAGES TRUE |
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode. |
||||
* @details If enabled then messages are served by priority rather than in |
||||
* FIFO order. |
||||
* |
||||
* @note The default is @p FALSE. Enable this if you have special |
||||
* requirements. |
||||
* @note Requires @p CH_CFG_USE_MESSAGES. |
||||
*/ |
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE |
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs. |
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are |
||||
* included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES. |
||||
*/ |
||||
#define CH_CFG_USE_MAILBOXES TRUE |
||||
|
||||
/**
|
||||
* @brief I/O Queues APIs. |
||||
* @details If enabled then the I/O queues APIs are included in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_QUEUES TRUE |
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs. |
||||
* @details If enabled then the core memory manager APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_MEMCORE TRUE |
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs. |
||||
* @details If enabled then the memory heap allocator APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or |
||||
* @p CH_CFG_USE_SEMAPHORES. |
||||
* @note Mutexes are recommended. |
||||
*/ |
||||
#define CH_CFG_USE_HEAP TRUE |
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs. |
||||
* @details If enabled then the memory pools allocator APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
*/ |
||||
#define CH_CFG_USE_MEMPOOLS TRUE |
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs. |
||||
* @details If enabled then the dynamic threads creation APIs are included |
||||
* in the kernel. |
||||
* |
||||
* @note The default is @p TRUE. |
||||
* @note Requires @p CH_CFG_USE_WAITEXIT. |
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. |
||||
*/ |
||||
#define CH_CFG_USE_DYNAMIC TRUE |
||||
|
||||
/** @} */ |
||||
|
||||
/*===========================================================================*/ |
||||
/**
|
||||
* @name Debug options |
||||
* @{ |
||||
*/ |
||||
/*===========================================================================*/ |
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics. |
||||
* |
||||