智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3604|回复: 4
打印 上一主题 下一主题

[咨询] k60采集程序如下 串口接收不到数据 有时候只接受部分数据 就停止了,求赐教

[复制链接]

54

主题

286

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2172
QQ
威望
1119
贡献
505
兑换币
476
注册时间
2012-8-28
在线时间
274 小时
跳转到指定楼层
1#
发表于 2013-3-3 15:33:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
k60采集程序如下 串口接收不到数据 有时候只接受部分数据 就停止了,求赐教
#include "common.h"
#include "HAL_ADC.h"
#include "HAL_FTM.h"
#include "HAL_GPIO.h"
#include "HAL_UART.h"
#include "HAL_PIT.h"

#define collect_row_para 6
#define TURN_Yuzhi 10
#define IMAGEHIGH 40
#define IMAGELENGTH 120

unsigned char image_buf1[IMAGEHIGH][IMAGELENGTH];
unsigned char image_buf2[IMAGEHIGH][IMAGELENGTH];
unsigned int turn_flag;
unsigned int image_collect_finish;
unsigned char image_center_trans1[IMAGEHIGH/5];
unsigned char image_center_trans2[IMAGEHIGH/5];
unsigned int err_flag=0,black_flag=0;
unsigned int image_row=0;
unsigned int image_column=0;

unsigned char *imagep=&image_buf1[0][0];
unsigned char Yuzhi=0x76;


/****************************图像数组初始化*****************************/
void imageinit()
{
  for(image_row=0;image_row<IMAGEHIGH;image_row++)
    for(image_column=0;image_column<IMAGELENGTH;image_column++)
    {
      image_buf1[image_row][image_column]=0;
      image_buf2[image_row][image_column]=0;
    }  
  image_row=0;
  image_column=0;

}
/*******************************GPIO初始化*********************************/
void SMARTCAT_GPIO_INIT()
{
  LPLD_GPIO_Init(PTD, 0, DIR_INPUT, INPUT_PDOWN, IRQC_DIS); //PTD0~7作为数据口
  LPLD_GPIO_Init(PTD, 1, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 2, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 3, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 4, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 5, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 6, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);
  LPLD_GPIO_Init(PTD, 7, DIR_INPUT, INPUT_PDOWN, IRQC_DIS);

  LPLD_GPIO_Init(PTB, 10, DIR_INPUT, INPUT_PDOWN, IRQC_RI );//行中断,PTB10
  LPLD_GPIO_Init(PTC, 10, DIR_INPUT, INPUT_PDOWN , IRQC_RI );//场中断,PTC10
}
/**************************dma初始化***********************************/

/******************初始化**************************************/
void systeminit()
{
  image_collect_finish=0;
  SMARTCAT_GPIO_INIT();
  //LPLD_FTM0_PWM_Init(50);
  //LPLD_FTM0_PWM_Open(1, angle_change(0));                //PTC2输出舵机
  //LPLD_FTM2_PWM_Init(8000000);                            //电机频率:10kHz
  //LPLD_FTM2_PWM_Open(1,5000 );                              //PTA11输出电机
  //SMARTCAT_DMA_INIT();
  LPLD_FTM1_PWM_Init(4000000);                          //FTM1 8mHz用作外部ad和dma时钟源
  LPLD_FTM1_PWM_Open(0,5000);                             //PTA8作为外部AD时钟源

  LPLD_UART_Init(UART1, 115200);                              //串口初始化,TxdTC4  Rxd:PTC3
  imageinit();
}
/********************行消隐结束开始采样*********************/
void startcollect()
{

  disable_irq(68+PIT0);
// if(image_row%collect_row_para==1)
  //{
     for(image_row=0;image_row<IMAGEHIGH;image_row++)
     { for(image_column=0;image_column<IMAGELENGTH;image_column++)
     { image_buf1[IMAGEHIGH][IMAGELENGTH]=LPLD_GPIO_Get(PTD);}
     }
  //}
}
/******************行中断触发采样************************/
void imagecollect()
{

   image_row++;
   if((image_row>32)&&(image_row<IMAGEHIGH+32))
  {

       enable_irq(68+PIT0);

  }
  if(image_row>IMAGEHIGH+32)
  {
    disable_irq(PTB+87);
    image_collect_finish=1;
  }


}


/************将得到的像素数据通过串口发送至上位机*************************/
void image_uart_send()
{
  LPLD_UART_PutChar(UART1,0x00);
  LPLD_UART_PutChar(UART1,0xff);
  LPLD_UART_PutChar(UART1,0x01);
  LPLD_UART_PutChar(UART1,0x00);

  for(image_row=0;image_row<IMAGEHIGH;image_row++)
  {

    for(image_column=0;image_column<IMAGELENGTH;image_column++)
    {
      LPLD_UART_PutChar(UART1,image_buf1[image_row][image_column]);
    }
  }

  image_row=0;
  image_column=0;
}

/***********************场中断对图像进行处理**********************************/
void image_process()
{
  DisableInterrupts;
  enable_irq(PTB+87);
  imagep=&image_buf1[0][0];
  if(image_collect_finish==1)
  {
// imagetrans();
  image_uart_send();
  //autoctl();
  }
   image_row=0;
   image_column=0;
  image_collect_finish=0;
   EnableInterrupts;

}
/**************************主函数*************************************/
void main()
{
  DisableInterrupts;
  systeminit();

  LPLD_GPIO_SetIsr (PTB, imagecollect);
  LPLD_GPIO_SetIsr (PTC, image_process);

  LPLD_PIT_Init(PIT0, 9, startcollect); //设置定时以避开行消隐
  disable_irq(68+PIT0);

  disable_irq(PTB + 87);
  EnableInterrupts;

  while(1);

}




54

主题

286

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2172
QQ
威望
1119
贡献
505
兑换币
476
注册时间
2012-8-28
在线时间
274 小时
2#
 楼主| 发表于 2013-3-3 16:16:27 | 只看该作者
额 怎么没人理会啊 自己顶一个吧。。。  焦头烂额中。。。
回复 支持 反对

使用道具 举报

4

主题

239

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1869

优秀会员奖章

威望
932
贡献
543
兑换币
340
注册时间
2012-11-25
在线时间
197 小时
3#
发表于 2013-3-8 22:21:56 | 只看该作者
安慰一下
回复 支持 反对

使用道具 举报

14

主题

682

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4965
威望
2538
贡献
1295
兑换币
1324
注册时间
2012-7-7
在线时间
566 小时
毕业学校
盐城工学院
4#
发表于 2013-3-8 22:59:26 | 只看该作者
用官网的例程吧
回复 支持 反对

使用道具 举报

9

主题

70

帖子

0

精华

高级会员

Rank: 4

积分
717
威望
354
贡献
183
兑换币
183
注册时间
2012-11-17
在线时间
90 小时
毕业学校
石家庄学院
5#
发表于 2013-4-16 21:21:47 | 只看该作者
向串口发数据时地一个一个数传,你是用DMA采集吗?你想一下子给串口40*120个数,它不可能一下子显示。出
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 15:57 , Processed in 0.095008 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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