/** ****************************************************************************** * @file fm33a0xxev_dbg.h * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file contains all the functions prototypes for the DBG firmware library. ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FM33A0XXEV_DBG_H #define __FM33A0XXEV_DBG_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "FM33A0XXEV.h" #define DBG_CR_DBG_LPT_STOP_Pos 15 /* Debug״̬Ï _32ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕLPT 0£ºDebugʱ±£³ÖLPTÔ­À´×´Ì¬ */ #define DBG_CR_DBG_LPT_STOP_Msk (0x1U << DBG_CR_DBG_LPT_STOP_Pos) /* Debugʱ¹Ø±ÕLPT */ /* Debugʱ±£³ÖLPTÔ­À´×´Ì¬ */ #define DBG_CR_DBG_BST_STOP_Pos 14 /* Debug״̬ÏÂGPTIM2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBSTIM 0£ºDebugʱ±£³ÖBSTIMÔ­À´×´Ì¬ */ #define DBG_CR_DBG_BST_STOP_Msk (0x1U << DBG_CR_DBG_BST_STOP_Pos) /* Debugʱ¹Ø±ÕBSTIM */ /* Debugʱ±£³ÖBSTIMÔ­À´×´Ì¬ */ #define DBG_CR_DBG_ET4_STOP_Pos 13 /* Debug״̬ÏÂGPTIM2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET4 0£ºDebugʱ±£³ÖET4Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET4_STOP_Msk (0x1U << DBG_CR_DBG_ET4_STOP_Pos) /* Debugʱ¹Ø±ÕET4 */ /* Debugʱ±£³ÖET4Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET3_STOP_Pos 12 /* Debug״̬ÏÂGPTIM2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET3 0£ºDebugʱ±£³ÖET3Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET3_STOP_Msk (0x1U << DBG_CR_DBG_ET3_STOP_Pos) /* Debugʱ¹Ø±ÕET3 */ /* Debugʱ±£³ÖET3Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET2_STOP_Pos 11 /* Debug״̬ÏÂGPTIM2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET2 0£ºDebugʱ±£³ÖET2Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET2_STOP_Msk (0x1U << DBG_CR_DBG_ET2_STOP_Pos) /* Debugʱ¹Ø±ÕET2 */ /* Debugʱ±£³ÖET2Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET1_STOP_Pos 10 /* Debug״̬ÏÂGPTIM1ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET1 0£ºDebugʱ±£³ÖET1Ô­À´×´Ì¬ */ #define DBG_CR_DBG_ET1_STOP_Msk (0x1U << DBG_CR_DBG_ET1_STOP_Pos) /* Debugʱ¹Ø±ÕET1 */ /* Debugʱ±£³ÖET1Ô­À´×´Ì¬ */ #define DBG_CR_DBG_BT2_STOP_Pos 9 /* Debug״̬ÏÂBSTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT2 0£ºDebugʱ±£³ÖBT2Ô­À´×´Ì¬ */ #define DBG_CR_DBG_BT2_STOP_Msk (0x1U << DBG_CR_DBG_BT2_STOP_Pos) /* Debugʱ¹Ø±ÕBT2 */ /* Debugʱ±£³ÖBT2Ô­À´×´Ì¬ */ #define DBG_CR_DBG_BT1_STOP_Pos 8 /* Debug״̬ÏÂBSTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT1 0£ºDebugʱ±£³ÖBT1Ô­À´×´Ì¬ */ #define DBG_CR_DBG_BT1_STOP_Msk (0x1U << DBG_CR_DBG_BT1_STOP_Pos) /* Debugʱ¹Ø±ÕBT1 */ /* Debugʱ±£³ÖBT1Ô­À´×´Ì¬ */ #define DBG_CR_DBG_WWDT_STOP_Pos 1 /* Debug״̬ÏÂWWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕWWDT 0£ºDebugʱ±£³ÖWWDTÔ­À´×´Ì¬ */ #define DBG_CR_DBG_WWDT_STOP_Msk (0x1U << DBG_CR_DBG_WWDT_STOP_Pos) /* Debugʱ¹Ø±ÕWWDT */ /* Debugʱ±£³ÖWWDTÔ­À´×´Ì¬ */ #define DBG_CR_DBG_IWDT_STOP_Pos 0 /* Debug״̬ÏÂIWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕIWDT 0£ºDebugʱ±£³ÖIWDT¿ªÆô */ #define DBG_CR_DBG_IWDT_STOP_Msk (0x1U << DBG_CR_DBG_IWDT_STOP_Pos) /* Debugʱ¹Ø±ÕIWDT */ /* Debugʱ±£³ÖIWDT¿ªÆô */ #define DBG_HDFR_DABORT_ADDR_FLAG_Pos 6 /* µØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£ºµØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó 0£ºÎ´½øÐеØÖ··Ç¶ÔÆë·ÃÎÊ */ #define DBG_HDFR_DABORT_ADDR_FLAG_Msk (0x1U << DBG_HDFR_DABORT_ADDR_FLAG_Pos) #define DBG_HDFR_DABORT_RESP_FLAG_Pos 5 /* ·Ç·¨µØÖ··ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£º×ÜÏß´«ÊäÖзÃÎÊÁË·Ç·¨µØÖ·µ¼ÖÂHRESPΪ¸ß²úÉú´íÎó 0£ºÎ´·ÃÎÊ·Ç·¨µØÖ· */ #define DBG_HDFR_DABORT_RESP_FLAG_Msk (0x1U << DBG_HDFR_DABORT_RESP_FLAG_Pos) #define DBG_HDFR_SVCUNDEF_FLAG_Pos 4 /* SVC instructions䶨Òå±êÖ¾£¬Ð´1ÇåÁã if the SVCall priority is lower than the currently activelevel, or if HardFault or NMI is active, or PRIMASK is set, the core should treat SVC instructions as though theywere UNDEFINED¡£ */ #define DBG_HDFR_SVCUNDEF_FLAG_Msk (0x1U << DBG_HDFR_SVCUNDEF_FLAG_Pos) #define DBG_HDFR_BKPT_FLAG_Pos 3 /* Ö´ÐÐBKPTÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËBKPTÖ¸Áî 0£ºÎ´Ö´ÐÐBKPTÖ¸Áî */ #define DBG_HDFR_BKPT_FLAG_Msk (0x1U << DBG_HDFR_BKPT_FLAG_Pos) #define DBG_HDFR_TBIT_FLAG_Pos 2 /* Thumb-State±êÖ¾£¬Ð´1ÇåÁã 1£ºÇл»µ½ARM״̬ 0£º´¦ÓÚThumb-State */ #define DBG_HDFR_TBIT_FLAG_Msk (0x1U << DBG_HDFR_TBIT_FLAG_Pos) #define DBG_HDFR_SPECIAL_OP_FLAG_Pos 1 /* ÌØÊâÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËÌØÊâÖ¸Áî´úÂ룬ÈçÊÔͼÔÚXNÇøÓòÄÚȡָ 0£ºÎÞÌØÊâÖ¸Áî´úÂë±»Ö´ÐÐ */ #define DBG_HDFR_SPECIAL_OP_FLAG_Msk (0x1U << DBG_HDFR_SPECIAL_OP_FLAG_Pos) #define DBG_HDFR_HDF_REQUEST_FLAG_Pos 0 /* hardfault±ê־룬ÈκÎÀàÐ͵Ähardfault¶¼»áµ¼Ö¸ÃλÖÃλ£¬Ð´1ÇåÁã 1£ºhardfault ÇëÇó 0£ºÎÞhardfaultÇëÇó */ #define DBG_HDFR_HDF_REQUEST_FLAG_Msk (0x1U << DBG_HDFR_HDF_REQUEST_FLAG_Pos) //Macro_End /* Exported functions --------------------------------------------------------*/ extern void DBG_Deinit(void); /* Debug״̬ÏÂLPTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕLPTIM 0£ºDebugʱ±£³ÖLPTIMÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_LPT_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_LPT_STOP_Getable(void); /* Debug״̬ÏÂBSTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBSTIM 0£ºDebugʱ±£³ÖBSTIMÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_BST_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_BST_STOP_Getable(void); /* Debug״̬ÏÂET4ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET4 0£ºDebugʱ±£³ÖET4Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_ET4_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_ET4_STOP_Getable(void); /* Debug״̬ÏÂET3ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET3 0£ºDebugʱ±£³ÖET3Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_ET3_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_ET3_STOP_Getable(void); /* Debug״̬ÏÂET2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET2 0£ºDebugʱ±£³ÖET2Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_ET2_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_ET2_STOP_Getable(void); /* Debug״̬ÏÂET1ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET1 0£ºDebugʱ±£³ÖET1Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_ET1_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_ET1_STOP_Getable(void); /* Debug״̬ÏÂBT2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT2 0£ºDebugʱ±£³ÖBT2Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_BT2_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_BT2_STOP_Getable(void); /* Debug״̬ÏÂBT1ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT1 0£ºDebugʱ±£³ÖET1Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_BT1_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_BT1_STOP_Getable(void); /* Debug״̬ÏÂWWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕWWDT 0£ºDebugʱ±£³ÖWWDTÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_WWDT_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_WWDT_STOP_Getable(void); /* Debug״̬ÏÂIWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕIWDT 0£ºDebugʱ±£³ÖIWDT¿ªÆô Ïà¹Øº¯Êý */ extern void DBG_CR_DBG_IWDT_STOP_Setable(FunState NewState); extern FunState DBG_CR_DBG_IWDT_STOP_Getable(void); /* µØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£ºµØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó 0£ºÎ´½øÐеØÖ··Ç¶ÔÆë·ÃÎÊ Ïà¹Øº¯Êý */ extern void DBG_HDFR_DABORT_ADDR_FLAG_Clr(void); extern FlagStatus DBG_HDFR_DABORT_ADDR_FLAG_Chk(void); /* ·Ç·¨µØÖ··ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£º×ÜÏß´«ÊäÖзÃÎÊÁË·Ç·¨µØÖ·µ¼ÖÂHRESPΪ¸ß²úÉú´íÎó 0£ºÎ´·ÃÎÊ·Ç·¨µØÖ· Ïà¹Øº¯Êý */ extern void DBG_HDFR_DABORT_RESP_FLAG_Clr(void); extern FlagStatus DBG_HDFR_DABORT_RESP_FLAG_Chk(void); /* SVC instructions䶨Òå±êÖ¾£¬Ð´1ÇåÁã if the SVCall priority is lower than the currently activelevel, or if HardFault or NMI is active, or PRIMASK is set, the core should treat SVC instructions as though theywere UNDEFINED¡£ Ïà¹Øº¯Êý */ extern void DBG_HDFR_SVCUNDEF_FLAG_Clr(void); extern FlagStatus DBG_HDFR_SVCUNDEF_FLAG_Chk(void); /* Ö´ÐÐBKPTÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËBKPTÖ¸Áî 0£ºÎ´Ö´ÐÐBKPTÖ¸Áî Ïà¹Øº¯Êý */ extern void DBG_HDFR_BKPT_FLAG_Clr(void); extern FlagStatus DBG_HDFR_BKPT_FLAG_Chk(void); /* Thumb-State±êÖ¾£¬Ð´1ÇåÁã 1£ºÇл»µ½ARM״̬ 0£º´¦ÓÚThumb-State Ïà¹Øº¯Êý */ extern void DBG_HDFR_TBIT_FLAG_Clr(void); extern FlagStatus DBG_HDFR_TBIT_FLAG_Chk(void); /* ÌØÊâÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËÌØÊâÖ¸Áî´úÂ룬ÈçÊÔͼÔÚXNÇøÓòÄÚȡָ 0£ºÎÞÌØÊâÖ¸Áî´úÂë±»Ö´ÐÐ Ïà¹Øº¯Êý */ extern void DBG_HDFR_SPECIAL_OP_FLAG_Clr(void); extern FlagStatus DBG_HDFR_SPECIAL_OP_FLAG_Chk(void); /* hardfault±ê־룬ÈκÎÀàÐ͵Ähardfault¶¼»áµ¼Ö¸ÃλÖÃλ£¬Ð´1ÇåÁã 1£ºhardfault ÇëÇó 0£ºÎÞhardfaultÇëÇó Ïà¹Øº¯Êý */ extern void DBG_HDFR_HDF_REQUEST_FLAG_Clr(void); extern FlagStatus DBG_HDFR_HDF_REQUEST_FLAG_Chk(void); //Announce_End #ifdef __cplusplus } #endif #endif /* __FM33A0XXEV_DBG_H */