311 lines
11 KiB
C
311 lines
11 KiB
C
/**
|
|
**************************************************************************
|
|
* @file at32f421_board.h
|
|
* @brief header file for at-start board. set of firmware functions to
|
|
* manage leds and push-button. initialize delay function.
|
|
**************************************************************************
|
|
* Copyright notice & Disclaimer
|
|
*
|
|
* The software Board Support Package (BSP) that is made available to
|
|
* download from Artery official website is the copyrighted work of Artery.
|
|
* Artery authorizes customers to use, copy, and distribute the BSP
|
|
* software and its related documentation for the purpose of design and
|
|
* development in conjunction with Artery microcontrollers. Use of the
|
|
* software is governed by this copyright notice and the following disclaimer.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
|
|
* GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
|
|
* TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
|
|
* STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
|
|
* INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
|
|
*
|
|
**************************************************************************
|
|
*/
|
|
|
|
#ifndef __AT32F421_BOARD_H
|
|
#define __AT32F421_BOARD_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "stdio.h"
|
|
#include "at32f421.h"
|
|
#include <stdint.h>
|
|
|
|
/** @addtogroup AT32F421_board
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup BOARD
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup BOARD_pins_definition
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* this header include define support list:
|
|
* 1. at-start-f421 v1.x boards
|
|
* if define AT_START_F421_V1, the header file support at-start-f421 v1.x board
|
|
*/
|
|
|
|
#if !defined (AT_START_F421_V1)
|
|
#error "please select first the board at-start device used in your application (in at32f421_board.h file)"
|
|
#endif
|
|
|
|
/******************** define led ********************/
|
|
typedef enum
|
|
{
|
|
// LED1 = 0, // PWR
|
|
// LED2 , // LP1
|
|
// LED3 , // LP2
|
|
// LED4 , // LP3
|
|
// LED5 // LP4
|
|
// LED_PWR = 0, // PWR
|
|
LED_LP1 = 0, // LP1
|
|
LED_LP2 , // LP2
|
|
LED_LP3 , // LP3
|
|
LED_LP4 // LP4
|
|
} led_type;
|
|
|
|
|
|
#define LED_NUM 4
|
|
|
|
//LED_PWR
|
|
//#define LED0_PIN GPIO_PINS_15
|
|
//#define LED0_GPIO GPIOA
|
|
//#define LED0_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
//LP1
|
|
#define LED1_PIN GPIO_PINS_15
|
|
#define LED1_GPIO GPIOA
|
|
#define LED1_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
#define LED_LP1_PIN LED1_PIN
|
|
//LP2
|
|
#define LED2_PIN GPIO_PINS_3
|
|
#define LED2_GPIO GPIOB
|
|
#define LED2_GPIO_CRM_CLK CRM_GPIOB_PERIPH_CLOCK
|
|
#define LED_LP2_PIN LED2_PIN
|
|
//LP3
|
|
#define LED3_PIN GPIO_PINS_5
|
|
#define LED3_GPIO GPIOA
|
|
#define LED3_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
#define LED_LP3_PIN LED3_PIN
|
|
//LP4
|
|
#define LED4_PIN GPIO_PINS_4
|
|
#define LED4_GPIO GPIOA
|
|
#define LED4_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
#define LED_LP4_PIN LED4_PIN
|
|
|
|
|
|
#define LED_RED_PIN LED0_PIN
|
|
#define LED_RED_GPIO LED0_GPIO
|
|
#define LED_GPIO_CRM_CLK LED0_GPIO_CRM_CLK
|
|
|
|
#define LED1_ON gpio_bits_reset(LED1_GPIO, LED1_PIN)
|
|
#define LED1_OFF gpio_bits_set(LED1_GPIO, LED1_PIN)
|
|
#ifdef DEBUG
|
|
#define LED2_ON gpio_bits_reset(LED2_GPIO, LED2_PIN)
|
|
#define LED2_OFF gpio_bits_set(LED2_GPIO, LED2_PIN)
|
|
#else
|
|
#define LED2_ON gpio_bits_reset(LED2_GPIO, LED2_PIN)
|
|
#define LED2_OFF gpio_bits_set(LED2_GPIO, LED2_PIN)
|
|
#endif
|
|
#define LED3_ON gpio_bits_reset(LED3_GPIO, LED3_PIN)
|
|
#define LED3_OFF gpio_bits_set(LED3_GPIO, LED3_PIN)
|
|
#define LED4_ON gpio_bits_reset(LED4_GPIO, LED4_PIN)
|
|
#define LED4_OFF gpio_bits_set(LED4_GPIO, LED4_PIN)
|
|
|
|
//#ifdef DEBUG
|
|
//#define LEDA_OFF
|
|
//#define LEDA_ON
|
|
//#else
|
|
//#define LEDA_OFF gpio_bits_set(LED_GREEN_GPIO, LED_GREEN_PIN)
|
|
//#define LEDA_ON gpio_bits_reset(LED_GREEN_GPIO, LED_GREEN_PIN)
|
|
//#endif
|
|
|
|
//#define LEDC_OFF gpio_bits_set(LED_YELLOW_GPIO, LED_YELLOW_PIN)
|
|
//#define LEDC_ON gpio_bits_reset(LED_YELLOW_GPIO, LED_YELLOW_PIN)
|
|
|
|
//#define LED_YELLOW_OFF LEDC_OFF
|
|
//#define LED_YELLOW_ON LEDC_ON
|
|
|
|
|
|
|
|
|
|
// RLY
|
|
//#define RLY1_PIN GPIO_PINS_6
|
|
//#define RLY1_GPIO GPIOA
|
|
//#define RLY1_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
//#define RLY2_PIN GPIO_PINS_5
|
|
//#define RLY2_GPIO GPIOA
|
|
//#define RLY2_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
//Functional state Relay and Exist state Relay
|
|
#define RLY1_PIN GPIO_PINS_4
|
|
#define RLY1_GPIO GPIOB
|
|
#define RLY1_CRM_CLK CRM_GPIOB_PERIPH_CLOCK
|
|
|
|
#define RLY2_PIN GPIO_PINS_5
|
|
#define RLY2_GPIO GPIOB
|
|
#define RLY2_CRM_CLK CRM_GPIOB_PERIPH_CLOCK
|
|
|
|
#define RLY3_PIN GPIO_PINS_6
|
|
#define RLY3_GPIO GPIOB
|
|
#define RLY3_CRM_CLK CRM_GPIOB_PERIPH_CLOCK
|
|
|
|
#define RLY4_PIN GPIO_PINS_7
|
|
#define RLY4_GPIO GPIOB
|
|
#define RLY4_CRM_CLK CRM_GPIOB_PERIPH_CLOCK
|
|
|
|
#define RLY1_ON gpio_bits_set(RLY1_GPIO, RLY1_PIN)
|
|
#define RLY1_OFF gpio_bits_reset(RLY1_GPIO, RLY1_PIN)
|
|
#define RLY2_ON gpio_bits_set(RLY2_GPIO, RLY2_PIN)
|
|
#define RLY2_OFF gpio_bits_reset(RLY2_GPIO, RLY2_PIN)
|
|
#define RLY3_ON gpio_bits_set(RLY3_GPIO, RLY3_PIN)
|
|
#define RLY3_OFF gpio_bits_reset(RLY3_GPIO, RLY3_PIN)
|
|
#define RLY4_ON gpio_bits_set(RLY4_GPIO, RLY4_PIN)
|
|
#define RLY4_OFF gpio_bits_reset(RLY4_GPIO, RLY4_PIN)
|
|
|
|
|
|
|
|
//Freq level
|
|
#define FLPA1_PIN GPIO_PINS_2 // 33nF
|
|
#define FLPA1_GPIO GPIOA
|
|
#define FLPA1_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPA2_PIN GPIO_PINS_3 // 10nF
|
|
#define FLPA2_GPIO GPIOA
|
|
#define FLPA2_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPB1_PIN GPIO_PINS_0 // 33nF
|
|
#define FLPB1_GPIO GPIOA
|
|
#define FLPB1_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPB2_PIN GPIO_PINS_1 // 10nF
|
|
#define FLPB2_GPIO GPIOA
|
|
#define FLPB2_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPC1_PIN GPIO_PINS_11 // 33nF
|
|
#define FLPC1_GPIO GPIOA
|
|
#define FLPC1_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPC2_PIN GPIO_PINS_12 // 10nF
|
|
#define FLPC2_GPIO GPIOA
|
|
#define FLPC2_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPD1_PIN GPIO_PINS_13 // 33nF
|
|
#define FLPD1_GPIO GPIOA
|
|
#define FLPD1_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
#define FLPD2_PIN GPIO_PINS_14 // 10nF
|
|
#define FLPD2_GPIO GPIOA
|
|
#define FLPD2_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
// Set loop frequent level: high or low level
|
|
#define FLPA1_HIGH gpio_bits_reset(FLPA1_GPIO, FLPA1_PIN)
|
|
#define FLPA1_LOW gpio_bits_set(FLPA1_GPIO, FLPA1_PIN)
|
|
#define FLPA2_HIGH gpio_bits_reset(FLPA2_GPIO, FLPA2_PIN)
|
|
#define FLPA2_LOW gpio_bits_set(FLPA2_GPIO, FLPA2_PIN)
|
|
|
|
#define FLPB1_HIGH gpio_bits_reset(FLPB1_GPIO, FLPB1_PIN)
|
|
#define FLPB1_LOW gpio_bits_set(FLPB1_GPIO, FLPB1_PIN)
|
|
#define FLPB2_HIGH gpio_bits_reset(FLPB2_GPIO, FLPB2_PIN)
|
|
#define FLPB2_LOW gpio_bits_set(FLPB2_GPIO, FLPB2_PIN)
|
|
|
|
#define FLPC1_HIGH gpio_bits_reset(FLPC1_GPIO, FLPC1_PIN)
|
|
#define FLPC1_LOW gpio_bits_set(FLPC1_GPIO, FLPC1_PIN)
|
|
#define FLPC2_HIGH gpio_bits_reset(FLPC2_GPIO, FLPC2_PIN)
|
|
#define FLPC2_LOW gpio_bits_set(FLPC2_GPIO, FLPC2_PIN)
|
|
|
|
#define FLPD1_HIGH gpio_bits_reset(FLPD1_GPIO, FLPD1_PIN)
|
|
#define FLPD1_LOW gpio_bits_set(FLPD1_GPIO, FLPD1_PIN)
|
|
#define FLPD2_HIGH gpio_bits_reset(FLPD2_GPIO, FLPD2_PIN)
|
|
#define FLPD2_LOW gpio_bits_set(FLPD2_GPIO, FLPD2_PIN)
|
|
|
|
|
|
/**************** define print uart ******************/
|
|
#define PRINT_UART USART1
|
|
#define PRINT_UART_CRM_CLK CRM_USART2_PERIPH_CLOCK
|
|
#define PRINT_UART_TX_PIN GPIO_PINS_8
|
|
#define PRINT_UART_TX_GPIO GPIOA
|
|
#define PRINT_UART_TX_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
#define PRINT_UART_TX_PIN_SOURCE GPIO_PINS_SOURCE8
|
|
#define PRINT_UART_TX_PIN_MUX_NUM GPIO_MUX_4
|
|
|
|
/******************* define button *******************/
|
|
typedef enum
|
|
{
|
|
USER_BUTTON = 0,
|
|
NO_BUTTON = 1
|
|
} button_type;
|
|
|
|
#define USER_BUTTON_PIN GPIO_PINS_0
|
|
#define USER_BUTTON_PORT GPIOA
|
|
#define USER_BUTTON_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup BOARD_exported_functions
|
|
* @{
|
|
*/
|
|
|
|
/******************** functions ********************/
|
|
void at32_board_init(void);
|
|
void loop_timer_io_init(void);
|
|
|
|
/* led operation function */
|
|
void at32_led_init(led_type led);
|
|
void at32_led_on(led_type led);
|
|
void at32_led_off(led_type led);
|
|
void at32_led_toggle(led_type led);
|
|
|
|
/* button operation function */
|
|
void at32_button_init(void);
|
|
void freq_level_gpio_init(void);
|
|
button_type at32_button_press(void);
|
|
uint8_t at32_button_state(void);
|
|
|
|
/* delay function */
|
|
void delay_init(void);
|
|
void delay_us(uint32_t nus);
|
|
void delay_ms(uint16_t nms);
|
|
void delay_sec(uint16_t sec);
|
|
|
|
void poll_red_pwm(void);
|
|
|
|
/* printf uart init function */
|
|
void uart_print_init(uint32_t baudrate);
|
|
void dma_configuration(void);
|
|
void usart_configuration(void);
|
|
void usart1_sendstring(uint8_t *buf, uint16_t len);
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
extern crm_clocks_freq_type g_crm_clocks_freq_struct;
|
|
extern tmr_input_config_type g_tmr_input_config_struct;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|