1 /*
2  * Copyright 2023 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _BOARD_H_
8 #define _BOARD_H_
9 
10 #include "clock_config.h"
11 #include "fsl_common.h"
12 #include "fsl_gpio.h"
13 
14 /*******************************************************************************
15  * Definitions
16  ******************************************************************************/
17 /*! @brief The board name */
18 #define BOARD_NAME "LPCXPRESSO860MAX"
19 
20 #define BOARD_EXTCLKINRATE (0)
21 
22 /*! @brief The UART to use for debug messages. */
23 #define BOARD_DEBUG_USART_TYPE       kSerialPort_Uart
24 #define BOARD_DEBUG_USART_BASEADDR   (uint32_t) USART0
25 #define BOARD_DEBUG_USART_INSTANCE   0U
26 #define BOARD_DEBUG_USART_CLK_FREQ   CLOCK_GetMainClkFreq()
27 #define BOARD_DEBUG_USART_CLK_ATTACH kUART0_Clk_From_MainClk
28 #define BOARD_DEBUG_USART_RST        kUART0_RST_N_SHIFT_RSTn
29 #define BOARD_UART_IRQ               USART0_IRQn
30 #define BOARD_UART_IRQ_HANDLER       USART0_IRQHandler
31 
32 #ifndef BOARD_DEBUG_USART_BAUDRATE
33 #define BOARD_DEBUG_USART_BAUDRATE 9600
34 #endif /* BOARD_DEBUG_UART_BAUDRATE */
35 
36 /*! @brief Board led mapping */
37 #define LOGIC_LED_ON  0U
38 #define LOGIC_LED_OFF 1U
39 
40 /* LED_GREEN */
41 #ifndef BOARD_LED_GREEN_GPIO
42 #define BOARD_LED_GREEN_GPIO GPIO
43 #endif
44 #define BOARD_LED_GREEN_GPIO_PORT 0U
45 #ifndef BOARD_LED_GREEN_GPIO_PIN
46 #define BOARD_LED_GREEN_GPIO_PIN 0U
47 #endif
48 
49 #define LED_GREEN_INIT(output)                                                              \
50     GPIO_PortInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT);                         \
51     GPIO_PinInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, \
52                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED_GREEN */
53 #define LED_GREEN_ON()                                                                   \
54     GPIO_PortClear(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT,                      \
55                    1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN \ \ \ \ \
56                                                     */
57 #define LED_GREEN_OFF()                                                                 \
58     GPIO_PortSet(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT,                       \
59                  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN \ \ \ \ \
60                                                   */
61 #define LED_GREEN_TOGGLE()                                           \
62     GPIO_PortToggle(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \
63                     1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */
64 
65 /* LED_BLUE */
66 #ifndef BOARD_LED_BLUE_GPIO
67 #define BOARD_LED_BLUE_GPIO GPIO
68 #endif
69 #define BOARD_LED_BLUE_GPIO_PORT 1U
70 #ifndef BOARD_LED_BLUE_GPIO_PIN
71 #define BOARD_LED_BLUE_GPIO_PIN 15U
72 #endif
73 
74 #ifndef BOARD_SW2_GPIO
75 #define BOARD_SW2_GPIO GPIO
76 #endif
77 #define BOARD_SW2_GPIO_PORT 0U
78 #ifndef BOARD_SW2_GPIO_PIN
79 #define BOARD_SW2_GPIO_PIN 4U
80 #endif
81 #define BOARD_SW2_NAME        "SW2"
82 #define BOARD_SW2_IRQ         PIN_INT0_IRQn
83 #define BOARD_SW2_IRQ_HANDLER PIN_INT0_IRQHandler
84 
85 #define LED_BLUE_INIT(output)                                                            \
86     GPIO_PortInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT);                        \
87     GPIO_PinInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, \
88                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED_GREEN */
89 #define LED_BLUE_ON()                                                                  \
90     GPIO_PortClear(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT,                      \
91                    1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED_BLUE \ \ \ \ \
92                                                    */
93 #define LED_BLUE_OFF()                                                                \
94     GPIO_PortSet(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT,                       \
95                  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED_BLUE \ \ \ \ \
96                                                  */
97 #define LED_BLUE_TOGGLE()                                          \
98     GPIO_PortToggle(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \
99                     1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED_BLUE */
100 
101 /* LED_RED */
102 #ifndef BOARD_LED_RED_GPIO
103 #define BOARD_LED_RED_GPIO GPIO
104 #endif
105 #define BOARD_LED_RED_GPIO_PORT 0U
106 #ifndef BOARD_LED_RED_GPIO_PIN
107 #define BOARD_LED_RED_GPIO_PIN 12U
108 #endif
109 
110 #define LED_RED_INIT(output)                                                          \
111     GPIO_PortInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT);                       \
112     GPIO_PinInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, \
113                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED_GREEN */
114 #define LED_RED_ON()                                                                 \
115     GPIO_PortClear(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT,                      \
116                    1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED_RED \ \ \ \ \
117                                                   */
118 #define LED_RED_OFF()                                                               \
119     GPIO_PortSet(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT,                       \
120                  1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED_RED \ \ \ \ \
121                                                 */
122 #define LED_RED_TOGGLE()                                         \
123     GPIO_PortToggle(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \
124                     1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED_RED */
125 
126 #if defined(__cplusplus)
127 extern "C" {
128 #endif /* __cplusplus */
129 
130 /*******************************************************************************
131  * API
132  ******************************************************************************/
133 
134 status_t BOARD_InitDebugConsole(void);
135 
136 #if defined(__cplusplus)
137 }
138 #endif /* __cplusplus */
139 
140 #endif /* _BOARD_H_ */
141