/**
******************************************************************************
* @file GPIO/IOToggle/stm32f10x_it.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Main Interrupt Service Routines.
* This file provides template for all exceptions handler and peripherals
* interrupt service routine.
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_it.h"
#include "led.h"
#include "usart.h"
#include "dma.h"
#include "stm32f10x_dma.h"
#include "lcd.h"
void NMI_Handler(void)
{
}
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
void MemManage_Handler(void)
{
/* Go to infinite loop when Memory Manage exception occurs */
while (1)
{
}
}
void BusFault_Handler(void)
{
/* Go to infinite loop when Bus Fault exception occurs */
while (1)
{
}
}
void UsageFault_Handler(void)
{
/* Go to infinite loop when Usage Fault exception occurs */
while (1)
{
}
}
void SVC_Handler(void)
{
}
void DebugMon_Handler(void)
{
}
void PendSV_Handler(void)
{
}
void SysTick_Handler(void)
{
}
extern u8 Row[40];
//extern u16 Row_color[320]; //转换像素值
u8 ov_frame; //统计帧数
//定时器1触发中断服务程序
void TIM1_TRG_COM_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Trigger); //清除TIMx的中断待处理位:TIM 中断源
}
//外部中断3服务程序 即行同步信号HREF中断
void EXTI3_IRQHandler(void)
{
u16 j;
u32 *p;
if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//是3线的中断
{
MYDMA_Enable(DMA1_Channel4); //TIM3的UPDATE对应DMA的通道3 开始一次DMA传输
p=(u32 *)(0x22000000+(((u32)Row &0xFFFFF)<<5)+0*4); //用位带操作 这样应该能够更加的节省时间
for(j=0;j<320;j++)
{
if(*p) LCD->LCD_RAM=BLACK;
else LCD->LCD_RAM=WHITE;
p++;
}
}
EXTI_ClearITPendingBit(EXTI_Line3); //清除EXTI6线路挂起位
}
//外部中断4服务程序 即场同步信号HREF中断
void EXTI4_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line4)!=RESET)//是3线的中断
{
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右
LCD_SetCursor(0x00,0x00); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
MYDMA_Enable(DMA1_Channel4); //为了采样第一行数据
LED0=!LED0;
ov_frame ++; //统计帧率
}
EXTI_ClearITPendingBit(EXTI_Line4); //清除EXTI6线路挂起位
}
//定时器6中断服务程序
void TIM6_IRQHandler(void)
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
LED1=!LED1;
printf("frame:%dfps\r\n",ov_frame); //打印帧率
ov_frame=0;
}
TIM_ClearITPendingBit(TIM6, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
}
/******************************************************************************/
/* STM32F10x Peripherals Interrupt Handlers */
/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
/* available peripheral interrupt handler's name please refer to the startup */
/* file (startup_stm32f10x_xx.s). */
/******************************************************************************/
野火鹰眼7225摄像头最后完成总结:
1.鹰眼摄像头设置摄像头输出数据大小是不能够实现的,就是说配置摄像头寄存器想要的大小并不能够实现摄像头数据输出自己想要的大小,这个或许是和二值化电路有关,具体不再深究
2.摄像头数据是这样的格式:
每个PLCK上升沿输出八个像素的数据,1表示该像素为黑色,0则为白色,所以用DMA来传输数据,最后要的分辨率是320X240,也就是40*8X240,每次处理一行数据,所以DMA的次数是40,也就说纯数据的数组的大小为40.
u8 Row[40];
u16 dma_size=40;
DMA_InitStructure.DMA_BufferSize = dma_size ;
3.因为每位代表一个像素的黑或者白,如果用不同的显示方法显示一行数据要用40个FOR循环,每个循环执行八个左移,最后代码算数量十分之大,这样的话STM32是肯定跟不上摄像头的,所以这里用了STM32的内存位带操作,这样就不需要左移了,直接判断就行,行中断如下:
//外部中断3服务程序 即行同步信号HREF中断
void EXTI3_IRQHandler(void)
{
u16 j;
u32 *p;
if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//是3线的中断
{
MYDMA_Enable(DMA1_Channel4); //TIM3的UPDATE对应DMA的通道3 开始一次DMA传输
p=(u32 *)(0x22000000+(((u32)Row &0xFFFFF)<<5)+0*4); //用位带操作 这样应该能够更加的节省时间
for(j=0;j<320;j++)
{
if(*p) LCD->LCD_RAM=BLACK;
else LCD->LCD_RAM=WHITE;
p++;
}
}
EXTI_ClearITPendingBit(EXTI_Line3); //清除EXTI6线路挂起位
}
4.场中断归零LCD:
//外部中断4服务程序 即场同步信号HREF中断
void EXTI4_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line4)!=RESET)//是3线的中断
{
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右
LCD_SetCursor(0x00,0x00); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
MYDMA_Enable(DMA1_Channel4); //为了采样第一行数据
LED0=!LED0;
ov_frame ++; //统计帧率
}
EXTI_ClearITPendingBit(EXTI_Line4); //清除EXTI6线路挂起位
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
stm32驱动鹰眼OV7725源码与所有的资料 (401个子文件)
BH-F103.uvguix.Administrator 139KB
OV7670.uvgui.Administrator 139KB
OV7670.axf 654KB
OV7725.axf 362KB
keilkill.bat 401B
keilkilll.bat 399B
stm32f10x_tim.c 107KB
stm32f10x_tim.c 107KB
lcd.c 83KB
fonts.c 77KB
stm32f10x_flash.c 61KB
stm32f10x_flash.c 61KB
stm32f10x_rcc.c 50KB
stm32f10x_rcc.c 50KB
stm32f10x_adc.c 46KB
stm32f10x_adc.c 46KB
stm32f10x_i2c.c 45KB
stm32f10x_i2c.c 45KB
stm32f10x_can.c 44KB
stm32f10x_can.c 44KB
stm32f10x_usart.c 37KB
stm32f10x_usart.c 37KB
system_stm32f10x.c 36KB
system_stm32f10x.c 36KB
stm32f10x_fsmc.c 35KB
stm32f10x_fsmc.c 35KB
bsp_ili9341_lcd.c 31KB
stm32f10x_spi.c 30KB
stm32f10x_spi.c 30KB
stm32f10x_dma.c 29KB
stm32f10x_dma.c 29KB
stm32f10x_sdio.c 28KB
stm32f10x_sdio.c 28KB
bsp_xpt2046_lcd.c 24KB
stm32f10x_gpio.c 23KB
stm32f10x_gpio.c 23KB
bsp_ov7725.c 19KB
stm32f10x_dac.c 19KB
stm32f10x_dac.c 19KB
core_cm3.c 17KB
core_cm3.c 17KB
usmart.c 15KB
stm32f10x_cec.c 11KB
stm32f10x_cec.c 11KB
usmart_str.c 11KB
stm32f10x_pwr.c 9KB
stm32f10x_pwr.c 9KB
stm32f10x_rtc.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_bkp.c 8KB
stm32f10x_bkp.c 8KB
bsp_sccb.c 7KB
misc.c 7KB
misc.c 7KB
stm32f10x_exti.c 7KB
stm32f10x_exti.c 7KB
ov7670.c 7KB
bsp_sccb.c 6KB
stm32f10x_wwdg.c 6KB
stm32f10x_wwdg.c 6KB
stm32f10x_it.c 6KB
usart.c 5KB
stm32f10x_dbgmcu.c 5KB
stm32f10x_dbgmcu.c 5KB
delay.c 5KB
stm32f10x_iwdg.c 5KB
stm32f10x_iwdg.c 5KB
tpad.c 4KB
timer.c 4KB
stm32f10x_it.c 4KB
sccb.c 4KB
main.c 3KB
stm32f10x_crc.c 3KB
stm32f10x_crc.c 3KB
exti.c 3KB
bsp_usart.c 3KB
main.c 2KB
dma.c 2KB
usmart_config.c 2KB
bsp_led.c 2KB
bsp_key.c 2KB
key.c 2KB
bsp_SysTick.c 2KB
led.c 1KB
sys.c 616B
bsp_ov7725.crf 363KB
stm32f10x_tim.crf 362KB
main.crf 361KB
bsp_ili9341_lcd.crf 355KB
stm32f10x_can.crf 349KB
stm32f10x_it.crf 349KB
stm32f10x_adc.crf 348KB
stm32f10x_rcc.crf 348KB
stm32f10x_flash.crf 348KB
stm32f10x_i2c.crf 347KB
stm32f10x_usart.crf 346KB
stm32f10x_fsmc.crf 346KB
bsp_usart.crf 345KB
stm32f10x_sdio.crf 345KB
stm32f10x_spi.crf 345KB
共 401 条
- 1
- 2
- 3
- 4
- 5
资源评论
- Sola_Ex2019-08-25很强、学习学习
- 北巷番茄鱼2019-03-06不错,感觉比较可以
_pray
- 粉丝: 123
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功