123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- /**
- **************************************************************************
- * @file at32f403a_407_bpr.c
- * @brief contains all the functions for the bpr firmware library
- **************************************************************************
- * 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 "at32f403a_407_conf.h"
- /** @addtogroup AT32F403A_407_periph_driver
- * @{
- */
- /** @defgroup BPR
- * @brief BPR driver modules
- * @{
- */
- #ifdef BPR_MODULE_ENABLED
- /** @defgroup BPR_private_functions
- * @{
- */
- /**
- * @brief bpr reset by crm reset register
- * @param none
- * @retval none
- */
- void bpr_reset(void)
- {
- crm_battery_powered_domain_reset(TRUE);
- crm_battery_powered_domain_reset(FALSE);
- }
- /**
- * @brief bpr event flag get, for tamper event flag
- * @param flag: specifies the flag to check.
- * this parameter can be one of the following values:
- * - BPR_TAMPER_INTERRUPT_FLAG: tamper interrupt flag
- * - BPR_TAMPER_EVENT_FLAG: tamper event flag
- * @retval state of tamper event flag
- */
- flag_status bpr_flag_get(uint32_t flag)
- {
- if(flag == BPR_TAMPER_INTERRUPT_FLAG)
- {
- return (flag_status)(BPR->ctrlsts_bit.tpif);
- }
- else
- {
- return (flag_status)(BPR->ctrlsts_bit.tpef);
- }
- }
- /**
- * @brief bpr interrupt flag get
- * @param flag: specifies the flag to check.
- * this parameter can be one of the following values:
- * - BPR_TAMPER_INTERRUPT_FLAG: tamper interrupt flag
- * - BPR_TAMPER_EVENT_FLAG: tamper event flag
- * @retval state of tamper event flag
- */
- flag_status bpr_interrupt_flag_get(uint32_t flag)
- {
- if(flag == BPR_TAMPER_INTERRUPT_FLAG)
- {
- return (flag_status)(BPR->ctrlsts_bit.tpif && BPR->ctrlsts_bit.tpien);
- }
- else
- {
- return (flag_status)(BPR->ctrlsts_bit.tpef && BPR->ctrlsts_bit.tpien);
- }
- }
- /**
- * @brief clear bpr tamper flag
- * @param flag: specifies the flag to clear.
- * this parameter can be one of the following values:
- * - BPR_TAMPER_INTERRUPT_FLAG: tamper interrupt flag
- * - BPR_TAMPER_EVENT_FLAG: tamper event flag
- * @retval none
- */
- void bpr_flag_clear(uint32_t flag)
- {
- if(flag == BPR_TAMPER_INTERRUPT_FLAG)
- {
- BPR->ctrlsts_bit.tpifclr = TRUE;
- }
- else
- {
- BPR->ctrlsts_bit.tpefclr = TRUE;
- }
- }
- /**
- * @brief enable or disable bpr tamper interrupt
- * @param new_state (TRUE or FALSE)
- * @retval none
- */
- void bpr_interrupt_enable(confirm_state new_state)
- {
- BPR->ctrlsts_bit.tpien = new_state;
- }
- /**
- * @brief read bpr bpr data
- * @param bpr_data
- * this parameter can be one of the following values:
- * - BPR_DATA1
- * - BPR_DATA2
- * ...
- * - BPR_DATA41
- * - BPR_DATA42
- * @retval none
- */
- uint16_t bpr_data_read(bpr_data_type bpr_data)
- {
- return (*(__IO uint16_t *)(BPR_BASE + bpr_data));
- }
- /**
- * @brief write bpr data
- * @param bpr_data
- * this parameter can be one of the following values:
- * - BPR_DATA1
- * - BPR_DATA2
- * ...
- * - BPR_DATA41
- * - BPR_DATA42
- * @param data_value (0x0000~0xFFFF)
- * @retval none
- */
- void bpr_data_write(bpr_data_type bpr_data, uint16_t data_value)
- {
- (*(__IO uint32_t *)(BPR_BASE + bpr_data)) = data_value;
- }
- /**
- * @brief select bpr rtc output
- * @param output_source
- * this parameter can be one of the following values:
- * - BPR_RTC_OUTPUT_NONE: output disable.
- * - BPR_RTC_OUTPUT_CLOCK_CAL_BEFORE: output clock before calibration.
- * - BPR_RTC_OUTPUT_ALARM: output alarm event with pluse mode.
- * - BPR_RTC_OUTPUT_SECOND: output second event with pluse mode.
- * - BPR_RTC_OUTPUT_CLOCK_CAL_AFTER: output clock after calibration.
- * - BPR_RTC_OUTPUT_ALARM_TOGGLE: output alarm event with toggle mode.
- * - BPR_RTC_OUTPUT_SECOND_TOGGLE: output second event with toggle mode.
- * @retval none
- */
- void bpr_rtc_output_select(bpr_rtc_output_type output_source)
- {
- /* clear cco,asoe,asos,ccos,togen bits */
- BPR->rtccal &= (uint32_t)~0x0F80;
- /* set output_source value */
- BPR->rtccal |= output_source;
- }
- /**
- * @brief set rtc clock calibration value
- * @param calibration_value (0x00~0x7f)
- * @retval none
- */
- void bpr_rtc_clock_calibration_value_set(uint8_t calibration_value)
- {
- /* set rtc clock calibration value */
- BPR->rtccal_bit.calval= calibration_value;
- }
- /**
- * @brief enable or disable bpr tamper pin
- * @param new_state (TRUE or FALSE)
- * @retval none
- */
- void bpr_tamper_pin_enable(confirm_state new_state)
- {
- BPR->ctrl_bit.tpen = new_state;
- }
- /**
- * @brief set bpr tamper pin active level
- * @param active_level
- * this parameter can be one of the following values:
- * - BPR_TAMPER_PIN_ACTIVE_HIGH: tamper pin input active level is high.
- * - BPR_TAMPER_PIN_ACTIVE_LOW: tamper pin input active level is low.
- * @retval none
- */
- void bpr_tamper_pin_active_level_set(bpr_tamper_pin_active_level_type active_level)
- {
- BPR->ctrl_bit.tpp = active_level;
- }
- /**
- * @}
- */
- #endif
- /**
- * @}
- */
- /**
- * @}
- */
|