Environmental Shield API

Revision:
0:9e645e6ed2ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BSP/Nucleo-F401RE/nucleo-f401re.h	Tue Aug 19 07:13:15 2014 +0000
@@ -0,0 +1,324 @@
+/**
+  ******************************************************************************
+  * @file    nucleo-f401re.h
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    22-April-2014
+  * @brief   This file contains definitions for:
+  *          - LEDs and push-button available on NUCLEO-F401RE Kit 
+  *            from STMicroelectronics
+  *          - LCD, joystick and microSD available on Adafruit 1.8" TFT LCD 
+  *            shield (reference ID 802)
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+  
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __NUCLEO_F401RE_H
+#define __NUCLEO_F401RE_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx_hal.h"
+   
+
+/** @addtogroup BSP
+  * @{
+  */
+
+/** @addtogroup NUCLEO_F401RE
+  * @{
+  */
+
+/** @addtogroup NUCLEO_F401RE_LOW_LEVEL
+  * @{
+  */
+      
+/** @defgroup NUCLEO_F401RE_LOW_LEVEL_Exported_Types 
+  * @{
+  */ 
+
+
+typedef enum 
+{  
+  BUTTON_KEY = 0
+} Button_TypeDef;
+
+typedef enum 
+{  
+  BUTTON_MODE_GPIO = 0,
+  BUTTON_MODE_EXTI = 1
+} ButtonMode_TypeDef; 
+
+typedef enum 
+{ 
+  JOY_NONE  = 0,
+  JOY_SEL   = 1,
+  JOY_DOWN  = 2,
+  JOY_LEFT  = 3,
+  JOY_RIGHT = 4,
+  JOY_UP    = 5
+} JOYState_TypeDef;
+
+/**
+  * @}
+  */ 
+
+/** @defgroup NUCLEO_F401RE_LOW_LEVEL_Exported_Constants 
+  * @{
+  */ 
+
+/** 
+* @brief	Define for NUCLEO_F401RE board  
+  */ 
+#if !defined (USE_NUCLEO_F401RE)
+ #define USE_NUCLEO_F401RE
+#endif
+
+/**
+  * @}
+  */ 
+
+/** @addtogroup NUCLEO_F401RE_LOW_LEVEL_LED
+  * @{
+  */
+#define LEDn                               1
+
+#define LED2_PIN                           GPIO_PIN_5
+#define LED2_GPIO_PORT                     GPIOA
+#define LED2_GPIO_CLK_ENABLE()           __GPIOA_CLK_ENABLE()  
+#define LED2_GPIO_CLK_DISABLE()          __GPIOA_CLK_DISABLE()
+  
+#define LEDx_GPIO_CLK_ENABLE(__INDEX__)   (((__INDEX__) == 0) ? LED2_GPIO_CLK_ENABLE() : 0)
+#define LEDx_GPIO_CLK_DISABLE(__INDEX__)  (((__INDEX__) == 0) ? LED2_GPIO_CLK_DISABLE() : 0)
+/**
+  * @}
+  */ 
+  
+/** @addtogroup NUCLEO_F401RE_LOW_LEVEL_BUTTON
+  * @{
+  */  
+#define BUTTONn                            1
+
+/**
+  * @brief Key push-button
+  */
+#define KEY_BUTTON_PIN                         GPIO_PIN_13
+#define KEY_BUTTON_GPIO_PORT                   GPIOC
+#define KEY_BUTTON_GPIO_CLK_ENABLE()         __GPIOC_CLK_ENABLE()   
+#define KEY_BUTTON_GPIO_CLK_DISABLE()        __GPIOC_CLK_DISABLE()  
+#define KEY_BUTTON_EXTI_LINE                   GPIO_PIN_13
+#define KEY_BUTTON_EXTI_IRQn                   EXTI15_10_IRQn
+//EXTI4_15_IRQn
+
+#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__)    (((__INDEX__) == 0) ? KEY_BUTTON_GPIO_CLK_ENABLE() : 0)
+#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__)   (((__INDEX__) == 0) ? KEY_BUTTON_GPIO_CLK_DISABLE() : 0)
+/**
+  * @}
+  */ 
+
+/** @addtogroup NUCLEO_F401RE_LOW_LEVEL_BUS
+  * @{
+  */ 
+/*###################### SPI1 ###################################*/
+//#define NUCLEO_SPIx                                 SPI1
+//#define NUCLEO_SPIx_CLK_ENABLE()                  __SPI1_CLK_ENABLE()
+//
+//#define NUCLEO_SPIx_SCK_AF                          GPIO_AF0_SPI1
+//#define NUCLEO_SPIx_SCK_GPIO_PORT                   GPIOA
+//#define NUCLEO_SPIx_SCK_PIN                         GPIO_PIN_5
+//#define NUCLEO_SPIx_SCK_GPIO_CLK_ENABLE()         __GPIOA_CLK_ENABLE()
+//#define NUCLEO_SPIx_SCK_GPIO_CLK_DISABLE()        __GPIOA_CLK_DISABLE()
+//
+//#define NUCLEO_SPIx_MISO_MOSI_AF                    GPIO_AF0_SPI1
+//#define NUCLEO_SPIx_MISO_MOSI_GPIO_PORT             GPIOA
+//#define NUCLEO_SPIx_MISO_MOSI_GPIO_CLK_ENABLE()   __GPIOA_CLK_ENABLE()
+//#define NUCLEO_SPIx_MISO_MOSI_GPIO_CLK_DISABLE()  __GPIOA_CLK_DISABLE()
+//#define NUCLEO_SPIx_MISO_PIN                        GPIO_PIN_6
+//#define NUCLEO_SPIx_MOSI_PIN                        GPIO_PIN_7
+///* Maximum Timeout values for flags waiting loops. These timeouts are not based
+//   on accurate values, they just guarantee that the application will not remain
+//   stuck if the SPI communication is corrupted.
+//   You may modify these timeout values depending on CPU frequency and application
+//   conditions (interrupts routines ...). */   
+//#define NUCLEO_SPIx_TIMEOUT_MAX                   1000
+
+
+/**
+ * @brief Definition for I2C_ONBOARD_SENSORS port, connected to I2C3
+ */ 
+
+/* I2C clock speed configuration (in Hz) */
+#ifndef NUCLEO_I2C_SHIELDS_SPEED
+ #define NUCLEO_I2C_SHIELDS_SPEED                         100000
+#endif /* I2C_ONBOARD_SENSORS_SPEED */
+
+/* I2C peripheral configuration defines (control interface of the audio codec) */
+#define NUCLEO_I2C_SHIELDS                            I2C1      
+#define NUCLEO_I2C_SHIELDS_CLK_ENABLE()               __I2C1_CLK_ENABLE()
+#define NUCLEO_I2C_SHIELDS_SCL_SDA_GPIO_CLK_ENABLE()  __GPIOB_CLK_ENABLE()
+#define NUCLEO_I2C_SHIELDS_SCL_SDA_AF                 GPIO_AF4_I2C1			
+#define NUCLEO_I2C_SHIELDS_SCL_SDA_GPIO_PORT          GPIOB
+#define NUCLEO_I2C_SHIELDS_SCL_PIN                    GPIO_PIN_8
+#define NUCLEO_I2C_SHIELDS_SDA_PIN                    GPIO_PIN_9
+
+#define NUCLEO_I2C_SHIELDS_FORCE_RESET()              __I2C1_FORCE_RESET()
+#define NUCLEO_I2C_SHIELDS_RELEASE_RESET()            __I2C1_RELEASE_RESET()
+
+/* I2C interrupt requests */                  
+#define NUCLEO_I2C_SHIELDS_EV_IRQn                    I2C1_EV_IRQn
+#define NUCLEO_I2C_SHIELDS_ER_IRQn                    I2C1_ER_IRQn
+
+//#define NUCLEO_I2C_SHIELDS_MUTEX                      I2C1_Mutex_id
+//#define NUCLEO_I2C_SHIELDS_MUTEX_TAKE()               osMutexWait(NUCLEO_I2C_SHIELDS_MUTEX, 0)
+//#define NUCLEO_I2C_SHIELDS_MUTEX_RELEASE()            osMutexRelease(NUCLEO_I2C_SHIELDS_MUTEX)
+
+/* Maximum Timeout values for flags waiting loops. These timeouts are not based
+   on accurate values, they just guarantee that the application will not remain
+   stuck if the SPI communication is corrupted.
+   You may modify these timeout values depending on CPU frequency and application
+   conditions (interrupts routines ...). */   
+#define NUCLEO_I2C_SHIELDS_TIMEOUT_MAX    0x1000 /*<! The value of the maximal timeout for BUS waiting loops */
+
+/** @addtogroup NUCLEO_F401RE_LOW_LEVEL_COMPONENT
+  * @{
+  */
+
+/**
+  * @brief  SD Control Lines management
+  */
+#define SD_CS_LOW()       HAL_GPIO_WritePin(SD_CS_GPIO_PORT, SD_CS_PIN, GPIO_PIN_RESET)
+#define SD_CS_HIGH()      HAL_GPIO_WritePin(SD_CS_GPIO_PORT, SD_CS_PIN, GPIO_PIN_SET)
+
+/**
+  * @brief  LCD Control Lines management
+  */
+#define LCD_CS_LOW()      HAL_GPIO_WritePin(LCD_CS_GPIO_PORT, LCD_CS_PIN, GPIO_PIN_RESET)
+#define LCD_CS_HIGH()     HAL_GPIO_WritePin(LCD_CS_GPIO_PORT, LCD_CS_PIN, GPIO_PIN_SET)
+#define LCD_DC_LOW()      HAL_GPIO_WritePin(LCD_DC_GPIO_PORT, LCD_DC_PIN, GPIO_PIN_RESET)
+#define LCD_DC_HIGH()     HAL_GPIO_WritePin(LCD_DC_GPIO_PORT, LCD_DC_PIN, GPIO_PIN_SET)
+     
+/**
+  * @brief  SD Control Interface pins
+  */
+#define SD_CS_PIN                                 GPIO_PIN_5
+#define SD_CS_GPIO_PORT                           GPIOB
+#define SD_CS_GPIO_CLK_ENABLE()                 __GPIOB_CLK_ENABLE()
+#define SD_CS_GPIO_CLK_DISABLE()                __GPIOB_CLK_DISABLE()
+
+/**
+  * @brief  LCD Control Interface pins
+  */
+#define LCD_CS_PIN                                 GPIO_PIN_6
+#define LCD_CS_GPIO_PORT                           GPIOB
+#define LCD_CS_GPIO_CLK_ENABLE()                 __GPIOB_CLK_ENABLE()
+#define LCD_CS_GPIO_CLK_DISABLE()                __GPIOB_CLK_DISABLE()
+    
+/**
+  * @brief  LCD Data/Command Interface pins
+  */
+#define LCD_DC_PIN                                 GPIO_PIN_9
+#define LCD_DC_GPIO_PORT                           GPIOA
+#define LCD_DC_GPIO_CLK_ENABLE()                 __GPIOA_CLK_ENABLE()
+#define LCD_DC_GPIO_CLK_DISABLE()                __GPIOA_CLK_DISABLE()
+
+/*##################### ADC1 ###################################*/
+/**
+  * @brief  ADC Interface pins
+  *         used to detect motion of Joystick available on Adafruit 1.8" TFT shield
+  */
+#define NUCLEO_ADCx                                 ADC1
+#define NUCLEO_ADCx_CLK_ENABLE()                  __ADC1_CLK_ENABLE()
+
+#define NUCLEO_ADCx_GPIO_PORT                       GPIOB
+#define NUCLEO_ADCx_GPIO_PIN                        GPIO_PIN_0
+#define NUCLEO_ADCx_GPIO_CLK_ENABLE()             __GPIOB_CLK_ENABLE()
+#define NUCLEO_ADCx_GPIO_CLK_DISABLE()            __GPIOB_CLK_ENABLE()
+
+
+/* User can use this section to tailor USARTx/UARTx instance used and associated 
+   resources */
+/* Definition for USARTx clock resources */
+#define USARTx                           USART2
+#define USARTx_CLK_ENABLE()              __USART2_CLK_ENABLE();
+#define DMAx_CLK_ENABLE()                __DMA1_CLK_ENABLE()
+#define USARTx_RX_GPIO_CLK_ENABLE()      __GPIOA_CLK_ENABLE()
+#define USARTx_TX_GPIO_CLK_ENABLE()      __GPIOA_CLK_ENABLE() 
+
+#define USARTx_FORCE_RESET()             __USART2_FORCE_RESET()
+#define USARTx_RELEASE_RESET()           __USART2_RELEASE_RESET()
+
+/* Definition for USARTx Pins */
+#define USARTx_TX_PIN                    GPIO_PIN_2
+#define USARTx_TX_GPIO_PORT              GPIOA
+#define USARTx_TX_AF                     GPIO_AF7_USART2
+#define USARTx_RX_PIN                    GPIO_PIN_3
+#define USARTx_RX_GPIO_PORT              GPIOA
+#define USARTx_RX_AF                     GPIO_AF7_USART2
+
+/* Definition for USARTx's DMA */
+#define USARTx_TX_DMA_CHANNEL             DMA_CHANNEL_4
+#define USARTx_TX_DMA_STREAM              DMA1_Stream6
+#define USARTx_RX_DMA_CHANNEL             DMA_CHANNEL_4
+#define USARTx_RX_DMA_STREAM              DMA1_Stream5
+
+/** @defgroup NUCLEO_F401RE_LOW_LEVEL_Exported_Macros 
+  * @{
+  */  
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NUCLEO_F401RE_H */
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */ 
+    
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
+