K60图像采集程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "MK60N512VMD100.h " /* include peripheral declarations */

#include "includes.h"

#include "hw_uart.h"

#define GPIO_PIN_MASK 0x1Fu //0x1f=31,限制位数为0--31有效

#define GPIO_PIN(x) (((1)<<(x & GPIO_PIN_MASK))) //把当前位置1

uint8 Date_Buffer[50][50]={0xff,0xff,0xff,0xff};

uint8 comond[4]={0x00,0xff,0x01,0x00};

volatile uint32 count=0;

volatile uint32 flag=0;

//give some delay~~

void delay()

{

int i =0;

int j=0;

for(i=0;i<1000;i++)

for(j=0;j<1000;j++)

asm("nop");

}

//GPIO中断服务函数,每次中断P1P2 LED 常亮

void b_irq (void)

{

DisableInterrupts; //禁止总中断

PORTB_ISFR=1<<9; // Clear the PTB9 interrupt flags

enable_irq(89);

EnableInterrupts;

}

void c_irq(void)

{

uint8 *p=&Date_Buffer[count][0];

DisableInterrupts; //禁止总中断

PORTC_ISFR=1<<8; // Clear the PTC8 interrupt flags

//GPIOA_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(14)); //IO口输出低电平,亮 //delay();//暂停

// GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(14)); //IO口输出高电平,灭// delay();//暂停

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff; //20

*p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; //30

*p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; //40

*p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; //50

*p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff; *p++=GPIOB_PDIR&0xff;

*p++=GPIOB_PDIR&0xff;

count++;

if(count>50)

{

disable_irq(89);

flag=1;

GPIOA_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(16)); //IO口输出低电平,P2亮

// delay();

GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(16)); //IO口输出低电平,P2灭

// delay();

}

EnableInterrupts;

}

void inti()

{

SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;

PORTC_PCR8=0|PORT_PCR_MUX(0X01)|PORT_PCR_IRQC(0X09)|PORT_PCR_PE_MASK;// 上降沿下拉电阻行中断

PORTB_PCR9=0|PORT_PCR_MUX(0X01)|PORT_PCR_PS_MASK|PORT_PCR_IRQC(0X0a)|PORT_PCR_PE_MASK;//下降沿上拉电阻场中断

PORTB_PCR0=0|PORT_PCR_MUX(0x01);

PORTB_PCR1=0|PORT_PCR_MUX(0x01);

PORTB_PCR2=0|PORT_PCR_MUX(0x01);

PORTB_PCR3=0|PORT_PCR_MUX(0x01);

PORTB_PCR4=0|PORT_PCR_MUX(0x01);

PORTB_PCR5=0|PORT_PCR_MUX(0x01);

PORTB_PCR6=0|PORT_PCR_MUX(0x01);

PORTB_PCR7=0|PORT_PCR_MUX(0x01);

GPIOB_PDDR=GPIO_PDDR_PDD(0);//设置为输入

GPIOC_PDDR=GPIO_PDDR_PDD(0);//设置为输入

}

void process_picture(uint32 mount)

{

uint32 i;

uint8 *p=(uint8 *)Date_Buffer;

if(flag)

{

DisableInterrupts; //共享资源上锁

for(i=0;i

{

if(*p<151)

{

*p=0;

相关文档
最新文档