查看: 4101|回复: 6

[分享] K60串口接收中断,进入一次中断后死机

[复制链接]

该用户从未签到

11

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
215
最后登录
1970-1-1
发表于 2014-12-31 13:02:21 | 显示全部楼层 |阅读模式
本帖最后由 navy1988 于 2014-12-31 13:57 编辑

我在用K60串口中断时,通过串口调试工具发一个字节,单片机能收到,但立刻就死机,什么原因啊,求大神帮忙;程序中PIT定时器中断可靠执行;

void Uart0_init(void)   //(uint8 uartNo, uint32 baud)
{
  //开发板上串口0是PTD6,PTD7
          PORTD_PCR6 = 0X0300;//使能UART0_TXD
      PORTD_PCR7 =0X0300 ; //使能UART0_RXD
        //  PORTB_PCR17 = 0X0300;//使能UART0_TXD
        //  PORTB_PCR16 =0X0300 ; //使能UART0_RXD
          
          PORTC_PCR4= 0X0300; //使能UART1_TXD
          PORTC_PCR3 =0X0300 ; //使能UART1_RXD
          
          PORTD_PCR3= 0X0300; //使能UART1_TXD
          PORTD_PCR2 =0X0300 ; //使能UART1_RXD
          
          SIM_SCGC4|=0x3c00;     //使能串口0、1、2、3时钟
          NVICICPR1 = NVICICPR1|(1<<13); //清除挂载在UART0的中断                 
          NVICISER1 =NVICISER1|(1<<13);  //使能UART0中断
          
          //暂时关闭串口发送与接收功能
            UART0_C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);
            //配置串口工作模式
            //8位无校验模式
            UART0_C1 = 0;
            //配置波特率
           //串口0、1使用的内核时钟是其它串口使用外设时钟频率的2倍         即内核时钟96M   
            UART0_BDH=0X2;
            UART0_BDL=0X71;  
            UART0_C4= UART0_C4 | 0X00;
            //启动发送接收
            UART0_C2=UART0_C2|0x2c;//0c时可发送
             // UART_C2_REG(uartch) |= (UART_C2_TE_MASK | UART_C2_RE_MASK );

}

void isr_uart0_re(void)
{


    //判断接收缓冲区是否满
  if((UART0_S1&0x20)>>5){
          
          RXdata=UART0_D;  //读取数据寄存器
          
  }

}



(tIsrFunc)isr_uart0_re,                               /* 61 (0x000000F4) (prior: -) */
回复

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
12
最后登录
1970-1-1
发表于 2015-1-4 08:55:08 | 显示全部楼层
好久 不搞K60了,看到了就回一下吧。。。。
在中断函数入口处放置断点,进入中断后单步调试,看在那里死了,重复几次,查看死的地方单片机串口各个寄存器是否是你要的状态,一般这样就可以解决了。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
215
最后登录
1970-1-1
 楼主| 发表于 2015-1-4 11:40:26 | 显示全部楼层
非常感谢!!!!
回复

使用道具 举报

该用户从未签到

1

主题

802

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1763
最后登录
1970-1-1
发表于 2015-1-4 16:37:40 | 显示全部楼层
K60的资料很多, 可以去参考, 主要是设置中断来检查
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2019-4-1 22:48
  • 签到天数: 302 天

    连续签到: 1 天

    [LV.8]以坛为家I

    87

    主题

    7322

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    4614
    最后登录
    2021-1-25
    发表于 2015-1-4 22:06:45 | 显示全部楼层
    我觉得单布调试的时候主要去观察地址参数和转移方向
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    252

    帖子

    0

    高级会员

    Rank: 4

    积分
    504
    最后登录
    1970-1-1
    发表于 2015-1-4 23:01:08 | 显示全部楼层
    设置断点看吧,既然能收到,证明进入接收中断了,可以在那里开始调试。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    49

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    215
    最后登录
    1970-1-1
     楼主| 发表于 2015-1-6 09:08:29 | 显示全部楼层
    多谢各位大侠,问题已解决,还是寄存器配置有问题
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 13:37 , Processed in 0.092965 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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