金牌会员
- 积分
- 2168
- 威望
- 1060
- 贡献
- 674
- 兑换币
- 688
- 注册时间
- 2015-4-20
- 在线时间
- 217 小时
- 毕业学校
- 东北大学秦皇岛分校
|
源程序:
#include "common.h"
#include "include.h"
#define hs 80
#define ls 60
#define size hs*ls/8
uint8 imagbuff[size];
uint16 VSY_Flog=0;
uint16 Line_Cont=0;
//函数声明
void vcan_sendimg(uint8 *imgaddr, uint32 imgsize);
void img_extract(uint8 *dst, uint8 *src, uint32 srclen);
void PORTA_IRQHandler();
void PORTC_IRQHandler();
void DMA0_IRQHandler();
void portinit();
void main()
{
DisableInterrupts;
portinit();
port_init(PTA2, ALT1 | IRQ_FALLING | PULLDOWN );
enable_irq(PORTA_IRQn);
port_init(PTC0, ALT1 | IRQ_RISING | PULLDOWN );
port_init(PTD1, ALT1 | DMA_RISING | PULLDOWN );
disable_irq(PORTC_PORTD_IRQn);
uart_init(UART0,115200);
set_vector_handler(PORTA_VECTORn,PORTA_IRQHandler);
set_vector_handler(PORTC_PORTD_VECTORn,PORTC_IRQHandler);
set_vector_handler(DMA0_VECTORn,DMA0_IRQHandler);
EnableInterrupts;
while(1)
{
vcan_sendimg(imagbuff,sizeof(imagbuff));
}
}
void vcan_sendimg(uint8 *imgaddr, uint32 imgsize)
{
#define CMD_IMG 1
uint8 cmdf[2] = {CMD_IMG, ~CMD_IMG}; //山外上位机 使用的命令
uint8 cmdr[2] = {~CMD_IMG, CMD_IMG}; //山外上位机 使用的命令
uart_putbuff(VCAN_PORT, cmdf, sizeof(cmdf)); //先发送命令
uart_putbuff(VCAN_PORT,imgaddr, imgsize); //再发送图像
uart_putbuff(VCAN_PORT, cmdr, sizeof(cmdr)); //先发送命令
}
void PORTA_IRQHandler()
{
if(PORTA_ISFR & (1 << 2))
{
PORTA_ISFR |= (1 << 2);
led (LED0,LED_ON);
dma_portx2buff_init(DMA_CH0,(void *)&PTE_B2_IN,imagbuff,PTD1, DMA_BYTE1,size);
DMA_DIS(DMA_CH0);
VSY_Flog=1;
Line_Cont=0;
enable_irq(PORTC_PORTD_IRQn);
}
}
void PORTC_IRQHandler()
{
if(PORTC_ISFR & (1 << 0))
{
PORTC_ISFR |= (1 <<0);
if(VSY_Flog==0)
{
return;
}
DMA_IRQ_EN(DMA_CH0);
DMA_EN(DMA_CH0);
Line_Cont++;
if(Line_Cont==hs)
{
Line_Cont=0;
DMA_DIS(DMA_CH0);
}
led(LED1,LED_ON);
}
}
void DMA0_IRQHandler()
{
DMA_IRQ_CLEAN(DMA_CH0); //清除通道传输中断标志位 (这样才能再次进入中断)
DMA_IRQ_DIS(DMA_CH0); //禁止DMA 等待下一次行中断来临开启DMA
}
void portinit()
{
gpio_init(PTE16,GPI,0);
gpio_init(PTE17,GPI,0);
gpio_init(PTE18,GPI,0);
gpio_init(PTE19,GPI,0);
gpio_init(PTE20,GPI,0);
gpio_init(PTE21,GPI,0);
gpio_init(PTE22,GPI,0);
gpio_init(PTE23,GPI,0);
led_init (LED0);
led_init (LED1);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|