mirror of
				https://github.com/IcedRooibos/py32f0-template.git
				synced 2025-10-30 17:32:05 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			476 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			476 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * @file    py32f0xx_ll_led.h
 | |
|   * @author  MCU Application Team
 | |
|   * @brief   Header file of LED LL module.
 | |
|   ******************************************************************************
 | |
|   * @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
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Define to prevent recursive inclusion -------------------------------------*/
 | |
| #ifndef PY32F0XX_LL_LED_H
 | |
| #define PY32F0XX_LL_LED_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "py32f0xx.h"
 | |
| 
 | |
| /** @addtogroup PY32F0XX_LL_Driver
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| #if defined (LED)
 | |
| /** @defgroup LED_LL LED
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* Private types -------------------------------------------------------------*/
 | |
| /* Private variables ---------------------------------------------------------*/
 | |
| /* Private constants ---------------------------------------------------------*/
 | |
| /* Private macros ------------------------------------------------------------*/
 | |
| /* Exported types ------------------------------------------------------------*/
 | |
| /**
 | |
|   * @brief LED Init Structure definition
 | |
|   */
 | |
| typedef struct
 | |
| {
 | |
|   uint32_t ComDrive;          /*!< Specifies the LED COM drive capability.
 | |
|                                      This parameter can be a value of @ref LED_LL_EC_ComDrive */
 | |
| 
 | |
|   uint32_t Prescaler;         /*!< Specifies the prescaler value used to divide the LED clock.
 | |
|                                      This parameter can be a number between Min_Data = 0x00(div1) and Max_Data = 0xFF(div256) */
 | |
| 
 | |
|   uint32_t ComSelect;            /*!< Specifies the number of COM open.
 | |
|                                      This parameter can be a value of @ref LED_LL_EC_ComSelct */
 | |
| 
 | |
|   uint32_t LightTime;         /*!< Specifies LED Lighting time.
 | |
|                                      This parameter can be a number between Min_Data = 1 and Max_Data = 0xFF */
 | |
| 
 | |
|   uint32_t DeadTime;          /*!< Specifies LED Dead time.
 | |
|                                      This parameter can be a number between Min_Data = 1 and Max_Data = 0xFF */
 | |
| 
 | |
| } LL_LED_InitTypeDef;
 | |
| 
 | |
| /* Exported constants --------------------------------------------------------*/
 | |
| /** @defgroup LED_LL_EC_ComDrive ComDrive
 | |
|   * @{
 | |
|   */
 | |
| #define LL_LED_COMDRIVE_LOW          0x00000000U
 | |
| #define LL_LED_COMDRIVE_HIGH         LED_CR_EHS
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| 
 | |
| /** @defgroup LED_LL_EC_ComSelct the number of COM open
 | |
|   * @{
 | |
|   */
 | |
| #define LL_LED_COMSELECT_1COM             0x00000000U
 | |
| #define LL_LED_COMSELECT_2COM             LED_CR_LED_COM_SEL_0
 | |
| #define LL_LED_COMSELECT_3COM             LED_CR_LED_COM_SEL_1
 | |
| #define LL_LED_COMSELECT_4COM             (LED_CR_LED_COM_SEL_1 | LED_CR_LED_COM_SEL_0)
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup LED_LL_EC_DisplayValue LED display value
 | |
