2018-03-02 13:41:35 +07: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 12:32:15 +07:00
# ifndef _BSP_BOARD_H_
# define _BSP_BOARD_H_
2018-03-02 13:41:35 +07: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 12:32:15 +07:00
# if defined BOARD_LPCXPRESSO11U14
2018-03-02 18:38:29 +07:00
# include "lpcxpresso11u14/board_lpcxpresso11u14.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_LPCXPRESSO11U68
2018-03-02 18:38:29 +07:00
# include "lpcxpresso11u68/board_lpcxpresso11u68.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_LPCXPRESSO1347
2018-03-02 18:38:29 +07:00
# include "lpcxpresso1347/board_lpcxpresso1347.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_LPCXPRESSO1769
2018-03-02 18:38:29 +07:00
# include "lpcxpresso1769/board_lpcxpresso1769.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_NGX4330
2018-03-02 13:41:35 +07:00
# include "ngx/board_ngx4330.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_EA4357
2018-03-02 14:53:40 +07:00
# include "ea4357/board_ea4357.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_MCB4300
2018-03-02 13:41:35 +07:00
# include "keil/board_mcb4300.h"
2018-11-13 12:32:15 +07:00
# elif defined BOARD_LPCLINK2
2018-11-13 17:26:17 +07:00
# include "lpcxpresso/board_lpclink2.h"
2018-03-11 00:16:10 +07:00
# elif defined BOARD_PCA10056
2018-11-13 17:26:17 +07: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 23:19:59 +07:00
# include "metro_m0_express/board_metro_m0_express.h"
2018-03-02 13:41:35 +07:00
# else
# error BOARD is not defined or supported yet
# endif
2018-11-13 12:32:15 +07:00
# define CFG_UART_BAUDRATE 115200
2018-03-29 18:03:04 +07:00
# define BOARD_TICKS_HZ 1000
2018-11-13 12:32:15 +07:00
# define board_tick2ms(tck) ( ( ((uint64_t)(tck)) * 1000) / BOARD_TICKS_HZ )
2018-03-29 18:03:04 +07:00
2018-03-02 13:41:35 +07:00
2018-11-13 12:32:15 +07:00
/// Initialize on-board peripherals
2018-03-02 13:41:35 +07:00
void board_init ( void ) ;
2018-11-13 12:32:15 +07:00
//--------------------------------------------------------------------+
// LED
// Board variant must defined following
// - BOARD_LED_NUM : number of LEDs
// - BOARD_LEDn : where n is 0,1 etc ...
//--------------------------------------------------------------------+
2018-03-13 16:30:53 +07: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 12:32:15 +07:00
//--------------------------------------------------------------------+
// Buttons
// TODO refractor later
//--------------------------------------------------------------------+
/** Get the current state of the buttons on the board
2018-03-02 13:41:35 +07:00
* \ return Bitmask where a ' 1 ' means active ( pressed ) , a ' 0 ' means inactive .
*/
uint32_t board_buttons ( void ) ;
2018-11-13 12:32:15 +07:00
/** Get a character input from UART
2018-03-02 13:41:35 +07:00
* \ return ASCII code of the input character or zero if none .
*/
uint8_t board_uart_getchar ( void ) ;
2018-11-13 12:32:15 +07:00
/** Send a character to UART
2018-03-02 13:41:35 +07:00
* \ param [ in ] c the character to be sent
*/
void board_uart_putchar ( uint8_t c ) ;
# ifdef __cplusplus
}
# endif
2018-11-13 12:32:15 +07:00
# endif /* _BSP_BOARD_H_ */
2018-03-02 13:41:35 +07:00
/** @} */