рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдбрд┐рдмрдЧрдорди рдХреЗ рд╡реНрдпрд╡рдзрд╛рди рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАредрдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо UART рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗредрдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛
рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ GDB рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ:- рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рдЕрддрд┐рд░реЗрдХред рдкрддреЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдореВрд▓реНрдп, рдЪрд░ рд╣реЗрдХреНрд╕-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рд╕рдВрджреЗрд╢ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ 2 рдЧреБрдирд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ
- рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ
- рдкреИрдХреЗрдЯ рдХреЗ рдЕрдВрдд рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдпрд╛ рддреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ (рдЯрд╛рдЗрдорд░ рд╡реНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛), рдпрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ UART рдореЗрдВ рдмрд┐рддрд╛рдП рд╕рдордп рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:- 0xAA 0xFF - рдлрд╝реНрд░реЗрдо рдХреА рд╢реБрд░реБрдЖрдд
- 0xAA 0x00 - рдлрд╝реНрд░реЗрдо рдХрд╛ рдЕрдВрдд
- 0xAA 0xA5 - рдЗрдВрдЯрд░рдкреНрдЯ
- 0xAA 0xAA - 0xAA рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд
рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЗрди рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 4 рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдЯреЛрдореЗрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:- рдИрдПрд╕рд╕реА рдЪрд░рд┐рддреНрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
- рдлреНрд░реЗрдо рд╕реАрдХреНрд╡реЗрдВрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рджреВрд╕рд░реЗ рдХрд┐рд░рджрд╛рд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░
- рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд
- рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдПрдХ Esc рдЪрд░рд┐рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 7 рдХреА рдЬрд░реВрд░рдд рд╣реИ:- рдлрд╝реНрд░реЗрдо рдХреА рдкрд╣рд▓реА рдмрд╛рдЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
- рдлрд╝реНрд░реЗрдо рдХрд╛ рджреВрд╕рд░рд╛ рдмрд╛рдЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
- рдбреЗрдЯрд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ
- рдлреНрд░реЗрдо рдХреЗ рдЕрдВрдд рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛
- Esc рдЪрд░рд┐рддреНрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рднреЗрдЬ рд░рд╣рд╛ рд╣реИ
- рдкрд╣рд▓рд╛ рдЗрдВрдЯрд░рдкреНрдЯ рдмрд╛рдЗрдЯ рднреЗрдЬрдирд╛
- рджреВрд╕рд░рд╛ рдЗрдВрдЯрд░рдкреНрдЯ рдмрд╛рдЗрдЯ рднреЗрдЬрдирд╛
рдЖрдЗрдП рд╣рдо рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдЪрд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗ:typedef struct 
{    
  
  unsigned tx:1;
  
  unsigned StopProgramm:1;
  union {
    enum rx_state_e 
    {
      rxWaitS = 0, 
      rxWaitC = 1, 
      rxReceive = 2, 
      rxEsc = 3, 
    } rx_state;
    enum tx_state_e 
    {
      txSendS = 0, 
      txSendC = 1, 
      txSendN = 2, 
      txEsc = 3,   
      txEnd = 4,   
      txSendS2 = 5,
      txBrk = 6,   
    } tx_state;
  };
  uint8_t pos; 
  uint8_t buf[128]; 
  uint8_t txCnt; 
} dbg_t;
#define dbgG ((dbg_t*)DBG_ADDR) 
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдорд╢реАрдиреЛрдВ рдХреА рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдо рдХреЛ рдЖрдзреЗ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдореЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЖрдк рдЦреБрдж рдХреЛ рдПрдХ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдСрдЯреЛрдореЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВредUART рдХреЗ рд╣реИрдВрдбрд▓рд░void USART6_IRQHandler(void)
{
  if (((USART6->ISR & USART_ISR_RXNE) != 0U)
      && ((USART6->CR1 & USART_CR1_RXNEIE) != 0U))
  {
    rxCb(USART6->RDR);
    return;
  }
  if (((USART6->ISR & USART_ISR_TXE) != 0U)
      && ((USART6->CR1 & USART_CR1_TXEIE) != 0U))
  {
    txCb();
    return;
  }
}
void rxCb(uint8_t byte)
{
  dbg_t* dbg = dbgG; 
  
  if (dbg->tx) 
    return;
  
  switch(dbg->rx_state)
  {
  default:
  case rxWaitS:
    if (byte==0xAA)
      dbg->rx_state = rxWaitC;
    break;
  case rxWaitC:
    if (byte == 0xFF)
      dbg->rx_state = rxReceive;
    else
      dbg->rx_state = rxWaitS;
    dbg->pos = 0;
    break;
  case rxReceive:
    if (byte == 0xAA)
      dbg->rx_state = rxEsc;
    else
      dbg->buf[dbg->pos++] = byte;
    break;
  case rxEsc:
    if (byte == 0xAA)
    {
      dbg->buf[dbg->pos++] = byte;
      dbg->rx_state  = rxReceive;
    }
    else if (byte == 0x00)
    {
      parseAnswer();
    }
    else
      dbg->rx_state = rxWaitS;
  }
}
void txCb()
{
  dbg_t* dbg = dbgG;
  switch (dbg->tx_state)
  {
  case txSendS:
    USART6->TDR = 0xAA;
    dbg->tx_state = txSendC;
    break;
  case txSendC:
    USART6->TDR = 0xFF;
    dbg->tx_state = txSendN;
    break;
  case txSendN:
    if (dbg->txCnt>=dbg->pos)
    {
      USART6->TDR = 0xAA;
      dbg->tx_state = txEnd;
      break;
    }
    if (dbg->buf[dbg->txCnt]==0xAA)
    {
      USART6->TDR = 0xAA;
      dbg->tx_state = txEsc;
      break;
    }
    USART6->TDR = dbg->buf[dbg->txCnt++];
    break;
  case txEsc:
    USART6->TDR = 0xAA;
    dbg->txCnt++;
    dbg->tx_state = txSendN;
    break;
  case txEnd:
    USART6->TDR = 0x00;
    dbg->rx_state = rxWaitS;
    dbg->tx = 0;
    CLEAR_BIT(USART6->CR1, USART_CR1_TXEIE);
    break;
  case txSendS2:
    USART6->TDR = 0xAA;
    dbg->tx_state = txBrk;
    break;
  case txBrk:
    USART6->TDR = 0xA5;
    dbg->rx_state = rxWaitS;
    dbg->tx = 0;
    CLEAR_BIT(USART6->CR1, USART_CR1_TXEIE);
    break;
  }
}
 рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдШрдЯрд┐рдд рд╣реБрдИ рдШрдЯрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рддреЛ рдПрдХ рд░рд┐рд╕реАрд╡рд┐рдВрдЧ рдорд╢реАрди рдпрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдорд╢реАрди рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдкреИрдХреЗрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:void parseAnswer()
{
  dbg_t* dbg = dbgG;
  dbg->pos = 1;
  dbg->buf[0] = 0x33;
  dbg->txCnt = 0;
  dbg->tx = 1;
  dbg->tx_state = txSendS;
  SET_BIT(USART6->CR1, USART_CR1_TXEIE);
}
рд╕рдВрдХрд▓рди, рд╕реАрдирд╛, рдЪрд▓рд╛рдирд╛ред рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛редрд╡рд┐рдирд┐рдордп рд╡рд┐рдирд┐рдордп рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ GDB рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдХрдорд╛рдВрдб рдПрдирд╛рд▓реЙрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- рдореЗрдореЛрд░реА рд░реАрдбрд┐рдВрдЧ
- рдореЗрдореЛрд░реА рд░рд┐рдХреЙрд░реНрдб
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдВрдж рдХрд░реЛ
- рдирд┐рд░рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди
- рдЧрд┐рд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝рд╛
- рдЧрд┐рд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
- рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛
- рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБ рд╣рдЯрд╛рдПрдБ
рдХрдорд╛рдВрдб рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЯреАрдореЛрдВ рдХреЗ рдХреЛрдб рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ:- 2 - рдореЗрдореЛрд░реА рдкрдврд╝реЗрдВ
- 3 - рдореЗрдореЛрд░реА рд░рд┐рдХреЙрд░реНрдб
- 4 - рдмрдВрдж рдХрд░реЛ
- 5 - рдЬрд╛рд░реА рд░рдЦрд╛
- 6 - рдорд╛рдорд▓рд╛ рдкрдврд╝рд╛
- 7 - рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
- 8 - рдмреНрд░реЗрдХрд┐рдВрдЧ рдХреНрд▓рд┐рдпрд░рд┐рдВрдЧ
- 9 - рдХрджрдо (рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓)
- 10 - рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдВрдЯреНрд░реА (рд▓рд╛рдЧреВ рдирд╣реАрдВ)
рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗредрдЙрддреНрддрд░ рдореЗрдВ рдХрдорд╛рдВрдб рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЯреАрдо рдиреЗ рднреЗрдЬрд╛ рд╣реИредрдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдмрд╕рдлреЙрд▓реНрдЯ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ M3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдорд╛рд╕реНрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ M0 рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрдлреЙрд▓реНрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛редрд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╛рджрдЧрд╛рд░int memcpySafe(uint8_t* to,uint8_t* from, int len)
{
    
    static const uint32_t BFARVALID_MASK = (0x80 << SCB_CFSR_BUSFAULTSR_Pos);
    int cnt = 0;
    
    SCB->CFSR |= BFARVALID_MASK;
    
    uint32_t mask = __get_FAULTMASK();
    __disable_fault_irq();
    SCB->CCR |= SCB_CCR_BFHFNMIGN_Msk;
    while ((cnt<len))
    {
      *(to++) = *(from++);
      cnt++;
    }
    
    SCB->CCR &= ~SCB_CCR_BFHFNMIGN_Msk;
    __set_FAULTMASK(mask);
    return cnt;
}
 рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рдЬрд┐рд╕реНрдЯрд░ FP_COMP рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИредрдХреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ	
  dbg->pos = 0; 
    addr = ((*(uint32_t*)(&dbg->buf[1])))|1; 
    for (tmp = 0;tmp<8;tmp++) 
      if (FP->FP_COMP[tmp] == addr)
        break;
    
    if (tmp!=8) 
      break;
    
    for (tmp=0;tmp<NUMOFBKPTS;tmp++) 
      if (FP->FP_COMP[tmp]==0) 
      {
        FP->FP_COMP[tmp] = addr; 
        break; 
      }
    break;
 рд╕реЗрдЯ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рд╕рдлрд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреАрд╕реА рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗрдЯ рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБ рдХреЛ рд░реЛрдХрдирд╛ред UART рдХреЗ рдмреАрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░, рдХрд░реНрдиреЗрд▓ рддреБрд░рдВрдд DebugMon_Handler рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИредрдбреАрдмрдЧрдореИрди рд╣реИрдВрдбрд▓рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:- 1. рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- 2. рд╕рднреА рд╕реЗрдЯ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА рдЬрд╛рддреА рд╣реИред
