注册 登录
查看: 407|回复: 3

[其他] 四旋翼,摄像头发送道上位机问题

[复制链接]
发表于 2017-7-13 11:25:34 | 显示全部楼层 |阅读模式
四旋翼组,采用NRF发送处理完之后的数据,蓝牙串口发送摄像头的图像到上位机,会出现卡顿的问题。应该怎么解决?以下是主函数的代码
void  main(void)
{

    camera_init(imgbuff);                                   //摄像头初始化,把图像采集到 imgbuff 地址
     LCD_Init();

    /************************ 配置 K60 的优先级  ***********************/
    //K60 的默认优先级 都为 0
    //参考帖子:急求中断嵌套的例程 - 智能车讨论区 - 山外论坛
    //          http://www.vcan123.com/forum.php ... &page=1#pid3270
    NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级

    NVIC_SetPriority(PORTA_IRQn,0);         //配置优先级
    NVIC_SetPriority(PORTE_IRQn,1);         //配置优先级
    NVIC_SetPriority(DMA0_IRQn,2);          //配置优先级
    NVIC_SetPriority(PIT0_IRQn,3);          //配置优先级



    //配置中断服务函数
    set_vector_handler(PORTE_VECTORn ,PORTE_IRQHandler);                //设置 PORTE 的中断服务函数为 PORTE_VECTORn
    enable_irq(PORTE_IRQn);                                             
    set_vector_handler(PORTA_VECTORn ,PORTA_IRQHandler);    //设置 PORTA 的中断服务函数为 PORTA_IRQHandler
    set_vector_handler(DMA0_VECTORn ,DMA0_IRQHandler);      //设置 DMA0 的中断服务函数为 DMA0_IRQHandler
    pit_init_ms(PIT0,20);                                               //pit 定时中断(用于按键定时扫描)
    set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);                  //设置 PIT0 的中断服务函数为 PIT0_IRQHandler
    enable_irq(PIT0_IRQn);                                        //配置中断服务函数





    while(!nrf_init())                  //初始化NRF24L01+ ,等待初始化成功为止
    {
        printf("\n  NRF与MCU连接失败,请重新检查接线。\n");
        led(LED3,LED_ON);// LED3 亮起,代表NRF与MCU连接失败,请重新检查接线
    }


while(1)
    {

          camera_get_img();      //摄像头的采集
          img_extract(img, imgbuff, CAMERA_SIZE);//摄像头的解压,解压为二维数组
           vcan_sendimg(imgbuff,CAMERA_SIZE);
          sprintf((char *)buff,"%d",dz);  
          nrf_tx(buff,DATA_PACKET);                  //把str弄到一个字符串到buff里,再进行发送
        if(nrf_tx(buff,DATA_PACKET) == 1 )          //发送一个数据包:buff(包为32字节)
        {
                                                     //等待发送过程中,此处可以加入处理任务

            while(nrf_tx_state() == NRF_TXING);         //等待发送完成

            if( NRF_TX_OK == nrf_tx_state () )
            {
                printf("\n发送成功:%d",dz);
                                                    //发送成功则加1,可验证是否漏包
            }
            else
            {
                printf("\n发送失败:%d",dz);
            }
        }
        else
        {
            printf("\n发送失败:%d",dz);
        }
        DELAY_MS(10);
    }
}




回复

使用道具 举报

发表于 2017-7-13 12:11:47 | 显示全部楼层
蓝牙速度比较慢,所以卡是正常的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 13:06:27 | 显示全部楼层
一卡顿就直接停止传输了,根本无法调试。如果我把解压摄像头的函数屏蔽,便是可以发送通畅。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 13:07:09 | 显示全部楼层
但是处理摄像头数据,需要降之解压成为二维数组,怎破
回复 支持 反对

使用道具 举报

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

本版积分规则

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