MKE02Z64VQH4调试问题

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MKE02Z64VQH4调试问题

1,700 Views
赵锦萍
Contributor I
  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;

}

0 Kudos
3 Replies

1,340 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好!

我建议你参考我们的官方代码:

FRDM-KEXX Driver Library Package

里面有关于UART中断的代码,路径为:FRDM-KEXX-Driver-Library-Package\ke_drv_lib\build\iar\ke02\UART_Interrupt_demo

 你那边的两个问题:

1. 如果只是使能接收中断,没有使能发送中断,这时候也没有对UART发送任何的数据,但是一直进入中断的话,肯定是有问题的。

    如果只使能接收中断,中断函数里面,你完全可以直接操作接收的代码,读取状态位,读取接收数据。

2. 代码一直进入hardfault

   如果你PIT和UART中断都使能的话,要么就是你PIT中断和中断向量表没有连接,要么就是你UART的中断服务函数没有和中断向量表连接。

你看下你中断向量表,有没有定位到你的中断服务函数。

这里举个UART的例子:

#define VECTOR_028  UART0_Isr
#define VECTOR_029  UART1_Isr
#define VECTOR_030  UART2_Isr

希望能帮到你。

如果还有问题,欢迎继续交流!


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,340 Views
赵锦萍
Contributor I

dear,all

问题已经解决!

we@powerever.cn

Best Regards

张志文

北京威旺达电子科技有限责任公司

POWEREVER ELECTRONIC TECHNOLOGY CO.,LTD

地址:北京市朝阳区八里庄西里61号楼远洋商务1009

Add: Room 1005 Block C Ocean International Center,No.58

East Fourth Ring Road,ChaoYang District China

电话:010-85753890/85791220

手机:18501307473

QQ: 3328129303

微信:zzw849054862

传真:010-85753890/85791220-20

邮箱: zhangzhiwen@powerever.cn

网址:www.powerever.cn

zhangzhiwen@powerever.cn

发件人: kerryzhou

发送时间: 2019-01-08 17:12

收件人: 赵 锦萍

主题: Re: - Re: MKE02Z64VQH4调试问题

NXP Community

Re: MKE02Z64VQH4调试问题

reply from Kerry Zhou in Kinetis Microcontrollers - View the full discussion

楼主你好!

我建议你参考我们的官方代码:

FRDM-KEXX Driver Library Package

里面有关于UART中断的代码,路径为:FRDM-KEXX-Driver-Library-Package\ke_drv_lib\build\iar\ke02\UART_Interrupt_demo

你那边的两个问题:

1. 如果只是使能接收中断,没有使能发送中断,这时候也没有对UART发送任何的数据,但是一直进入中断的话,肯定是有问题的。

如果只使能接收中断,中断函数里面,你完全可以直接操作接收的代码,读取状态位,读取接收数据。

2. 代码一直进入hardfault

如果你PIT和UART中断都使能的话,要么就是你PIT中断和中断向量表没有连接,要么就是你UART的中断服务函数没有和中断向量表连接。

你看下你中断向量表,有没有定位到你的中断服务函数。

这里举个UART的例子:

#define VECTOR_028 UART0_Isr

#define VECTOR_029 UART1_Isr

#define VECTOR_030 UART2_Isr

希望能帮到你。

如果还有问题,欢迎继续交流!

Have a great day,

Kerry

0 Kudos

1,340 Views
kerryzhou
NXP TechSupport
NXP TechSupport

感谢你的信息更新!

后续有问题,欢迎继续发帖交流!


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos