金牌会员
- 积分
- 2172
- 威望
- 1119
- 贡献
- 505
- 兑换币
- 476
- 注册时间
- 2012-8-28
- 在线时间
- 274 小时
|
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);
}
|
|