AnsweredAssumed Answered

MKE02Z64VQH4调试问题

Question asked by 赵 锦萍 on Jan 7, 2019
Latest reply on Jan 9, 2019 by Kerry Zhou
  1. 单独串口程序调试:“UART_demo”,程序运行过程中一直进这个中断,正常吗?

 

void SCI_Isr(UART_MemMapPtr base, uint8 irq)
{
uint8 data;
uint8 stat;

stat = UART_S1_REG(base);
/* Dummy read of data register - clear error bits */
data = UART_D_REG(base);

 

if (stat & 0x0F)
{
/* some error happened */
return;
}

 

/* Disable interrupt */
disable_irq(irq);

 

/* handle transmit */
if (stat & UART_S1_TDRE_MASK)
{
if (send_buf[send_buf_pos])
{
UART_D_REG(base) = send_buf[send_buf_pos];
send_buf_pos++;
}
else
{
/* clear the send_buf */
send_buf[0] = 0;
send_buf_pos = 0;
}

 

if (tx_handler)
tx_handler();
}

 

/* handle Receive */
if (stat & UART_S1_RDRF_MASK)
{
if (rx_handler)
rx_handler((int8)data);
}

 

/* Enable interrupt */
enable_irq(irq);
}


2
、程序融合:“PIT_demo”和“UART_demo”;将“UART_demo”中的这些程序复制到“PIT_demo”中;

 

void UART_rx(int8 ch)

{

   UART1_send_byte(ch);

   RED_Toggle();

}   

 

UART_set_rx_handler(UART_rx);

      enable_UART1_int();   

编译后运行程序一直进入下面的函数

void default_isr(void)

{

   #define VECTORNUM                     (*(volatile uint8_t*)(0xE000ED04))

 

  //printf("\n****default_isr entered on vector %d*****\r\n\n",VECTORNUM);

   return;

}

Outcomes