From 94101a2cd9baed60360f68096033dc75cbb1dcb3 Mon Sep 17 00:00:00 2001 From: android <android@lingyun.com> Date: Wed, 10 Jul 2024 19:27:36 +0800 Subject: [PATCH] Add STM8S003F3 eDP LCD drvier --- mcu_sdk/stm8s003f3_edp/Libraries/STM8S_StdPeriph_Driver/src/stm8s_wwdg.c | 125 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 125 insertions(+), 0 deletions(-) diff --git a/mcu_sdk/stm8s003f3_edp/Libraries/STM8S_StdPeriph_Driver/src/stm8s_wwdg.c b/mcu_sdk/stm8s003f3_edp/Libraries/STM8S_StdPeriph_Driver/src/stm8s_wwdg.c new file mode 100644 index 0000000..de4b76e --- /dev/null +++ b/mcu_sdk/stm8s003f3_edp/Libraries/STM8S_StdPeriph_Driver/src/stm8s_wwdg.c @@ -0,0 +1,125 @@ +/** + ******************************************************************************** + * @file stm8s_wwdg.c + * @author MCD Application Team + * @version V2.3.0 + * @date 16-June-2017 + * @brief This file contains all the functions for the WWDG peripheral. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2> + * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm8s_wwdg.h" + +/** @addtogroup STM8S_StdPeriph_Driver + * @{ + */ +/* Private define ------------------------------------------------------------*/ +#define BIT_MASK ((uint8_t)0x7F) +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @addtogroup WWDG_Public_Functions + * @{ + */ + +/** + * @brief Initializes the WWDG peripheral. + * This function set Window Register = WindowValue, Counter Register + * according to Counter and \b ENABLE \b WWDG + * @param Counter : WWDG counter value + * @param WindowValue : specifies the WWDG Window Register, range is 0x00 to 0x7F. + * @retval None + */ +void WWDG_Init(uint8_t Counter, uint8_t WindowValue) +{ + /* Check the parameters */ + assert_param(IS_WWDG_WINDOWLIMITVALUE_OK(WindowValue)); + + WWDG->WR = WWDG_WR_RESET_VALUE; + WWDG->CR = (uint8_t)((uint8_t)(WWDG_CR_WDGA | WWDG_CR_T6) | (uint8_t)Counter); + WWDG->WR = (uint8_t)((uint8_t)(~WWDG_CR_WDGA) & (uint8_t)(WWDG_CR_T6 | WindowValue)); +} + +/** + * @brief Refreshes the WWDG peripheral. + * @param Counter : WWDG Counter Value + * This parameter must be a number between 0x40 and 0x7F. + * @retval None + */ +void WWDG_SetCounter(uint8_t Counter) +{ + /* Check the parameters */ + assert_param(IS_WWDG_COUNTERVALUE_OK(Counter)); + + /* Write to T[6:0] bits to configure the counter value, no need to do + a read-modify-write; writing a 0 to WDGA bit does nothing */ + WWDG->CR = (uint8_t)(Counter & (uint8_t)BIT_MASK); +} + +/** + * @brief Gets the WWDG Counter Value. + * This value could be used to check if WWDG is in the window, where + * refresh is allowed. + * @param None + * @retval WWDG Counter Value + */ +uint8_t WWDG_GetCounter(void) +{ + return(WWDG->CR); +} + +/** + * @brief Generates immediate WWDG RESET. + * @param None + * @retval None + */ +void WWDG_SWReset(void) +{ + WWDG->CR = WWDG_CR_WDGA; /* Activate WWDG, with clearing T6 */ +} + +/** + * @brief Sets the WWDG window value. + * @param WindowValue: specifies the window value to be compared to the + * downcounter. + * This parameter value must be lower than 0x80. + * @retval None + */ +void WWDG_SetWindowValue(uint8_t WindowValue) +{ + /* Check the parameters */ + assert_param(IS_WWDG_WINDOWLIMITVALUE_OK(WindowValue)); + + WWDG->WR = (uint8_t)((uint8_t)(~WWDG_CR_WDGA) & (uint8_t)(WWDG_CR_T6 | WindowValue)); +} + +/** + * @} + */ + +/** + * @} + */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -- Gitblit v1.9.1