/** ****************************************************************************** * @file fm33a0xxev_dbg.c * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file provides firmware functions to manage the following * functionalities of....: * */ /* Includes ------------------------------------------------------------------*/ #include "fm33a0xxev_dbg.h" /** @addtogroup fm33a0xxev_StdPeriph_Driver * @{ */ /** @defgroup DBG * @brief DBG driver modules * @{ */ /* Debug״̬ÏÂLPTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕLPTIM 0£ºDebugʱ±£³ÖLPTIMÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_LPT_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_LPT_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_LPT_STOP_Msk); } } FunState DBG_CR_DBG_LPT_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_LPT_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂBSTIMʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBSTIM 0£ºDebugʱ±£³ÖBSTIMÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_BST_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_BST_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_BST_STOP_Msk); } } FunState DBG_CR_DBG_BST_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_BST_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂET4ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET4 0£ºDebugʱ±£³ÖET4Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_ET4_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_ET4_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_ET4_STOP_Msk); } } FunState DBG_CR_DBG_ET4_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_ET4_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂET3ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET3 0£ºDebugʱ±£³ÖET3Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_ET3_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_ET3_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_ET3_STOP_Msk); } } FunState DBG_CR_DBG_ET3_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_ET3_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂET2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET2 0£ºDebugʱ±£³ÖET2Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_ET2_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_ET2_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_ET2_STOP_Msk); } } FunState DBG_CR_DBG_ET2_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_ET2_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂET1ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕET1 0£ºDebugʱ±£³ÖET1Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_ET1_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_ET1_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_ET1_STOP_Msk); } } FunState DBG_CR_DBG_ET1_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_ET1_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂBT2ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT2 0£ºDebugʱ±£³ÖBT2Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_BT2_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_BT2_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_BT2_STOP_Msk); } } FunState DBG_CR_DBG_BT2_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_BT2_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂBT1ʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕBT1 0£ºDebugʱ±£³ÖBT1Ô­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_BT1_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_BT1_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_BT1_STOP_Msk); } } FunState DBG_CR_DBG_BT1_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_BT1_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂWWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕWWDT 0£ºDebugʱ±£³ÖWWDTÔ­À´×´Ì¬ Ïà¹Øº¯Êý */ void DBG_CR_DBG_WWDT_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_WWDT_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_WWDT_STOP_Msk); } } FunState DBG_CR_DBG_WWDT_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_WWDT_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* Debug״̬ÏÂIWDTʹÄÜ¿ØÖÆÎ» 1£ºDebugʱ¹Ø±ÕIWDT 0£ºDebugʱ±£³ÖIWDT¿ªÆô Ïà¹Øº¯Êý */ void DBG_CR_DBG_IWDT_STOP_Setable(FunState NewState) { if (NewState == ENABLE) { DBG->CR |= (DBG_CR_DBG_IWDT_STOP_Msk); } else { DBG->CR &= ~(DBG_CR_DBG_IWDT_STOP_Msk); } } FunState DBG_CR_DBG_IWDT_STOP_Getable(void) { if (DBG->CR & (DBG_CR_DBG_IWDT_STOP_Msk)) { return ENABLE; } else { return DISABLE; } } /* µØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£ºµØÖ··Ç¶ÔÆë·ÃÎÊ´íÎó 0£ºÎ´½øÐеØÖ··Ç¶ÔÆë·ÃÎÊ Ïà¹Øº¯Êý */ void DBG_HDFR_DABORT_ADDR_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_DABORT_ADDR_FLAG_Msk; } FlagStatus DBG_HDFR_DABORT_ADDR_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_DABORT_ADDR_FLAG_Msk) { return SET; } else { return RESET; } } /* ·Ç·¨µØÖ··ÃÎÊ´íÎó±êÖ¾£¬Ð´1ÇåÁã 1£º×ÜÏß´«ÊäÖзÃÎÊÁË·Ç·¨µØÖ·µ¼ÖÂHRESPΪ¸ß²úÉú´íÎó 0£ºÎ´·ÃÎÊ·Ç·¨µØÖ· Ïà¹Øº¯Êý */ void DBG_HDFR_DABORT_RESP_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_DABORT_RESP_FLAG_Msk; } FlagStatus DBG_HDFR_DABORT_RESP_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_DABORT_RESP_FLAG_Msk) { return SET; } else { return RESET; } } /* 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¡£ Ïà¹Øº¯Êý */ void DBG_HDFR_SVCUNDEF_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_SVCUNDEF_FLAG_Msk; } FlagStatus DBG_HDFR_SVCUNDEF_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_SVCUNDEF_FLAG_Msk) { return SET; } else { return RESET; } } /* Ö´ÐÐBKPTÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËBKPTÖ¸Áî 0£ºÎ´Ö´ÐÐBKPTÖ¸Áî Ïà¹Øº¯Êý */ void DBG_HDFR_BKPT_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_BKPT_FLAG_Msk; } FlagStatus DBG_HDFR_BKPT_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_BKPT_FLAG_Msk) { return SET; } else { return RESET; } } /* Thumb-State±êÖ¾£¬Ð´1ÇåÁã 1£ºÇл»µ½ARM״̬ 0£º´¦ÓÚThumb-State Ïà¹Øº¯Êý */ void DBG_HDFR_TBIT_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_TBIT_FLAG_Msk; } FlagStatus DBG_HDFR_TBIT_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_TBIT_FLAG_Msk) { return SET; } else { return RESET; } } /* ÌØÊâÖ¸Áî±êÖ¾£¬Ð´1ÇåÁã 1£ºÖ´ÐÐÁËÌØÊâÖ¸Áî´úÂ룬ÈçÊÔͼÔÚXNÇøÓòÄÚȡָ 0£ºÎÞÌØÊâÖ¸Áî´úÂë±»Ö´ÐÐ Ïà¹Øº¯Êý */ void DBG_HDFR_SPECIAL_OP_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_SPECIAL_OP_FLAG_Msk; } FlagStatus DBG_HDFR_SPECIAL_OP_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_SPECIAL_OP_FLAG_Msk) { return SET; } else { return RESET; } } /* hardfault±ê־룬ÈκÎÀàÐ͵Ähardfault¶¼»áµ¼Ö¸ÃλÖÃλ£¬Ð´1ÇåÁã 1£ºhardfault ÇëÇó 0£ºÎÞhardfaultÇëÇó Ïà¹Øº¯Êý */ void DBG_HDFR_HDF_REQUEST_FLAG_Clr(void) { DBG->HDFR = DBG_HDFR_HDF_REQUEST_FLAG_Msk; } FlagStatus DBG_HDFR_HDF_REQUEST_FLAG_Chk(void) { if (DBG->HDFR & DBG_HDFR_HDF_REQUEST_FLAG_Msk) { return SET; } else { return RESET; } } void DBG_Deinit(void) { //DBG->CR = 0x00003d03; //DBG->HDFR = 0x00000000; } /******END OF FILE****/