mirror of
				https://github.com/IcedRooibos/py32f0-template.git
				synced 2025-10-30 17:32:05 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			159 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * @file    py32f0xx_ll_led.c
 | |
|   * @author  MCU Application Team
 | |
|   * @brief   LED LL module driver.
 | |
|   ******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * <h2><center>© Copyright (c) Puya Semiconductor Co.
 | |
|   * All rights reserved.</center></h2>
 | |
|   *
 | |
|   * <h2><center>© Copyright (c) 2016 STMicroelectronics.
 | |
|   * All rights reserved.</center></h2>
 | |
|   *
 | |
|   * This software component is licensed by ST under BSD 3-Clause license,
 | |
|   * the "License"; You may not use this file except in compliance with the
 | |
|   * License. You may obtain a copy of the License at:
 | |
|   *                        opensource.org/licenses/BSD-3-Clause
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| #if defined(USE_FULL_LL_DRIVER)
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "py32f0xx_ll_led.h"
 | |
| #include "py32f0xx_ll_bus.h"
 | |
| #ifdef  USE_FULL_ASSERT
 | |
|   #include "py32_assert.h"
 | |
| #else
 | |
|   #define assert_param(expr) ((void)0U)
 | |
| #endif
 | |
| 
 | |
| /** @addtogroup PY32F0xx_LL_Driver
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| #if defined (LED)
 | |
| 
 | |
| /** @addtogroup LED_LL
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* Private types -------------------------------------------------------------*/
 | |
| /* Private variables ---------------------------------------------------------*/
 | |
| /* Private constants ---------------------------------------------------------*/
 | |
| /* Private macros ------------------------------------------------------------*/
 | |
| 
 | |
| /** @addtogroup LED_LL_Private_Macros
 | |
|   * @{
 | |
|   */
 | |
| #define IS_LL_LED_COM_DRIVE(__VALUE__)      (((__VALUE__) == LL_LED_COMDRIVE_LOW)     ||\
 | |
|                                              ((__VALUE__) == LL_LED_COMDRIVE_HIGH))
 | |
| 
 | |
| #define IS_LL_LED_PRESCALER(__VALUE__)      (((0x00u) < (__VALUE__)) && ((__VALUE__) <= (0xFFu)))
 | |
| 
 | |
| #define IS_LL_LED_COM_SELECT(__VALUE__)     (((__VALUE__) == LL_LED_COMSELECT_1COM)     ||\
 | |
|                                              ((__VALUE__) == LL_LED_COMSELECT_2COM)    ||\
 | |
|                                              ((__VALUE__) == LL_LED_COMSELECT_3COM) ||\
 | |
|                                              ((__VALUE__) == LL_LED_COMSELECT_4COM))
 | |
| 
 | |
| #define IS_LL_LED_LIGHT_TIME(__VALUE__)     (((0x01u) < (__VALUE__)) && ((__VALUE__) <= (0xFFu)))
 | |
| 
 | |
| #define IS_LL_LED_DEAD_TIME(__VALUE__)      (((0x01u) < (__VALUE__)) && ((__VALUE__) <= (0xFFu)))
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private function prototypes -----------------------------------------------*/
 | |
| 
 | |
| /* Exported functions --------------------------------------------------------*/
 | |
| /** @addtogroup LED_LL_Exported_Functions
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @addtogroup LED_LL_EF_Init
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @brief  De-initialize LED registers.
 | |
|   * @param  LEDx LED Port
 | |
|   * @retval An ErrorStatus enumeration value:
 | |
|   *          - SUCCESS: LED registers are de-initialized
 | |
|   *          - ERROR:   Wrong LED
 | |
|   */
 | |
| ErrorStatus LL_LED_DeInit(LED_TypeDef *LEDx)
 | |
| {
 | |
|   ErrorStatus status = SUCCESS;
 | |
| 
 | |
|   /* Check the parameters */
 | |
|   assert_param(IS_LED_ALL_INSTANCE(LEDx));
 | |
| 
 | |
|   /* Force and Release reset on clock of LEDx */
 | |
|   if (LEDx == LED)
 | |
|   {
 | |
|     LL_APB1_GRP2_ForceReset(LL_APB1_GRP2_PERIPH_LED);
 | |
|     LL_APB1_GRP2_ReleaseReset(LL_APB1_GRP2_PERIPH_LED);
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     status = ERROR;
 | |
|   }
 | |
| 
 | |
|   return (status);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Initializes the LED registers according to the specified parameters in the LED_InitStruct.
 | |
|   * @param  LEDx LEDx Instance
 | |
|   * @param  LED_InitStruct pointer to a @ref LL_LED_InitTypeDef structure
 | |
|   *         that contains the configuration information for the specified LED peripheral.
 | |
|   * @retval An ErrorStatus enumeration value:
 | |
|   *          - SUCCESS: LED registers are initialized according to LED_InitStruct content
 | |
|   *          - ERROR:   Not applicable
 | |
|   */
 | |
| ErrorStatus LL_LED_Init(LED_TypeDef *LEDx, LL_LED_InitTypeDef *LED_InitStruct)
 | |
| {
 | |
|   /* Check the parameters */
 | |
|   assert_param(IS_LED_ALL_INSTANCE(LEDx));
 | |
|   assert_param(IS_LL_LED_COM_DRIVE(LED_InitStruct->ComDrive));
 | |
|   assert_param(IS_LL_LED_PRESCALER(LED_InitStruct->Prescaler));
 | |
|   assert_param(IS_LL_LED_COM_SELECT(LED_InitStruct->ComSelect));
 | |
|   assert_param(IS_LL_LED_LIGHT_TIME(LED_InitStruct->LightTime));
 | |
|   assert_param(IS_LL_LED_DEAD_TIME(LED_InitStruct->DeadTime));
 | |
|   
 | |
|   /* LED Register config */
 | |
|   MODIFY_REG(LEDx->CR, (uint32_t)(LED_CR_LED_COM_SEL | LED_CR_EHS),
 | |
|              (LED_InitStruct->ComSelect | LED_InitStruct->ComDrive));
 | |
|   LL_LED_SetPrescaler(LEDx, LED_InitStruct->Prescaler);
 | |
|   LL_LED_SetLightAndDeadTime(LEDx, LED_InitStruct->LightTime, LED_InitStruct->DeadTime);
 | |
|   LL_LED_Enable(LEDx);
 | |
|   
 | |
|   return (SUCCESS);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief Set each @ref LL_LED_InitTypeDef field to default value.
 | |
|   * @param LED_InitStruct pointer to a @ref LL_LED_InitTypeDef structure
 | |
|   *                          whose fields will be set to default values.
 | |
|   * @retval None
 | |
|   */
 | |
| 
 | |
| void LL_LED_StructInit(LL_LED_InitTypeDef *LED_InitStruct)
 | |
| {
 | |
|   /* Reset LED init structure parameters values */
 | |
|   LED_InitStruct->ComDrive = LL_LED_COMDRIVE_LOW;
 | |
|   LED_InitStruct->Prescaler = 0x0u;
 | |
|   LED_InitStruct->ComSelect = LL_LED_COMSELECT_1COM;
 | |
|   LED_InitStruct->LightTime = 0x0u;
 | |
|   LED_InitStruct->DeadTime = 0x0u;
 | |
| }
 | |
| 
 | |
| #endif /* defined (LED) */
 | |
| 
 | |
| 
 | |
| #endif /* USE_FULL_LL_DRIVER */
 | |
| 
 | |
| /************************ (C) COPYRIGHT Puya Semiconductor *****END OF FILE****/
 | 