- 3. uart рдореЗрдВ рдХрдорд╛рдВрдб рдХреЛ рдЬрд╡рд╛рдм рднреЗрдЬрдиреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ (рдЕрдЧрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛)
- 4. рдЗрдВрдЯрд░рдкреНрдЯ рдЕрдиреБрдХреНрд░рдо рднреЗрдЬрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
- 5. рд▓реВрдк рдореЗрдВ, рдкреНрд░реЗрд╖рд┐рдд рдФрд░ рдкреНрд░рд╛рдкреНрдд рдорд╢реАрдиреЛрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рд╕реНрдЯреЙрдк рдлреНрд▓реИрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рддрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбрд┐рдмрдЧрдорди рд╣реИрдВрдбрд▓рд░ рдХреЛрдбvoid DebugMon_Handler(void)
{
  dbgG->StopProgramm = 1; 
  
  for (int i=0;i<NUMOFBKPTS;i++) 
    FP->FP_COMP[i] = 0;
  
  while (USART6->CR1 & USART_CR1_TXEIE) 
    if ((USART6->ISR & USART_ISR_TXE) != 0U)
      txCb();
  
  dbgG->tx_state = txSendS2; 
  dbgG->tx = 1;
  SET_BIT(USART6->CR1, USART_CR1_TXEIE);
  while (dbgG->StopProgramm) 
  {
  	
    if (((USART6->ISR & USART_ISR_RXNE) != 0U)
        && ((USART6->CR1 & USART_CR1_RXNEIE) != 0U))
      rxCb(USART6->RDR);
    if (((USART6->ISR & USART_ISR_TXE) != 0U)
        && ((USART6->CR1 & USART_CR1_TXEIE) != 0U))
      txCb(); 
  }
}
 рдЬрдм рдХрд╛рд░реНрдп рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рддреЛ C-Syshny рд╕реЗ рдХрд░реНрдиреЗрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝реЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ ASM рдкрд░ рдХреЛрдб рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рди рддреЛ рдбреАрдмрдЧрдорди_рд╣реИрдВрдбрд▓рд░, рди рд╣реА рдпреВрдПрдЖрд░рдЯреА рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░, рди рд╣реА рдорд╢реАрдиреЗрдВ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЗрд╕рдиреЗ рдХрд░реНрдиреЗрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдорд╛рдиреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛редGdb рд╕рд░реНрд╡рд░
рдбреАрдмрдЧрд░ рдХрд╛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдЖрдЗрдбреА рдФрд░ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ рд▓рд┐рдЦреЗрдВредрд╕реНрдХреНрд░реИрдЪ рд╕реЗ, рдбрд┐рдмрдЧ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХреЛ рд▓реЗрдВред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ .net рдкрд░ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдУрдкрдирдУрд╕реАрдбреА рдореЗрдВ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛редрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреВрдЫрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ COM рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ TCP рдкреЛрд░реНрдЯ 3333 рдкрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ GDB рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИредрд╕рднреА GDB рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдорд╛рдВрдб рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИрдВредрдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ UART рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редрдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рд╕реБрдкрд░ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИредрд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рд╕реЗрдХреНрд╢рди рдореЗрдВ рд░рдЦрдХрд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ GDB рд╕рд░реНрд╡рд░ рдХреЗрдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рднрд╛рдЧ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