/**
|
******************************************************************************
|
* @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****/
|