Files
TC264_Library_seekfree/Example/8-EEPROM_Demo/USER/isr.c
SEEKFREE_Kang b315544c4b V1.1.8
将isr_config.h中 INT_SERVICE设置改为使用枚举值进行设置
    更改illd文件夹名称为infineon_libraries
    在TC264配置文件中,增加频率设置选项
    增加main等待,等待所有核心初始化完毕才开始运行
    修改CLK_FREQ宏定义名称为CMU_CLK_FREQ
    DMA所需的数组地址通过指针进行传递,这样可以避免在不调用摄像头的时候,相关的数组不会占用RAM
    将总钻风pclk改为下降沿触发
    将无线转串口的RTS引脚配置参数修改为下拉
2021-01-04 18:14:51 +08:00

204 lines
4.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*********************************************************************************************************************
* COPYRIGHT NOTICE
* Copyright (c) 2020,逐飞科技
* All rights reserved.
* 技术讨论QQ群三群824575535
*
* 以下所有内容版权均属逐飞科技所有,未经允许不得用于商业用途,
* 欢迎各位使用并传播本程序,修改内容时必须保留逐飞科技的版权声明。
*
* @file isr
* @company 成都逐飞科技有限公司
* @author 逐飞科技(QQ3184284598)
* @version 查看doc内version文件 版本说明
* @Software ADS v1.2.2
* @Target core TC264D
* @Taobao https://seekfree.taobao.com/
* @date 2020-3-23
********************************************************************************************************************/
#include "isr_config.h"
#include "isr.h"
//在isr.c的中断函数函数定义的第二个参数固定为0请不要更改即使你用CPU1处理中断也不要更改需要CPU1处理中断只需要在isr_config.h内修改对应的宏定义即可
//PIT中断函数 示例
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
enableInterrupts();//开启中断嵌套
PIT_CLEAR_FLAG(CCU6_0, PIT_CH0);
}
IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY)
{
enableInterrupts();//开启中断嵌套
PIT_CLEAR_FLAG(CCU6_0, PIT_CH1);
}
IFX_INTERRUPT(cc61_pit_ch0_isr, 0, CCU6_1_CH0_ISR_PRIORITY)
{
enableInterrupts();//开启中断嵌套
PIT_CLEAR_FLAG(CCU6_1, PIT_CH0);
}
IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY)
{
enableInterrupts();//开启中断嵌套
PIT_CLEAR_FLAG(CCU6_1, PIT_CH1);
}
IFX_INTERRUPT(eru_ch0_ch4_isr, 0, ERU_CH0_CH4_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
if(GET_GPIO_FLAG(ERU_CH0_REQ4_P10_7))//通道0中断
{
CLEAR_GPIO_FLAG(ERU_CH0_REQ4_P10_7);
}
if(GET_GPIO_FLAG(ERU_CH4_REQ13_P15_5))//通道4中断
{
CLEAR_GPIO_FLAG(ERU_CH4_REQ13_P15_5);
}
}
IFX_INTERRUPT(eru_ch1_ch5_isr, 0, ERU_CH1_CH5_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
if(GET_GPIO_FLAG(ERU_CH1_REQ5_P10_8))//通道1中断
{
CLEAR_GPIO_FLAG(ERU_CH1_REQ5_P10_8);
}
if(GET_GPIO_FLAG(ERU_CH5_REQ1_P15_8))//通道5中断
{
CLEAR_GPIO_FLAG(ERU_CH5_REQ1_P15_8);
}
}
//由于摄像头pclk引脚默认占用了 2通道用于触发DMA因此这里不再定义中断函数
//IFX_INTERRUPT(eru_ch2_ch6_isr, 0, ERU_CH2_CH6_INT_PRIO)
//{
// enableInterrupts();//开启中断嵌套
// if(GET_GPIO_FLAG(ERU_CH2_REQ7_P00_4))//通道2中断
// {
// CLEAR_GPIO_FLAG(ERU_CH2_REQ7_P00_4);
//
// }
// if(GET_GPIO_FLAG(ERU_CH6_REQ9_P20_0))//通道6中断
// {
// CLEAR_GPIO_FLAG(ERU_CH6_REQ9_P20_0);
//
// }
//}
IFX_INTERRUPT(eru_ch3_ch7_isr, 0, ERU_CH3_CH7_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
if(GET_GPIO_FLAG(ERU_CH3_REQ6_P02_0))//通道3中断
{
CLEAR_GPIO_FLAG(ERU_CH3_REQ6_P02_0);
if (1 == camera_type) mt9v03x_vsync();
else if (3 == camera_type) ov7725_vsync();
}
if(GET_GPIO_FLAG(ERU_CH7_REQ16_P15_1))//通道7中断
{
CLEAR_GPIO_FLAG(ERU_CH7_REQ16_P15_1);
}
}
IFX_INTERRUPT(dma_ch5_isr, 0, ERU_DMA_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
if (1 == camera_type) mt9v03x_dma();
else if (3 == camera_type) ov7725_dma();
}
//串口中断函数 示例
IFX_INTERRUPT(uart0_tx_isr, 0, UART0_TX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrTransmit(&uart0_handle);
}
IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrReceive(&uart0_handle);
}
IFX_INTERRUPT(uart0_er_isr, 0, UART0_ER_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrError(&uart0_handle);
}
//串口1默认连接到摄像头配置串口
IFX_INTERRUPT(uart1_tx_isr, 0, UART1_TX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrTransmit(&uart1_handle);
}
IFX_INTERRUPT(uart1_rx_isr, 0, UART1_RX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrReceive(&uart1_handle);
mt9v03x_uart_callback();
}
IFX_INTERRUPT(uart1_er_isr, 0, UART1_ER_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrError(&uart1_handle);
}
//串口2默认连接到无线转串口模块
IFX_INTERRUPT(uart2_tx_isr, 0, UART2_TX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrTransmit(&uart2_handle);
}
IFX_INTERRUPT(uart2_rx_isr, 0, UART2_RX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrReceive(&uart2_handle);
wireless_uart_callback();
}
IFX_INTERRUPT(uart2_er_isr, 0, UART2_ER_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrError(&uart2_handle);
}
IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrTransmit(&uart3_handle);
}
IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrReceive(&uart3_handle);
}
IFX_INTERRUPT(uart3_er_isr, 0, UART3_ER_INT_PRIO)
{
enableInterrupts();//开启中断嵌套
IfxAsclin_Asc_isrError(&uart3_handle);
}