Artery_AT32F43x/project/at_surf_f437_board/at_surf_f437_board_rgbled.c

117 lines
3.4 KiB
C

/**
**************************************************************************
* @file at_surf_f437_board_rebled.c
* @brief set of firmware functions to manage rgbled.
**************************************************************************
* 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.
*
**************************************************************************
*/
#include "at_surf_f437_board_rgbled.h"
static __IO uint8_t rgb_led_toggle_flag;
/**
* @brief initialize rgb led
* @param none
* @retval none
*/
void rgb_led_init(void)
{
gpio_init_type gpio_init_struct;
/* enable the tmr and gpio clock */
crm_periph_clock_enable(RGB_LED_R_GPIO_CRM_CLK, TRUE);
crm_periph_clock_enable(RGB_LED_G_GPIO_CRM_CLK, TRUE);
crm_periph_clock_enable(RGB_LED_B_GPIO_CRM_CLK, TRUE);
gpio_default_para_init(&gpio_init_struct);
/* configure the rgb led pin */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = RGB_LED_R_PIN;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(RGB_LED_R_GPIO, &gpio_init_struct);
gpio_init_struct.gpio_pins = RGB_LED_G_PIN;
gpio_init(RGB_LED_G_GPIO, &gpio_init_struct);
gpio_init_struct.gpio_pins = RGB_LED_B_PIN;
gpio_init(RGB_LED_B_GPIO, &gpio_init_struct);
}
/**
* @brief set rgb led color,and turn on.
* @param color: rgb led corlor
* this parameter can be one of the following values:
* - RGB_LED_RED
* - RGB_LED_GREEN
* - RGB_LED_BLUE
* - RGB_LED_YELLOE
* - RGB_LED_GBLUE
* - RGB_LED_PURPLE
* - RGB_LED_WHITE
* @retval flag_status (SET or RESET)
*/
void rgb_led_set(uint16_t color)
{
RGB_LED_R_GPIO->scr = RGB_LED_R_PIN;
RGB_LED_G_GPIO->scr = RGB_LED_G_PIN;
RGB_LED_B_GPIO->scr = RGB_LED_B_PIN;
RGB_LED_R_GPIO->clr = color & RGB_LED_R_PIN;
RGB_LED_G_GPIO->clr = color & RGB_LED_G_PIN;
RGB_LED_B_GPIO->clr = color & RGB_LED_B_PIN;
}
/**
* @brief turn off reg led.
* @param none
* @retval none
*/
void rgb_led_off(void)
{
RGB_LED_R_HIGH();
RGB_LED_G_HIGH();
RGB_LED_B_HIGH();
}
/**
* @brief reg led toggle.
* @param none
* @retval none
*/
void rgb_led_toggle(uint16_t color)
{
if(rgb_led_toggle_flag == 1)
{
rgb_led_set(color);
rgb_led_toggle_flag = 0;
}
else
{
rgb_led_off();
rgb_led_toggle_flag = 1;
}
}