123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- #include "gd32f30x_bkp.h"
- #define TAMPER_FLAG_SHIFT ((uint8_t)8U)
- void bkp_deinit(void)
- {
-
- rcu_bkp_reset_enable();
- rcu_bkp_reset_disable();
- }
- void bkp_write_data(bkp_data_register_enum register_number, uint16_t data)
- {
- if((register_number >= BKP_DATA_10) && (register_number <= BKP_DATA_41)){
- BKP_DATA10_41(register_number-1U) = data;
- }else if((register_number >= BKP_DATA_0) && (register_number <= BKP_DATA_9)){
- BKP_DATA0_9(register_number-1U) = data;
- }else{
-
- }
- }
- uint16_t bkp_read_data(bkp_data_register_enum register_number)
- {
- uint16_t data = 0U;
-
-
- if((register_number >= BKP_DATA_10) && (register_number <= BKP_DATA_41)){
- data = BKP_DATA10_41(register_number-1U);
- }else if((register_number >= BKP_DATA_0) && (register_number <= BKP_DATA_9)){
- data = BKP_DATA0_9(register_number-1U);
- }else{
-
- }
- return data;
- }
- void bkp_rtc_calibration_output_enable(void)
- {
- BKP_OCTL |= (uint16_t)BKP_OCTL_COEN;
- }
- void bkp_rtc_calibration_output_disable(void)
- {
- BKP_OCTL &= (uint16_t)~BKP_OCTL_COEN;
- }
- void bkp_rtc_signal_output_enable(void)
- {
- BKP_OCTL |= (uint16_t)BKP_OCTL_ASOEN;
- }
- void bkp_rtc_signal_output_disable(void)
- {
- BKP_OCTL &= (uint16_t)~BKP_OCTL_ASOEN;
- }
- void bkp_rtc_output_select(uint16_t outputsel)
- {
- uint16_t ctl = 0U;
-
- ctl = BKP_OCTL;
- ctl &= (uint16_t)~BKP_OCTL_ROSEL;
- ctl |= outputsel;
- BKP_OCTL = ctl;
- }
- void bkp_rtc_clock_output_select(uint16_t clocksel)
- {
- uint16_t ctl = 0U;
-
- ctl = BKP_OCTL;
- ctl &= (uint16_t)~BKP_OCTL_CCOSEL;
- ctl |= clocksel;
- BKP_OCTL = ctl;
- }
- void bkp_rtc_clock_calibration_direction(uint16_t direction)
- {
- uint16_t ctl = 0U;
-
- ctl = BKP_OCTL;
- ctl &= (uint16_t)~BKP_OCTL_CALDIR;
- ctl |= direction;
- BKP_OCTL = ctl;
- }
- void bkp_rtc_calibration_value_set(uint8_t value)
- {
- uint16_t ctl;
-
- ctl = BKP_OCTL;
- ctl &= ~(uint16_t)BKP_OCTL_RCCV;
- ctl |= (uint16_t)OCTL_RCCV(value);
- BKP_OCTL = ctl;
- }
- void bkp_tamper_detection_enable(void)
- {
- BKP_TPCTL |= (uint16_t)BKP_TPCTL_TPEN;
- }
- void bkp_tamper_detection_disable(void)
- {
- BKP_TPCTL &= (uint16_t)~BKP_TPCTL_TPEN;
- }
- void bkp_tamper_active_level_set(uint16_t level)
- {
- uint16_t ctl = 0U;
-
- ctl = BKP_TPCTL;
- ctl &= (uint16_t)~BKP_TPCTL_TPAL;
- ctl |= level;
- BKP_TPCTL = ctl;
- }
- void bkp_tamper_interrupt_enable(void)
- {
- BKP_TPCS |= (uint16_t)BKP_TPCS_TPIE;
- }
- void bkp_tamper_interrupt_disable(void)
- {
- BKP_TPCS &= (uint16_t)~BKP_TPCS_TPIE;
- }
- FlagStatus bkp_flag_get(uint16_t flag)
- {
- if(RESET != (BKP_TPCS & flag)){
- return SET;
- }else{
- return RESET;
- }
- }
- void bkp_flag_clear(uint16_t flag)
- {
- BKP_TPCS |= (uint16_t)(flag >> TAMPER_FLAG_SHIFT);
- }
- FlagStatus bkp_interrupt_flag_get(uint16_t flag)
- {
- if(RESET != (BKP_TPCS & flag)){
- return SET;
- }else{
- return RESET;
- }
- }
- void bkp_interrupt_flag_clear(uint16_t flag)
- {
- BKP_TPCS |= (uint16_t)(flag >> TAMPER_FLAG_SHIFT);
- }
|