// 外部中断模块
// 杭州秒寻科技有限公司
// 周涛
// 2023-11-14

#ifndef EXTI_H
#define EXTI_H

#include "sysdef.h"

#define EXTI_TIMER_SEND_MAX_TIMES 100000000000 // 定时器最大发送次数

// 同步接收端口和管脚
#define EXTI_SYNCRX_GPIO_CLK RCC_AHB1Periph_GPIOB         // 注意：需要根据项目修改
#define EXTI_SYNCRX_GPIO_PORT GPIOB                       // 注意：需要根据项目修改
#define EXTI_SYNCRX_GPIO_PIN GPIO_Pin_0                   // 注意：需要根据项目修改
#define EXTI_SYNCRX_GPIO_SOURCE_PORT EXTI_PortSourceGPIOB // 外部中断端口
#define EXTI_SYNCRX_GPIO_SOURCE_PIN EXTI_PinSource0       // 外部中断管脚
#define EXTI_SYNCRX_GPIO_SOURCE_LINE EXTI_Line0           // 外部中断线
#define EXTI_SYNCRX_GPIO_IRQ_CHAN EXTI0_IRQn              // 中断通道号

// 同步转发端口和管脚
#define EXTI_SYNCTX_GPIO_CLK RCC_AHB1Periph_GPIOE // 注意：需要根据项目修改
#define EXTI_SYNCTX_GPIO_PORT GPIOE               // 注意：需要根据项目修改
#define EXTI_SYNCTX_GPIO_PIN GPIO_Pin_3           // 注意：需要根据项目修改

#define EXTI_SYNCTX_GPIO_SOURCE_PORT EXTI_PortSourceGPIOE // 外部中断端口
#define EXTI_SYNCTX_GPIO_SOURCE_PIN EXTI_PinSource3       // 外部中断管脚
#define EXTI_SYNCTX_GPIO_SOURCE_LINE EXTI_Line3           // 外部中断线
#define EXTI_SYNCTX_GPIO_IRQ_CHAN EXTI3_IRQn              // 中断通道号

// 供外部使用接口
void exti_init();
void exti_init_rx_sync();
void exti_init_tx_sync();
// void exti_send_signal_list();
void exti_enable_sync_signal_forward_int();
void exti_disable_sync_signal_forward_int();
void exti_save_sync_signal_forward_flag(uint8 bySyncTxFlag);
void exti_forward_sync_signal();
void exti_cal_audio_signal_send_delay_times(uint8 byRxSyncWordIndex);
#endif