查看: 4407|回复: 19

[已解决] KL02进入了串口中断之后外部中断就进不去了(已解决)

[复制链接]

该用户从未签到

13

主题

143

帖子

0

中级会员

Rank: 3Rank: 3

积分
491
最后登录
1970-1-1
发表于 2015-4-26 12:03:44 | 显示全部楼层 |阅读模式
本帖最后由 lonny 于 2015-4-27 19:09 编辑

在调试kl02,用到串口中断与外部gpio中断。单独测试每个中断,程序正常。将两个中断同时初始化,先进入串口中断后,外部中断就进不去了。初始化与中断函数如下。
void PORTA_IRQHandler(void)
{

printf("enter gpio interrupt");
Rotate_Flag = 1;
PORTA_PCR7 |= PORT_PCR_ISF_MASK;
ADXL345_WR_Reg(INT_ENABLE,0x00);
//PORTA_ISFR = PORT_ISFR_ISF(0x0000);
}
void UART0_IRQHandler()
{
printf("enter uart0 intrrupt");
if(UART0_S2 & UART0_S2_RXEDGIF_MASK)//ÊÕµ½Æðʼλ
{
  UART0_S2 |= UART0_S2_RXEDGIF_MASK;
  UART0_BDH &= ~UART0_BDH_RXEDGIE_MASK;   
}
if((UART0_S1 & UART0_S1_RDRF_MASK)!=0)     
{

  pUartBufWrite = UART0_D;
   
}
if((UART0_S1 & 0x0f) != 0)
{
   UART0_S1 |= (UART0_S1_NF_MASK | UART0_S1_OR_MASK); // write 1 to clear error flags
}
}

void GPIO_Iterrupt_Init()    //pTA7
{
PORTA_ISFR = PORT_ISFR_ISF(0x0080);  /* Clear interrupt status flag */
PORTA_PCR7 = PORT_PCR_MUX(1);    // ÅäÖÃΪÖÐ¶Ï IRQ4
PORTA_PCR7 |= PORT_PCR_IRQC(0x08); //µÍµçƽÖжÏ

set_irq_priority((INT_PORTA-16), 1);
enable_irq(INT_PORTA - 16);   //enable interrupt 30
}

void uart0_init (UART0_MemMapPtr uartch, int uart0clk, int baud)
{
    register uint16 sbr;
    uint8 temp;
   
    SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;
   
    /* Make sure that the transmitter and receiver are disabled while we
     * change settings.
     */
    UART0_C2_REG(uartch) &= ~(UART0_C2_TE_MASK
    | UART0_C2_RE_MASK );
      /* Configure the uart for 8-bit mode, no parity */
    UART0_C1_REG(uartch) = 0; /* We need all default settings, so entire register is cleared */
   
      /* Calculate baud settings */
    temp = UART0_C4;
    temp = (temp & UART0_C4_OSR_MASK) + 1;
    sbr = (uint16)((uart0clk)/(baud * (temp)));
     //sbr = (uint16)((uart0clk*1000)/(baud * 16));  //lonny
        
    /* Save off the current value of the uartx_BDH except for the SBR field */
    temp = UART0_BDH_REG(uartch) & ~(UART0_BDH_SBR(0x1F));
   
    UART0_BDH_REG(uartch) = temp |  UART0_BDH_SBR(((sbr & 0x1F00) >> 8));
    UART0_BDL_REG(uartch) = (uint8)(sbr & UART0_BDL_SBR_MASK);
    /* Enable receiver and transmitter */
    UART0_C2_REG(uartch) |= (UART0_C2_TE_MASK| UART0_C2_RE_MASK |  UART0_C2_RIE_MASK);
  set_irq_priority(INT_UART0 - 16,0);  //
    enable_irq(INT_UART0 - 16);
}

经测试,在主函数while(1)里放一printf()打印信息,无法打印。程序已跑飞,但还能进串口中断
我知道答案 目前已有19人回答
回复

使用道具 举报

该用户从未签到

24

主题

252

帖子

0

高级会员

Rank: 4

积分
504
最后登录
1970-1-1
发表于 2015-4-26 13:02:35 | 显示全部楼层
是不是没有清中断?最好写上注释嘛,否则还得去查手册一句一句看。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

107

帖子

0

中级会员

Rank: 3Rank: 3

积分
444
最后登录
2019-3-7
发表于 2015-4-26 13:47:38 | 显示全部楼层
楼主这代码写的也太乱了吧,估计过段时间都忘记这是自己写的东西,可以单步调试一下看一下程序运行到哪里了,一直出不来了!
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

143

帖子

0

中级会员

Rank: 3Rank: 3

积分
491
最后登录
1970-1-1
 楼主| 发表于 2015-4-26 18:55:05 | 显示全部楼层
本帖最后由 lonny 于 2015-4-26 19:01 编辑
晓枫VS枯叶 发表于 2015-4-26 13:47
楼主这代码写的也太乱了吧,估计过段时间都忘记这是自己写的东西,可以单步调试一下看一下程序运行到哪里了 ...


这是官方例程,freescale fae肯定熟悉。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-4-27 10:39:39 | 显示全部楼层
uart的中断优先级比gpio高的话,会阻断gpio进入的。
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

143

帖子

0

中级会员

Rank: 3Rank: 3

积分
491
最后登录
1970-1-1
 楼主| 发表于 2015-4-27 10:50:07 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-4-27 10:39
uart的中断优先级比gpio高的话,会阻断gpio进入的。

我在主函数里打印输出信息,外部中断和串口中断服务函数里也设置打印输出信息,两个同时触发。上电运行,主函数打印输出一会后,就没有输出信息了。两个中断一直都有输出信息。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-4-27 10:54:56 | 显示全部楼层
lonny 发表于 2015-4-27 10:50
我在主函数里打印输出信息,外部中断和串口中断服务函数里也设置打印输出信息,两个同时触发。上电运行, ...

然后呢?
因为我不知道你的主函数以及程序整个流程。
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

143

帖子

0

中级会员

Rank: 3Rank: 3

积分
491
最后登录
1970-1-1
 楼主| 发表于 2015-4-27 11:37:53 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-4-27 10:54
然后呢?
因为我不知道你的主函数以及程序整个流程。

程序执行一段时间以后,主函数无打印信息,应该是程序跑飞了吧

kl02-frdm-demo.rar

1.68 MB, 下载次数: 7, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

219

帖子

0

高级会员

Rank: 4

积分
653
最后登录
2017-11-19
发表于 2015-4-27 12:21:30 | 显示全部楼层
看中断的优先级把,
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

219

帖子

0

高级会员

Rank: 4

积分
653
最后登录
2017-11-19
发表于 2015-4-27 12:21:52 | 显示全部楼层
QianFan 发表于 2015-4-27 12:21
看中断的优先级把,

估计是 优先级的事情
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-24 08:12 , Processed in 0.106959 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表