diff --git a/Seekfree_TC264_Opensource_Library/user/isr.c b/Seekfree_TC264_Opensource_Library/user/isr.c index cfd54a6e6e778587e76c94bd8fe2c0356f30a5e9..caced4d9e1c3d2288976f63eaf686f866cc4a338 100644 --- a/Seekfree_TC264_Opensource_Library/user/isr.c +++ b/Seekfree_TC264_Opensource_Library/user/isr.c @@ -1,48 +1,48 @@ /********************************************************************************************************************* -* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库 -* Copyright (c) 2022 SEEKFREE 逐飞科技 +* TC264 Opensourec Library 鍗筹紙TC264 寮婧愬簱锛夋槸涓涓熀浜庡畼鏂 SDK 鎺ュ彛鐨勭涓夋柟寮婧愬簱 +* Copyright (c) 2022 SEEKFREE 閫愰绉戞妧 * -* 本文件是 TC264 开源库的一部分 +* 鏈枃浠舵槸 TC264 寮婧愬簱鐨勪竴閮ㄥ垎 * -* TC264 开源库 是免费软件 -* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款 -* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 +* TC264 寮婧愬簱 鏄厤璐硅蒋浠 +* 鎮ㄥ彲浠ユ牴鎹嚜鐢辫蒋浠跺熀閲戜細鍙戝竷鐨 GPL锛圙NU General Public License锛屽嵆 GNU閫氱敤鍏叡璁稿彲璇侊級鐨勬潯娆 +* 鍗 GPL 鐨勭3鐗堬紙鍗 GPL3.0锛夋垨锛堟偍閫夋嫨鐨勶級浠讳綍鍚庢潵鐨勭増鏈紝閲嶆柊鍙戝竷鍜/鎴栦慨鏀瑰畠 * -* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 -* 甚至没有隐含的适销性或适合特定用途的保证 -* 更多细节请参见 GPL +* 鏈紑婧愬簱鐨勫彂甯冩槸甯屾湜瀹冭兘鍙戞尌浣滅敤锛屼絾骞舵湭瀵瑰叾浣滀换浣曠殑淇濊瘉 +* 鐢氳嚦娌℃湁闅愬惈鐨勯傞攢鎬ф垨閫傚悎鐗瑰畾鐢ㄩ旂殑淇濊瘉 +* 鏇村缁嗚妭璇峰弬瑙 GPL * -* 您应该在收到本开源库的同时收到一份 GPL 的副本 -* 如果没有,请参阅 +* 鎮ㄥ簲璇ュ湪鏀跺埌鏈紑婧愬簱鐨勫悓鏃舵敹鍒颁竴浠 GPL 鐨勫壇鏈 +* 濡傛灉娌℃湁锛岃鍙傞槄 * -* 额外注明: -* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 -* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 -* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 -* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) +* 棰濆娉ㄦ槑锛 +* 鏈紑婧愬簱浣跨敤 GPL3.0 寮婧愯鍙瘉鍗忚 浠ヤ笂璁稿彲鐢虫槑涓鸿瘧鏂囩増鏈 +* 璁稿彲鐢虫槑鑻辨枃鐗堝湪 libraries/doc 鏂囦欢澶逛笅鐨 GPL3_permission_statement.txt 鏂囦欢涓 +* 璁稿彲璇佸壇鏈湪 libraries 鏂囦欢澶逛笅 鍗宠鏂囦欢澶逛笅鐨 LICENSE 鏂囦欢 +* 娆㈣繋鍚勪綅浣跨敤骞朵紶鎾湰绋嬪簭 浣嗕慨鏀瑰唴瀹规椂蹇呴』淇濈暀閫愰绉戞妧鐨勭増鏉冨0鏄庯紙鍗虫湰澹版槑锛 * -* 文件名称 isr -* 公司名称 成都逐飞科技有限公司 -* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明 -* 开发环境 ADS v1.9.4 -* 适用平台 TC264D -* 店铺链接 https://seekfree.taobao.com/ +* 鏂囦欢鍚嶇О isr +* 鍏徃鍚嶇О 鎴愰兘閫愰绉戞妧鏈夐檺鍏徃 +* 鐗堟湰淇℃伅 鏌ョ湅 libraries/doc 鏂囦欢澶瑰唴 version 鏂囦欢 鐗堟湰璇存槑 +* 寮鍙戠幆澧 ADS v1.9.4 +* 閫傜敤骞冲彴 TC264D +* 搴楅摵閾炬帴 https://seekfree.taobao.com/ * -* 修改记录 -* 日期 作者 备注 +* 淇敼璁板綍 +* 鏃ユ湡 浣滆 澶囨敞 * 2022-09-15 pudding first version ********************************************************************************************************************/ #include "isr_config.h" #include "isr.h" -// 对于TC系列默认是不支持中断嵌套的,希望支持中断嵌套需要在中断内使用 interrupt_global_enable(0); 来开启中断嵌套 -// 简单点说实际上进入中断后TC系列的硬件自动调用了 interrupt_global_disable(); 来拒绝响应任何的中断,因此需要我们自己手动调用 interrupt_global_enable(0); 来开启中断的响应。 +// 瀵逛簬TC绯诲垪榛樿鏄笉鏀寔涓柇宓屽鐨勶紝甯屾湜鏀寔涓柇宓屽闇瑕佸湪涓柇鍐呬娇鐢 interrupt_global_enable(0); 鏉ュ紑鍚腑鏂祵濂 +// 绠鍗曠偣璇村疄闄呬笂杩涘叆涓柇鍚嶵C绯诲垪鐨勭‖浠惰嚜鍔ㄨ皟鐢ㄤ簡 interrupt_global_disable(); 鏉ユ嫆缁濆搷搴斾换浣曠殑涓柇锛屽洜姝ら渶瑕佹垜浠嚜宸辨墜鍔ㄨ皟鐢 interrupt_global_enable(0); 鏉ュ紑鍚腑鏂殑鍝嶅簲銆 -// **************************** PIT中断函数 **************************** +// **************************** PIT涓柇鍑芥暟 **************************** IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 pit_clear_flag(CCU60_CH0); @@ -52,7 +52,7 @@ IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY) IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 pit_clear_flag(CCU60_CH1); @@ -62,7 +62,7 @@ IFX_INTERRUPT(cc60_pit_ch1_isr, 0, CCU6_0_CH1_ISR_PRIORITY) IFX_INTERRUPT(cc61_pit_ch0_isr, 0, CCU6_1_CH0_ISR_PRIORITY) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 pit_clear_flag(CCU61_CH0); @@ -72,27 +72,27 @@ IFX_INTERRUPT(cc61_pit_ch0_isr, 0, CCU6_1_CH0_ISR_PRIORITY) IFX_INTERRUPT(cc61_pit_ch1_isr, 0, CCU6_1_CH1_ISR_PRIORITY) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 pit_clear_flag(CCU61_CH1); } -// **************************** PIT中断函数 **************************** +// **************************** PIT涓柇鍑芥暟 **************************** -// **************************** 外部中断函数 **************************** +// **************************** 澶栭儴涓柇鍑芥暟 **************************** IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // 通道0中断 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + if(exti_flag_get(ERU_CH0_REQ0_P15_4)) // 閫氶亾0涓柇 { exti_flag_clear(ERU_CH0_REQ0_P15_4); } - if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // 通道4中断 + if(exti_flag_get(ERU_CH4_REQ13_P15_5)) // 閫氶亾4涓柇 { exti_flag_clear(ERU_CH4_REQ13_P15_5); @@ -104,34 +104,34 @@ IFX_INTERRUPT(exti_ch0_ch4_isr, 0, EXTI_CH0_CH4_INT_PRIO) IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 - if(exti_flag_get(ERU_CH1_REQ10_P14_3)) // 通道1中断 + if(exti_flag_get(ERU_CH1_REQ10_P14_3)) // 閫氶亾1涓柇 { exti_flag_clear(ERU_CH1_REQ10_P14_3); - tof_module_exti_handler(); // ToF 模块 INT 更新中断 + tof_module_exti_handler(); // ToF 妯″潡 INT 鏇存柊涓柇 } - if(exti_flag_get(ERU_CH5_REQ1_P15_8)) // 通道5中断 + if(exti_flag_get(ERU_CH5_REQ1_P15_8)) // 閫氶亾5涓柇 { exti_flag_clear(ERU_CH5_REQ1_P15_8); - wireless_module_spi_handler(); // SPI WIFI 中断回调函数 + wireless_module_spi_handler(); // SPI WIFI 涓柇鍥炶皟鍑芥暟 } } -// 由于摄像头pclk引脚默认占用了 2通道,用于触发DMA,因此这里不再定义中断函数 +// 鐢变簬鎽勫儚澶磒clk寮曡剼榛樿鍗犵敤浜 2閫氶亾锛岀敤浜庤Е鍙慏MA锛屽洜姝よ繖閲屼笉鍐嶅畾涔変腑鏂嚱鏁 // IFX_INTERRUPT(exti_ch2_ch6_isr, 0, EXTI_CH2_CH6_INT_PRIO) // { -// interrupt_global_enable(0); // 开启中断嵌套 -// if(exti_flag_get(ERU_CH2_REQ7_P00_4)) // 通道2中断 +// interrupt_global_enable(0); // 寮鍚腑鏂祵濂 +// if(exti_flag_get(ERU_CH2_REQ7_P00_4)) // 閫氶亾2涓柇 // { // exti_flag_clear(ERU_CH2_REQ7_P00_4); // } -// if(exti_flag_get(ERU_CH6_REQ9_P20_0)) // 通道6中断 +// if(exti_flag_get(ERU_CH6_REQ9_P20_0)) // 閫氶亾6涓柇 // { // exti_flag_clear(ERU_CH6_REQ9_P20_0); // } @@ -139,13 +139,13 @@ IFX_INTERRUPT(exti_ch1_ch5_isr, 0, EXTI_CH1_CH5_INT_PRIO) IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - if(exti_flag_get(ERU_CH3_REQ6_P02_0)) // 通道3中断 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + if(exti_flag_get(ERU_CH3_REQ6_P02_0)) // 閫氶亾3涓柇 { exti_flag_clear(ERU_CH3_REQ6_P02_0); - camera_vsync_handler(); // 摄像头触发采集统一回调函数 + camera_vsync_handler(); // 鎽勫儚澶磋Е鍙戦噰闆嗙粺涓鍥炶皟鍑芥暟 } - if(exti_flag_get(ERU_CH7_REQ16_P15_1)) // 通道7中断 + if(exti_flag_get(ERU_CH7_REQ16_P15_1)) // 閫氶亾7涓柇 { exti_flag_clear(ERU_CH7_REQ16_P15_1); @@ -154,41 +154,41 @@ IFX_INTERRUPT(exti_ch3_ch7_isr, 0, EXTI_CH3_CH7_INT_PRIO) } } -// **************************** 外部中断函数 **************************** +// **************************** 澶栭儴涓柇鍑芥暟 **************************** -// **************************** DMA中断函数 **************************** +// **************************** DMA涓柇鍑芥暟 **************************** IFX_INTERRUPT(dma_ch5_isr, 0, DMA_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - camera_dma_handler(); // 摄像头采集完成统一回调函数 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + camera_dma_handler(); // 鎽勫儚澶撮噰闆嗗畬鎴愮粺涓鍥炶皟鍑芥暟 } -// **************************** DMA中断函数 **************************** +// **************************** DMA涓柇鍑芥暟 **************************** -// **************************** 串口中断函数 **************************** -// 串口0默认作为调试串口 +// **************************** 涓插彛涓柇鍑芥暟 **************************** +// 涓插彛0榛樿浣滀负璋冭瘯涓插彛 IFX_INTERRUPT(uart0_tx_isr, 0, UART0_TX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 } IFX_INTERRUPT(uart0_rx_isr, 0, UART0_RX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 -#if DEBUG_UART_USE_INTERRUPT // 如果开启 debug 串口中断 - debug_interrupr_handler(); // 调用 debug 串口接收处理函数 数据会被 debug 环形缓冲区读取 -#endif // 如果修改了 DEBUG_UART_INDEX 那这段代码需要放到对应的串口中断去 +#if DEBUG_UART_USE_INTERRUPT // 濡傛灉寮鍚 debug 涓插彛涓柇 + debug_interrupr_handler(); // 璋冪敤 debug 涓插彛鎺ユ敹澶勭悊鍑芥暟 鏁版嵁浼氳 debug 鐜舰缂撳啿鍖鸿鍙 +#endif // 濡傛灉淇敼浜 DEBUG_UART_INDEX 閭h繖娈典唬鐮侀渶瑕佹斁鍒板搴旂殑涓插彛涓柇鍘 } -// 串口1默认连接到摄像头配置串口 +// 涓插彛1榛樿杩炴帴鍒版憚鍍忓ご閰嶇疆涓插彛 IFX_INTERRUPT(uart1_tx_isr, 0, UART1_TX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 @@ -196,14 +196,14 @@ IFX_INTERRUPT(uart1_tx_isr, 0, UART1_TX_INT_PRIO) } IFX_INTERRUPT(uart1_rx_isr, 0, UART1_RX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - camera_uart_handler(); // 摄像头参数配置统一回调函数 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + camera_uart_handler(); // 鎽勫儚澶村弬鏁伴厤缃粺涓鍥炶皟鍑芥暟 } -// 串口2默认连接到无线转串口模块 +// 涓插彛2榛樿杩炴帴鍒版棤绾胯浆涓插彛妯″潡 IFX_INTERRUPT(uart2_tx_isr, 0, UART2_TX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 @@ -211,16 +211,16 @@ IFX_INTERRUPT(uart2_tx_isr, 0, UART2_TX_INT_PRIO) IFX_INTERRUPT(uart2_rx_isr, 0, UART2_RX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - wireless_module_uart_handler(); // 无线模块统一回调函数 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + wireless_module_uart_handler(); // 鏃犵嚎妯″潡缁熶竴鍥炶皟鍑芥暟 } -// 串口3默认连接到GPS定位模块 +// 涓插彛3榛樿杩炴帴鍒癎PS瀹氫綅妯″潡 IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 @@ -228,39 +228,39 @@ IFX_INTERRUPT(uart3_tx_isr, 0, UART3_TX_INT_PRIO) IFX_INTERRUPT(uart3_rx_isr, 0, UART3_RX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - gps_uart_callback(); // GPS串口回调函数 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + gps_uart_callback(); // GPS涓插彛鍥炶皟鍑芥暟 } IFX_INTERRUPT(uart4_rx_isr, 0, UART3_RX_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 } -// 串口通讯错误中断 +// 涓插彛閫氳閿欒涓柇 IFX_INTERRUPT(uart0_er_isr, 0, UART0_ER_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - IfxAsclin_Asc_isrError(&uart3_handle); + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + IfxAsclin_Asc_isrError(&uart0_handle); } IFX_INTERRUPT(uart1_er_isr, 0, UART1_ER_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 - IfxAsclin_Asc_isrError(&uart3_handle); + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 + IfxAsclin_Asc_isrError(&uart1_handle); } IFX_INTERRUPT(uart2_er_isr, 0, UART2_ER_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 IfxAsclin_Asc_isrError(&uart2_handle); } IFX_INTERRUPT(uart3_er_isr, 0, UART3_ER_INT_PRIO) { - interrupt_global_enable(0); // 开启中断嵌套 + interrupt_global_enable(0); // 寮鍚腑鏂祵濂 IfxAsclin_Asc_isrError(&uart3_handle); }