|   * @{
 | |
|   */
 | |
| #define LL_LED_DISP_NONE            0x00U
 | |
| #define LL_LED_DISP_FULL            0xFFU
 | |
| 
 | |
| #define LL_LED_DISP_0               0x3FU
 | |
| #define LL_LED_DISP_1               0x06U
 | |
| #define LL_LED_DISP_2               0x5BU
 | |
| #define LL_LED_DISP_3               0x4FU
 | |
| #define LL_LED_DISP_4               0x66U
 | |
| #define LL_LED_DISP_5               0x6DU
 | |
| #define LL_LED_DISP_6               0x7DU
 | |
| #define LL_LED_DISP_7               0x07U
 | |
| #define LL_LED_DISP_8               0x7FU
 | |
| #define LL_LED_DISP_9               0x6FU
 | |
| #define LL_LED_DISP_A               0x77U
 | |
| #define LL_LED_DISP_B               0x7CU
 | |
| #define LL_LED_DISP_C               0x39U
 | |
| #define LL_LED_DISP_D               0x5EU
 | |
| #define LL_LED_DISP_E               0x79U
 | |
| #define LL_LED_DISP_F               0x71U
 | |
| #define LL_LED_DISP_H               0x76U
 | |
| #define LL_LED_DISP_P               0x73U
 | |
| #define LL_LED_DISP_U               0x3EU
 | |
| #define LL_LED_DISP_DOT             0x80U
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup LED_LL_EC_ComDisplay LED COM Select
 | |
|   * @{
 | |
|   */
 | |
| #define LL_LED_COM0                0x00000000U
 | |
| #define LL_LED_COM1                0x00000004U
 | |
| #define LL_LED_COM2                0x00000008U
 | |
| #define LL_LED_COM3                0x0000000CU
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /** @defgroup LED_LL_EC_DataReg Data Register Mask and position
 | |
|   * @{
 | |
|   */
 | |
| #define LL_LED_DR_DATA               LED_DR0_DATA0
 | |
| #define LL_LED_DR_DATA_Pos           LED_DR0_DATA0_Pos
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Exported functions --------------------------------------------------------*/
 | |
| /**
 | |
|   * @brief  Set the LED COM drive capability.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  ComDrive This parameter can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COMDRIVE_LOW
 | |
|   *         @arg @ref LL_LED_COMDRIVE_HIGH
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetComDrive(LED_TypeDef *LEDx, uint32_t ComDrive)
 | |
| {
 | |
|   MODIFY_REG(LEDx->CR, LED_CR_EHS, ComDrive);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the LED COM drive capability.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval Returned value can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COMDRIVE_LOW
 | |
|   *         @arg @ref LL_LED_COMDRIVE_HIGH
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetComDrive(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return (READ_BIT(LEDx->CR, LED_CR_EHS));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Enable LED Interrupt.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_EnableIT(LED_TypeDef *LEDx)
 | |
| {
 | |
|   SET_BIT(LEDx->CR, LED_CR_IE);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Disable LED Interrupt.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_DisableIT(LED_TypeDef *LEDx)
 | |
| {
 | |
|   CLEAR_BIT(LEDx->CR, LED_CR_IE);
 | |
| }
 | |
| /**
 | |
|   * @brief  Check if LED Interrupt is enabled
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval State of bit (1 or 0).
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_IsEnabledIT(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return ((READ_BIT(LEDx->CR, LED_CR_IE) == (LED_CR_IE)) ? 1UL : 0UL);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set he number of COM open.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  ComNum This parameter can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COMSELECT_1COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_2COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_3COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_4COM
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetComNum(LED_TypeDef *LEDx, uint32_t ComNum)
 | |
| {
 | |
|   MODIFY_REG(LEDx->CR, LED_CR_LED_COM_SEL, ComNum);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the number of COM open.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval Returned value can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COMSELECT_1COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_2COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_3COM
 | |
|   *         @arg @ref LL_LED_COMSELECT_4COM
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetComNum(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return (READ_BIT(LEDx->CR, LED_CR_LED_COM_SEL));
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|   * @brief  Enable LED. 
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_Enable(LED_TypeDef *LEDx)
 | |
| {
 | |
|   SET_BIT(LEDx->CR, LED_CR_LEDON);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Disable LED. 
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_Disable(LED_TypeDef *LEDx)
 | |
| {
 | |
|   CLEAR_BIT(LEDx->CR, LED_CR_LEDON);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Checks if LED is enabled
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval State of bit (1 or 0).
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_IsEnabled(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return ((READ_BIT(LEDx->CR, LED_CR_LEDON) == (LED_CR_LEDON)) ? 1UL : 0UL);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set the LED prescale Value.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  Prescaler This parameter can be a number between Min_Data = 0x00(div1)
 | |
|   *         and Max_Data = 0xFF(div256)
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetPrescaler(LED_TypeDef *LEDx, uint32_t Prescaler)
 | |
| {
 | |
|   MODIFY_REG(LEDx->PR, LED_PR_PR, (Prescaler << LED_PR_PR_Pos));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Return LED Prescaler Value.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval Returned value can be a number between Min_Data = 0x00(div1)
 | |
|   *         and Max_Data = 0xFF(div256)
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetPrescaler(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return (READ_BIT(LEDx->PR, LED_PR_PR) >> LED_PR_PR_Pos);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set the LED Lighting and Dead time.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  LightTime This parameter can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   * @param  DeadTime This parameter can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetLightAndDeadTime(LED_TypeDef *LEDx,\
 | |
|   uint32_t LightTime, uint32_t DeadTime)
 | |
| {
 | |
|   MODIFY_REG(LEDx->TR, (LED_TR_T1 | LED_TR_T2), ((LightTime << LED_TR_T1_Pos) |\
 | |
|       (DeadTime << LED_TR_T2_Pos)));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set the LED Lighting time.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  LightTime This parameter can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetLightTime(LED_TypeDef *LEDx, uint32_t LightTime)
 | |
| {
 | |
|   MODIFY_REG(LEDx->TR, LED_TR_T1, (LightTime << LED_TR_T1_Pos));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set the LED Dead time.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  DeadTime This parameter can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetDeadTime(LED_TypeDef *LEDx, uint32_t DeadTime)
 | |
| {
 | |
|   MODIFY_REG(LEDx->TR, LED_TR_T2, (DeadTime << LED_TR_T2_Pos));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the LED Lighting time.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval Returned value can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetLightTime(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return (READ_BIT(LEDx->TR, LED_TR_T1) >> LED_TR_T1_Pos);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the LED Dead time.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval Returned value can be a number between Min_Data = 1 and
 | |
|   *         Max_Data = 0xFF
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetDeadTime(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return (READ_BIT(LEDx->TR, LED_TR_T2) >> LED_TR_T2_Pos);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Set the LED display value.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  comCh Specify COM channels.This parameter can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COM0
 | |
|   *         @arg @ref LL_LED_COM1
 | |
|   *         @arg @ref LL_LED_COM2
 | |
|   *         @arg @ref LL_LED_COM3
 | |
|   * @param  data Specify display values.This parameter can be one of the following values:
 | |
|   *         @arg @ref LL_LED_DISP_NONE
 | |
|   *         @arg @ref LL_LED_DISP_FULL
 | |
|   *         @arg @ref LL_LED_DISP_0
 | |
|   *         @arg @ref LL_LED_DISP_1
 | |
|   *         @arg @ref LL_LED_DISP_2
 | |
|   *         @arg @ref LL_LED_DISP_3
 | |
|   *         @arg @ref LL_LED_DISP_4
 | |
|   *         @arg @ref LL_LED_DISP_5
 | |
|   *         @arg @ref LL_LED_DISP_6
 | |
|   *         @arg @ref LL_LED_DISP_7
 | |
|   *         @arg @ref LL_LED_DISP_8
 | |
|   *         @arg @ref LL_LED_DISP_9
 | |
|   *         @arg @ref LL_LED_DISP_A
 | |
|   *         @arg @ref LL_LED_DISP_B
 | |
|   *         @arg @ref LL_LED_DISP_C 
 | |
|   *         @arg @ref LL_LED_DISP_D
 | |
|   *         @arg @ref LL_LED_DISP_E
 | |
|   *         @arg @ref LL_LED_DISP_F
 | |
|   *         @arg @ref LL_LED_DISP_H
 | |
|   *         @arg @ref LL_LED_DISP_P
 | |
|   *         @arg @ref LL_LED_DISP_U
 | |
|   *         @arg @ref LL_LED_DISP_DOT
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_SetDisplayValue(LED_TypeDef *LEDx,uint32_t comCh,\
 | |
|   uint32_t data)
 | |
| {
 | |
|   MODIFY_REG((*((uint32_t *)((uint32_t)&(LEDx->DR0) + comCh))), LL_LED_DR_DATA,\
 | |
|      (data << LL_LED_DR_DATA_Pos));
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the LED display value.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @param  comCh Specify COM channels.This parameter can be one of the following values:
 | |
|   *         @arg @ref LL_LED_COM0
 | |
|   *         @arg @ref LL_LED_COM1
 | |
|   *         @arg @ref LL_LED_COM2
 | |
|   *         @arg @ref LL_LED_COM3
 | |
|   * @retval Returned value can be one of the following values:
 | |
|   *         @arg @ref LL_LED_DISP_NONE
 | |
|   *         @arg @ref LL_LED_DISP_FULL
 | |
|   *         @arg @ref LL_LED_DISP_0
 | |
|   *         @arg @ref LL_LED_DISP_1
 | |
|   *         @arg @ref LL_LED_DISP_2
 | |
|   *         @arg @ref LL_LED_DISP_3
 | |
|   *         @arg @ref LL_LED_DISP_4
 | |
|   *         @arg @ref LL_LED_DISP_5
 | |
|   *         @arg @ref LL_LED_DISP_6
 | |
|   *         @arg @ref LL_LED_DISP_7
 | |
|   *         @arg @ref LL_LED_DISP_8
 | |
|   *         @arg @ref LL_LED_DISP_9
 | |
|   *         @arg @ref LL_LED_DISP_A
 | |
|   *         @arg @ref LL_LED_DISP_B
 | |
|   *         @arg @ref LL_LED_DISP_C 
 | |
|   *         @arg @ref LL_LED_DISP_D
 | |
|   *         @arg @ref LL_LED_DISP_E
 | |
|   *         @arg @ref LL_LED_DISP_F
 | |
|   *         @arg @ref LL_LED_DISP_H
 | |
|   *         @arg @ref LL_LED_DISP_P
 | |
|   *         @arg @ref LL_LED_DISP_U
 | |
|   *         @arg @ref LL_LED_DISP_DOT
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_GetDisplayValue(LED_TypeDef *LEDx, uint32_t comCh)
 | |
| {
 | |
|   return ((READ_BIT((*((uint32_t *)((uint32_t)&(LEDx->DR0) + comCh))), LL_LED_DR_DATA))\
 | |
|       >> LL_LED_DR_DATA_Pos);
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|   * @brief  Get the LED interrupt flag.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval State of bit (1 or 0).
 | |
|   */
 | |
| __STATIC_INLINE uint32_t LL_LED_IsActiveFlag_IT(LED_TypeDef *LEDx)
 | |
| {
 | |
|   return ((READ_BIT(LEDx->IR, LED_IR_FLAG) == (LED_IR_FLAG)) ? 1UL : 0UL);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  the LED interrupt flag.
 | |
|   * @param  LEDx LED Instance
 | |
|   * @retval None
 | |
|   */
 | |
| __STATIC_INLINE void LL_LED_ClearFlag_IT(LED_TypeDef *LEDx)
 | |
| {
 | |
|   SET_BIT(LEDx->IR, LED_IR_FLAG);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #if defined(USE_FULL_LL_DRIVER)
 | |
| /** @defgroup LED_LL_EF_Init Initialization and de-initialization functions
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| ErrorStatus LL_LED_DeInit(LED_TypeDef *LEDx);
 | |
| ErrorStatus LL_LED_Init(LED_TypeDef *LEDx, LL_LED_InitTypeDef *LED_InitStruct);
 | |
| void LL_LED_StructInit(LL_LED_InitTypeDef *LED_InitStruct);
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| #endif /* USE_FULL_LL_DRIVER */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #endif /* LED */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* PY32F0xx_LL_LED_H */
 | |
| 
 | |
| /************************ (C) COPYRIGHT Puya *****END OF FILE****/
 | 
