esp32-s2_dfu/hw/bsp/board.h

148 lines
5.1 KiB
C
Raw Normal View History

2018-03-02 07:41:35 +01:00
/**************************************************************************/
/*!
@file board.h
@author hathach (tinyusb.org)
@section LICENSE
Software License Agreement (BSD License)
Copyright (c) 2013, hathach (tinyusb.org)
All rights reserved.
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 the copyright holders 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 ''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 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.
This file is part of the tinyusb stack.
*/
/**************************************************************************/
/** \ingroup group_demo
* \defgroup group_board Boards Abstraction Layer
* @{ */
2018-11-13 06:32:15 +01:00
#ifndef _BSP_BOARD_H_
#define _BSP_BOARD_H_
2018-03-02 07:41:35 +01:00
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stdbool.h>
#include "ansi_escape.h"
//--------------------------------------------------------------------+
// PRINTF TARGET DEFINE
//--------------------------------------------------------------------+
/** \defgroup group_printf Printf Retarget
* \brief Retarget the standard stdio printf/getchar to other IOs
* @{ */
#define PRINTF_TARGET_SEMIHOST 1 ///< Using the semihost support from toolchain, requires no hardware but is the slowest
#define PRINTF_TARGET_UART 2 ///< Using UART as stdio, this is the default for most of the board
#define PRINTF_TARGET_SWO 3 ///< Using non-instructive serial wire output (SWO), is the best option since it does not slow down MCU but requires supported from debugger and IDE
#define PRINTF_TARGET_NONE 4 ///< Using none at all.
/** @} */
#define PRINTF(...) printf(__VA_ARGS__)
2018-11-13 06:32:15 +01:00
#if defined BOARD_LPCXPRESSO11U14
2018-03-02 12:38:29 +01:00
#include "lpcxpresso11u14/board_lpcxpresso11u14.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_LPCXPRESSO11U68
2018-03-02 12:38:29 +01:00
#include "lpcxpresso11u68/board_lpcxpresso11u68.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_LPCXPRESSO1347
2018-03-02 12:38:29 +01:00
#include "lpcxpresso1347/board_lpcxpresso1347.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_LPCXPRESSO1769
2018-03-02 12:38:29 +01:00
#include "lpcxpresso1769/board_lpcxpresso1769.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_NGX4330
2018-03-02 07:41:35 +01:00
#include "ngx/board_ngx4330.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_EA4357
2018-03-02 08:53:40 +01:00
#include "ea4357/board_ea4357.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_MCB4300
2018-03-02 07:41:35 +01:00
#include "keil/board_mcb4300.h"
2018-11-13 06:32:15 +01:00
#elif defined BOARD_LPCLINK2
2018-11-13 11:26:17 +01:00
#include "lpcxpresso/board_lpclink2.h"
#elif defined BOARD_PCA10056
2018-11-13 11:26:17 +01:00
#include "pca10056/board_pca10056.h"
#elif defined BOARD_METRO_M4_EXPRESS
#include "metro_m4_express/board_metro_m4_express.h"
#elif defined BOARD_METRO_M0_EXPRESS
2018-11-20 17:19:59 +01:00
#include "metro_m0_express/board_metro_m0_express.h"
2018-03-02 07:41:35 +01:00
#else
#error BOARD is not defined or supported yet
#endif
2018-11-13 06:32:15 +01:00
#define CFG_UART_BAUDRATE 115200
#define BOARD_TICKS_HZ 1000
2018-11-13 06:32:15 +01:00
#define board_tick2ms(tck) ( ( ((uint64_t)(tck)) * 1000) / BOARD_TICKS_HZ )
2018-03-02 07:41:35 +01:00
2018-11-13 06:32:15 +01:00
/// Initialize on-board peripherals
2018-03-02 07:41:35 +01:00
void board_init(void);
2018-11-13 06:32:15 +01:00
//--------------------------------------------------------------------+
// LED
// Board variant must defined following
// - BOARD_LED_NUM : number of LEDs
// - BOARD_LEDn : where n is 0,1 etc ...
//--------------------------------------------------------------------+
2018-03-13 10:30:53 +01:00
void board_led_control(uint32_t led_id, bool state);
static inline void board_led_on(uint32_t led_id)
{
board_led_control(led_id, true);
}
static inline void board_led_off(uint32_t led_id)
{
board_led_control(led_id, false);
}
2018-11-13 06:32:15 +01:00
//--------------------------------------------------------------------+
// Buttons
// TODO refractor later
//--------------------------------------------------------------------+
/** Get the current state of the buttons on the board
2018-03-02 07:41:35 +01:00
* \return Bitmask where a '1' means active (pressed), a '0' means inactive.
*/
uint32_t board_buttons(void);
2018-11-13 06:32:15 +01:00
/** Get a character input from UART
2018-03-02 07:41:35 +01:00
* \return ASCII code of the input character or zero if none.
*/
uint8_t board_uart_getchar(void);
2018-11-13 06:32:15 +01:00
/** Send a character to UART
2018-03-02 07:41:35 +01:00
* \param[in] c the character to be sent
*/
void board_uart_putchar(uint8_t c);
#ifdef __cplusplus
}
#endif
2018-11-13 06:32:15 +01:00
#endif /* _BSP_BOARD_H_ */
2018-03-02 07:41:35 +01:00
/** @} */