注册 登录
查看: 481|回复: 5

[智能车] 用山外库的串口接收中断感觉遇到了bug

[复制链接]
发表于 2014-3-7 13:19:08 | 显示全部楼层 |阅读模式
本帖最后由 majiyong 于 2014-3-7 13:21 编辑
  1. extern  int p;                   //这是isr.c里的程序
  2. u32 a0,a1,a2;
  3. void USART0_IRQHandler(void)
  4. {
  5.    

  6.     DisableInterrupts;        //关总中断

  7.     //接收一个字节数据并回发
  8.     a0 = uart_getchar (UART0);              //接收到一个数据
  9.     a1 = uart_getchar (UART0);
  10.     a2 = uart_getchar (UART0);
  11.     p=a0*100+a1*10+a2;
  12.    
  13.     printf("\n the data computer send:%d", p);     //发送出去


  14.     EnableInterrupts;        //开总中断

  15. }
这是主函数里的程序:
  1. int p;

  2. void  main(void)
  3. {
  4.   
  5.     LED_INIT();                                     //LED初始化

  6.     UART_IRQ_DIS(UART0);                          //串口1   关接收中断

  7.     uart_init(UART0, 9600);                      //初始化串口1

  8.     printf("串口中断接收实验\n\n");
  9.     printf("\t\t——山外kinetis开发板\n\n");
  10.     printf("请发送数据:\n");

  11.     UART_IRQ_EN(UART0);                           //串口1   开接收中断

  12.     while(1)
  13.     {
  14.        // water_lights();                           //流水灯,用来指示系统正在运行
  15.       uart_putchar   (UART0,'p');
  16.       time_delay_ms(500);
  17.     }
  18. }
我用的是蓝牙发送接受数据
我用这个程序是想改变速度PID中P的值,故用3个uart_getchar (UART0)来接收百位,十位,个位;
程序运行时还是挺好的,串口不停地显示p这个字符;
当我从串口发送完3个数字(1,2,3)时,串口显示了the data computer send:123
但是程序就不显示字符p了,而是卡在了中断里没有出来,不在运行主函数了;
但是如果只是用一个uart_getchar (UART0)函数,就可以从中断跳出来运行主函数


回复

使用道具 举报

发表于 2014-3-7 13:21:15 | 显示全部楼层
没清中断标志位吧?
回复 支持 反对

使用道具 举报

发表于 2014-3-7 13:21:52 | 显示全部楼层
你都没有按照山外哥给的中断例程来编写中断函数
回复 支持 反对

使用道具 举报

发表于 2014-3-7 13:48:17 来自手机 | 显示全部楼层
清中断标志位
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-7 15:46:44 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-7 13:48
清中断标志位
  1. void USART1_IRQHandler(void)
  2. {
  3. uint8 ch;

  4. DisableInterrupts; //关总中断

  5. //接收一个字节数据并回发
  6. ch=uart_getchar (UART1); //接收到一个数据
  7. printf("\n你发送的数据为:%c",ch); //发送出去
  8. 
  9. 
  10. EnableInterrupts; //开总中断
  11. }
这个是3天里面的,没有看到中断标志位啊,
中断标志位清楚的语句是哪一句啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-7 15:48:07 | 显示全部楼层
祁羽彤 发表于 2014-3-7 13:21
你都没有按照山外哥给的中断例程来编写中断函数

能给个山外串口中断接受的例程么,我的例程里面没有清楚中断标志位的语句
回复 支持 反对

使用道具 举报

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

本版积分规则

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