/*! * @brief 鹰眼ov7725 DMA中断服务函数 * @since v5.0 */ void ov7725_eagle_dma() { //ov7725_eagle_img_flag = IMG_FINISH ; DMA_IRQ_CLEAN(DMA_CH4); //清除通道传输中断标志位 DMA_DIS(DMA_CH4); DMA_IRQ_DIS(DMA_CH4) ; //uart_putchar (UART0, 3); }
void DMA_CH4_Handler(void) { //DMA通道4 DMA_IRQ_CLEAN(DMA_CH4) ; DMA_IRQ_DIS(DMA_CH4); DMA_DIS(DMA_CH4); DMA_Over_Flag = 1 ; }
/*! * @brief 鹰眼ov7725管脚初始化(内部调用) * @since v5.0 */ void ov7725_eagle_port_init() { //DMA通道0初始化,PTA27触发源(默认上升沿),源地址为PTB_B0_IN,目的地址为:IMG_BUFF,每次传输1Byte dma_portx2buff_init(DMA_CH4, (void *)&PTE_B0_IN, ov7725_eagle_img_buff[0], PTD12, DMA_BYTE1,DATACOUNT , DADDR_KEEPON); DMA_DIS(DMA_CH4); DMA_IRQ_DIS(DMA_CH4); DMA_IRQ_CLEAN(DMA_CH4); //清除通道传输中断标志位 disable_irq(PORTD_IRQn); //关闭PTd的中断 //set_irq_priority(90,0); }
void Ov7725_exti_Init() { //DMA通道0初始化,PTB0上升沿触发DMA传输,源地址为PTD_BYTE0_IN,目的地址为:BUFF ,每次传输1Byte,传输320次后停止传输,保存目的地址不变 DMA_PORTx2BUFF_Init(CAMERA_DMA_CH, (void *)&PTB_BYTE0_IN, (void *)IMG_BUFF, PTB8, DMA_BYTE1, 320*2-2, DMA_rising_down_keepon); DMA_DIS(DMA_CH0); //先关闭 DMA DMA_IRQ_DIS(DMA_CH0); //不需要使用DMA中断,由行中断来控制DMA传输 exti_init(PORTA,29,rising_down); //场中断,内部下拉,上升沿触发中断 exti_init(PORTA,28,rising_down); //行中断,内部下拉,上升沿触发中断 }
void DMA_CH4_Handler(void) { //DMA通道4 // u16 i ; // uart_putchar(UART0,0XAA); DMA_IRQ_CLEAN(DMA_CH4) ; DMA_IRQ_DIS(DMA_CH4); DMA_DIS(DMA_CH4); DMA_Over_Flg = 1 ; // disable_irq(PORTC+87); }