[Kinetis] K60 ucos 串口中断(已解决)

[复制链接]
3619|8
 楼主| m__dd 发表于 2013-12-4 14:10 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_A 于 2014-2-6 22:27 编辑

ucos+串口中断问题。串口可以正常发送至上位机(串口助手),但是接受进中断不正常,刚开始还可以进中断(10次以内),然后就再也不进中断。

同样的配置裸机正常。
配置代码:
1 在任务中初始化
  UART_IRQ_DIS(UART3);
  uart_init(UART3, 9600);                      //初始化串口3    B10 B11  
  UART_IRQ_EN(UART3);                           //串口3   开接收中断
  set_irq_priority (67,0);                         //优先级
  EnableInterrupts;

2 isr.c
  void USART3_IRQHandler(void)
{
    uint8 ch;

   // DisableInterrupts;                    //关总中断
    OSIntEnter();
    //接收一个字节数据并回发
    ch = uart_getchar (UART3);      //接收到一个数据
    uart_putchar (UART3, ch);       //就发送出去
    OSIntExit();
   // EnableInterrupts;                    //开总中断
}

3 isr。h
  #undef  VECTOR_067   
  #define VECTOR_067    USART3_IRQHandler      //重新宏定义

   extern void USART3_IRQHandler(void);

FSL_TICS_Jeremy 发表于 2013-12-4 14:29 | 显示全部楼层
从你的描述中,应该是ucos配置方面的问题。

评分

参与人数 1威望 +1 收起 理由
m__dd + 1

查看全部评分

 楼主| m__dd 发表于 2013-12-4 18:49 | 显示全部楼层
FSL_TICS_Jeremy 发表于 2013-12-4 14:29
从你的描述中,应该是ucos配置方面的问题。

可是灯闪烁任务,和串口发送任务运行正常。
如果是的话,具体一点呗
FSL_TICS_Robin 发表于 2013-12-5 09:35 | 显示全部楼层
请问你串口开启其他中断没? 比如错误中断或发送中断
 楼主| m__dd 发表于 2013-12-5 14:47 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-5 09:35
请问你串口开启其他中断没? 比如错误中断或发送中断

没有只开的接收中断
 楼主| m__dd 发表于 2013-12-5 14:48 | 显示全部楼层
m__dd 发表于 2013-12-5 14:47
没有只开的接收中断

调试过程中也没有进入hard_fault
FSL_TICS_Robin 发表于 2013-12-5 15:59 | 显示全部楼层
m__dd 发表于 2013-12-5 14:48
调试过程中也没有进入hard_fault

如果裸机正常,到ucos就出错,那我就不清楚了。
我记得ucos有任务优先级的,要么你降低串口中断优先级试试?

评分

参与人数 1威望 +2 收起 理由
m__dd + 2 我的错!BSP_init();中将Usart的RX口配置给.

查看全部评分

122541325 发表于 2013-12-5 16:01 | 显示全部楼层
看看ucos的配置有没有错

评分

参与人数 1威望 +2 收起 理由
m__dd + 2

查看全部评分

 楼主| m__dd 发表于 2013-12-5 18:53 | 显示全部楼层

(正解)

本帖最后由 FSL_TICS_A 于 2014-2-6 22:27 编辑

找到原因了,串口初始化完成后。在BSP_init();中又把RX引脚配置为普通IO口(LED输出),而TX没变,所以发送正常,接收错误。而裸机是先初始化BSP,后初始化USART3,所以也没问题。
真是太无语了,遇到这种千年难遇的,点真低!!!
也是使用他人库的代价,教训啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

79

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部