/** ****************************************************************************** * @file fm33a0xxev_bstim.h * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file contains all the functions prototypes for the BSTIM firmware library. ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FM33A0XXEV_BSTIM_H #define __FM33A0XXEV_BSTIM_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "FM33A0XXEV.h" #define BSTIM_CR1_ARPE_Pos 7 /* Auto-reloadÔ¤×°ÔØÊ¹ÄÜ (Auto-Reload Preload Enable) 0£ºARR¼Ä´æÆ÷²»Ê¹ÄÜpreload 1£ºARR¼Ä´æÆ÷ʹÄÜpreload */ #define BSTIM_CR1_ARPE_Msk (0x1U << BSTIM_CR1_ARPE_Pos) /* ARR¼Ä´æÆ÷²»Ê¹ÄÜpreload */ /* ARR¼Ä´æÆ÷ʹÄÜpreload */ #define BSTIM_CR1_OPM_Pos 3 /* µ¥Âö³åÊä³öģʽ (One Pulse Mode) 0£ºUpdate Event·¢Éúʱ¼ÆÊýÆ÷²»Í£Ö¹ 1£ºUpdate Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£© */ #define BSTIM_CR1_OPM_Msk (0x1U << BSTIM_CR1_OPM_Pos) #define BSTIM_CR1_OPM_CONTINUE (0x0U << BSTIM_CR1_OPM_Pos) /* Update Event·¢Éúʱ¼ÆÊýÆ÷²»Í£Ö¹ */ #define BSTIM_CR1_OPM_STOP (0x1U << BSTIM_CR1_OPM_Pos) /* Update Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£© */ #define BSTIM_CR1_URS_Pos 2 /* ¸üÐÂÇëÇóÑ¡Ôñ (Update Request Select) 0£ºÒÔÏÂʼþÄܹ»²úÉúupdateÖÐ¶Ï ¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö Èí¼þÖÃλUG¼Ä´æÆ÷ ´Ó»ú¿ØÖÆÆ÷²úÉúupdate 1£º½ö¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö»á²úÉúupdateÖжϻòDMAÇëÇó */ #define BSTIM_CR1_URS_Msk (0x1U << BSTIM_CR1_URS_Pos) #define BSTIM_CR1_URS_ALL (0x0U << BSTIM_CR1_URS_Pos) /* ÒÔÏÂʼþÄܹ»²úÉúupdateÖÐ¶Ï */ #define BSTIM_CR1_URS_COUNT (0x1U << BSTIM_CR1_URS_Pos) /* ½ö¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö»á²úÉúupdateÖжϻòDMAÇëÇó */ #define BSTIM_CR1_UDIS_Pos 1 /* ½ûÖ¹update (Update Disable) 0£ºÊ¹ÄÜupdateʼþ£»ÒÔÏÂʼþ·¢Éúʱ²úÉúupdateʼþ ¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö Èí¼þÖÃλUG¼Ä´æÆ÷ ´Ó»ú¿ØÖÆÆ÷²úÉúupdate 1£º½ûÖ¹updateʼþ£¬²»¸üÐÂshadow¼Ä´æÆ÷¡£µ±UGÖÃλ»ò´Ó»ú¿ØÖÆÆ÷ÊÕµ½Ó²¼þresetÊ±ÖØÐ³õʼ»¯¼ÆÊýÆ÷ºÍÔ¤·ÖƵÆ÷¡£ */ #define BSTIM_CR1_UDIS_Msk (0x1U << BSTIM_CR1_UDIS_Pos) /* ʹÄÜupdateʼþ£»ÒÔÏÂʼþ·¢Éúʱ²úÉúupdateʼþ */ /* ½ûÖ¹updateʼþ£¬²»¸üÐÂshadow¼Ä´æÆ÷¡£µ±UGÖÃλ»ò´Ó»ú¿ØÖÆÆ÷ÊÕµ½Ó²¼þresetÊ±ÖØÐ³õʼ»¯¼ÆÊýÆ÷ºÍÔ¤·ÖƵÆ÷¡£ */ #define BSTIM_CR1_CEN_Pos 0 /* ¼ÆÊýÆ÷ʹÄÜ (Counter Enable) 0£º¼ÆÊýÆ÷¹Ø±Õ 1£º¼ÆÊýÆ÷ʹÄÜ ×¢Ò⣺Íⲿ´¥·¢Ä£Ê½¿ÉÒÔ×Ô¶¯ÖÃλCEN */ #define BSTIM_CR1_CEN_Msk (0x1U << BSTIM_CR1_CEN_Pos) /* ¼ÆÊýÆ÷¹Ø±Õ */ /* ¼ÆÊýÆ÷ʹÄÜ */ /* Íⲿ´¥·¢Ä£Ê½¿ÉÒÔ×Ô¶¯ÖÃλCEN */ #define BSTIM_CR2_MMS_Pos 4 /* Ö÷»úģʽѡÔñ£¬ÓÃÓÚÅäÖÃÖ÷»úģʽÏÂÏò´Ó»ú·¢Ë͵Äͬ²½´¥·¢Ðźţ¨TRGO£©Ô´ (Master Mode Select) 000£ºBSTIM_EGRµÄUG¼Ä´æÆ÷±»ÓÃ×÷TRGO 001£º¼ÆÊýÆ÷ʹÄÜÐźÅCNT_EN±»ÓÃ×÷TRGO£¬¿ÉÓÃÓÚͬʱÆô¶¯¶à¸ö¶¨Ê±Æ÷ 010£ºUE£¨update event£©Ðźű»ÓÃ×÷TRGO 011/100/111£ºRFU ×¢Ò⣺´Ó»ú¶¨Ê±Æ÷»òADC±ØÐëÊÂÏÈʹÄܹ¤×÷ʱÖÓ£¬²ÅÄܽÓÊÕÖ÷»ú¶¨Ê±Æ÷·¢Ë͵ÄTRGO */ #define BSTIM_CR2_MMS_Msk (0x7U << BSTIM_CR2_MMS_Pos) #define BSTIM_IER_UIE_Pos 0 /* UpdateʼþÖжÏʹÄÜ (Update event Interrupt Enable) 0£º½ûÖ¹UpdateʼþÖÐ¶Ï 1£ºÔÊÐíUpdateʼþÖÐ¶Ï */ #define BSTIM_IER_UIE_Msk (0x1U << BSTIM_IER_UIE_Pos) /* ½ûÖ¹UpdateʼþÖÐ¶Ï */ /* ÔÊÐíUpdateʼþÖÐ¶Ï */ #define BSTIM_ISR_UIF_Pos 0 /* UpdateʼþÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã¡£(Update event Interrupt Flag,write 1 to flag) µ±ÒÔÏÂʼþ·¢Éúʱ£¬UIFÖÃ룬²¢¸üÐÂshadow¼Ä´æÆ÷ -ÖØ¸´¼ÆÊýÆ÷=0£¬²¢ÇÒUDIS=0µÄÇé¿öÏ£¬¼ÆÊýÆ÷·¢ÉúÒç³ö -URS=0ÇÒUDIS=0µÄÇé¿öÏ£¬Èí¼þÖÃλUG¼Ä´æÆ÷³õʼ»¯¼ÆÊýÆ÷ -URS=0ÇÒUDIS=0µÄÇé¿öÏ£¬´¥·¢Ê¼þ³õʼ»¯¼ÆÊýÆ÷ */ #define BSTIM_ISR_UIF_Msk (0x1U << BSTIM_ISR_UIF_Pos) #define BSTIM_EGR_UG_Pos 0 /* Èí¼þUpdateʼþ£¬Èí¼þÖÃλ´Ë¼Ä´æÆ÷²úÉúUpdateʼþ£¬Ó²¼þ×Ô¶¯ÇåÁã (User Generate) Èí¼þÖÃλUGʱ»áÖØÐ³õʼ»¯¼ÆÊýÆ÷²¢¸üÐÂshadow¼Ä´æÆ÷£¬Ô¤·ÖƵ¼ÆÊýÆ÷±»ÇåÁã¡£ */ #define BSTIM_EGR_UG_Msk (0x1U << BSTIM_EGR_UG_Pos) #define BSTIM_CNTR_CNT_Pos 0 /* ¼ÆÊýÆ÷Öµ (Counter) */ #define BSTIM_CNTR_CNT_Msk (0xffffffffU << BSTIM_CNTR_CNT_Pos) #define BSTIM_PSCR_PSC_Pos 0 /* ¼ÆÊýÆ÷ʱÖÓ£¨CK_CNT£©Ô¤·ÖƵֵ (Counter Clock Prescaler) fCK_CNT=fCK_PSC/(PSC[15:0]+1) ÕâÊÇÒ»¸öpreload¼Ä´æÆ÷£¬ÔÚupdateʼþ·¢ÉúʱÆäÄÚÈݱ»ÔØÈëshadow¼Ä´æÆ÷ */ #define BSTIM_PSCR_PSC_Msk (0xffffffffU << BSTIM_PSCR_PSC_Pos) #define BSTIM_ARR_ARR_Pos 0 /* ¼ÆÊýÒç³öʱµÄ×Ô¶¯ÖØÔØÖµ (Auto-Reload Register) ÕâÊÇÒ»¸öpreload¼Ä´æÆ÷£¬ÔÚupdateʼþ·¢ÉúʱÆäÄÚÈݱ»ÔØÈëshadow¼Ä´æÆ÷ */ #define BSTIM_ARR_ARR_Msk (0xffffffffU << BSTIM_ARR_ARR_Pos) //Macro_End /* Exported functions --------------------------------------------------------*/ extern void BSTIM_Deinit(void); /* Auto-reloadÔ¤×°ÔØÊ¹ÄÜ (Auto-Reload Preload Enable) 0£ºARR¼Ä´æÆ÷²»Ê¹ÄÜpreload 1£ºARR¼Ä´æÆ÷ʹÄÜpreload Ïà¹Øº¯Êý */ extern void BSTIM_CR1_ARPE_Setable(FunState NewState); extern FunState BSTIM_CR1_ARPE_Getable(void); /* µ¥Âö³åÊä³öģʽ (One Pulse Mode) 0£ºUpdate Event·¢Éúʱ¼ÆÊýÆ÷²»Í£Ö¹ 1£ºUpdate Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£© Ïà¹Øº¯Êý */ extern void BSTIM_CR1_OPM_Set(uint32_t SetValue); extern uint32_t BSTIM_CR1_OPM_Get(void); /* ¸üÐÂÇëÇóÑ¡Ôñ (Update Request Select) 0£ºÒÔÏÂʼþÄܹ»²úÉúupdateÖÐ¶Ï ¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö Èí¼þÖÃλUG¼Ä´æÆ÷ ´Ó»ú¿ØÖÆÆ÷²úÉúupdate 1£º½ö¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö»á²úÉúupdateÖжϻòDMAÇëÇó Ïà¹Øº¯Êý */ extern void BSTIM_CR1_URS_Set(uint32_t SetValue); extern uint32_t BSTIM_CR1_URS_Get(void); /* ½ûÖ¹update (Update Disable) 0£ºÊ¹ÄÜupdateʼþ£»ÒÔÏÂʼþ·¢Éúʱ²úÉúupdateʼþ ¼ÆÊýÆ÷ÉÏÒç³ö»òÏÂÒç³ö Èí¼þÖÃλUG¼Ä´æÆ÷ ´Ó»ú¿ØÖÆÆ÷²úÉúupdate 1£º½ûÖ¹updateʼþ£¬²»¸üÐÂshadow¼Ä´æÆ÷¡£µ±UGÖÃλ»ò´Ó»ú¿ØÖÆÆ÷ÊÕµ½Ó²¼þresetÊ±ÖØÐ³õʼ»¯¼ÆÊýÆ÷ºÍÔ¤·ÖƵÆ÷¡£ Ïà¹Øº¯Êý */ extern void BSTIM_CR1_UDIS_Setable(FunState NewState); extern FunState BSTIM_CR1_UDIS_Getable(void); /* ¼ÆÊýÆ÷ʹÄÜ (Counter Enable) 0£º¼ÆÊýÆ÷¹Ø±Õ 1£º¼ÆÊýÆ÷ʹÄÜ ×¢Ò⣺Íⲿ´¥·¢Ä£Ê½¿ÉÒÔ×Ô¶¯ÖÃλCEN Ïà¹Øº¯Êý */ extern void BSTIM_CR1_CEN_Setable(FunState NewState); extern FunState BSTIM_CR1_CEN_Getable(void); /* Ö÷»úģʽѡÔñ£¬ÓÃÓÚÅäÖÃÖ÷»úģʽÏÂÏò´Ó»ú·¢Ë͵Äͬ²½´¥·¢Ðźţ¨TRGO£©Ô´ (Master Mode Select) 000£ºBSTIM_EGRµÄUG¼Ä´æÆ÷±»ÓÃ×÷TRGO 001£º¼ÆÊýÆ÷ʹÄÜÐźÅCNT_EN±»ÓÃ×÷TRGO£¬¿ÉÓÃÓÚͬʱÆô¶¯¶à¸ö¶¨Ê±Æ÷ 010£ºUE£¨update event£©Ðźű»ÓÃ×÷TRGO 011/100/111£ºRFU ×¢Ò⣺´Ó»ú¶¨Ê±Æ÷»òADC±ØÐëÊÂÏÈʹÄܹ¤×÷ʱÖÓ£¬²ÅÄܽÓÊÕÖ÷»ú¶¨Ê±Æ÷·¢Ë͵ÄTRGO Ïà¹Øº¯Êý */ extern void BSTIM_CR2_Write(uint32_t SetValue); extern uint32_t BSTIM_CR2_Read(void); /* UpdateʼþÖжÏʹÄÜ (Update event Interrupt Enable) 0£º½ûÖ¹UpdateʼþÖÐ¶Ï 1£ºÔÊÐíUpdateʼþÖÐ¶Ï Ïà¹Øº¯Êý */ extern void BSTIM_IER_UIE_Setable(FunState NewState); extern FunState BSTIM_IER_UIE_Getable(void); /* UpdateʼþÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã¡£(Update event Interrupt Flag,write 1 to flag) µ±ÒÔÏÂʼþ·¢Éúʱ£¬UIFÖÃ룬²¢¸üÐÂshadow¼Ä´æÆ÷ -ÖØ¸´¼ÆÊýÆ÷=0£¬²¢ÇÒUDIS=0µÄÇé¿öÏ£¬¼ÆÊýÆ÷·¢ÉúÒç³ö -URS=0ÇÒUDIS=0µÄÇé¿öÏ£¬Èí¼þÖÃλUG¼Ä´æÆ÷³õʼ»¯¼ÆÊýÆ÷ -URS=0ÇÒUDIS=0µÄÇé¿öÏ£¬´¥·¢Ê¼þ³õʼ»¯¼ÆÊýÆ÷ Ïà¹Øº¯Êý */ extern void BSTIM_ISR_UIF_Clr(void); extern FlagStatus BSTIM_ISR_UIF_Chk(void); /* Èí¼þUpdateʼþ£¬Èí¼þÖÃλ´Ë¼Ä´æÆ÷²úÉúUpdateʼþ£¬Ó²¼þ×Ô¶¯ÇåÁã (User Generate) Èí¼þÖÃλUGʱ»áÖØÐ³õʼ»¯¼ÆÊýÆ÷²¢¸üÐÂshadow¼Ä´æÆ÷£¬Ô¤·ÖƵ¼ÆÊýÆ÷±»ÇåÁã¡£ Ïà¹Øº¯Êý */ extern void BSTIM_EGR_UG_Setable(FunState NewState); /* ¼ÆÊýÆ÷Öµ (Counter) Ïà¹Øº¯Êý */ extern void BSTIM_CNTR_Write(uint32_t SetValue); extern uint32_t BSTIM_CNTR_Read(void); /* ¼ÆÊýÆ÷ʱÖÓ£¨CK_CNT£©Ô¤·ÖƵֵ (Counter Clock Prescaler) fCK_CNT=fCK_PSC/(PSC[15:0]+1) ÕâÊÇÒ»¸öpreload¼Ä´æÆ÷£¬ÔÚupdateʼþ·¢ÉúʱÆäÄÚÈݱ»ÔØÈëshadow¼Ä´æÆ÷ Ïà¹Øº¯Êý */ extern void BSTIM_PSCR_Write(uint32_t SetValue); extern uint32_t BSTIM_PSCR_Read(void); /* ¼ÆÊýÒç³öʱµÄ×Ô¶¯ÖØÔØÖµ (Auto-Reload Register) ÕâÊÇÒ»¸öpreload¼Ä´æÆ÷£¬ÔÚupdateʼþ·¢ÉúʱÆäÄÚÈݱ»ÔØÈëshadow¼Ä´æÆ÷ Ïà¹Øº¯Êý */ extern void BSTIM_ARR_Write(uint32_t SetValue); extern uint32_t BSTIM_ARR_Read(void); //Announce_End #ifdef __cplusplus } #endif #endif /* __FM33A0XXEV_BSTIM_H */