|
@@ -13,17 +13,19 @@ static uint8 gExti_bySyncTimerEnabled = 1;
|
|
|
|
|
|
void exti_init()
|
|
void exti_init()
|
|
{
|
|
{
|
|
- exti_init_rx_pps1();
|
|
+
|
|
- exti_init_tx_sync();
|
|
+ exti_init_pps_cpld();
|
|
-
|
|
+ exti_init_tx_sync();
|
|
-
|
|
+
|
|
- EXTI_ClearITPendingBit(EXTI_Line0);
|
|
+
|
|
- EXTI_ClearITPendingBit(EXTI_Line4);
|
|
+
|
|
|
|
+ EXTI_ClearITPendingBit(EXTI_CPLD_LINE);
|
|
|
|
+ EXTI_ClearITPendingBit(EXTI_SYNC_LINE);
|
|
sync_rxtx_update_tx_cplt_flag(2);
|
|
sync_rxtx_update_tx_cplt_flag(2);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
+
|
|
-void exti_init_rx_pps1()
|
|
+void exti_init_pps_bd()
|
|
{
|
|
{
|
|
GPIO_InitTypeDef stGpio = {0};
|
|
GPIO_InitTypeDef stGpio = {0};
|
|
EXTI_InitTypeDef stExti = {0};
|
|
EXTI_InitTypeDef stExti = {0};
|
|
@@ -33,19 +35,18 @@ void exti_init_rx_pps1()
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
|
|
|
|
|
|
|
|
|
|
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
|
+ RCC_AHB1PeriphClockCmd(EXTI_BD_RCC_PERIPH, ENABLE);
|
|
- stGpio.GPIO_Mode = GPIO_Mode_IN;
|
|
+ stGpio.GPIO_Mode = GPIO_Mode_IN;
|
|
-
|
|
|
|
stGpio.GPIO_PuPd = GPIO_PuPd_DOWN;
|
|
stGpio.GPIO_PuPd = GPIO_PuPd_DOWN;
|
|
stGpio.GPIO_Speed = GPIO_Speed_50MHz;
|
|
stGpio.GPIO_Speed = GPIO_Speed_50MHz;
|
|
- stGpio.GPIO_Pin = GPIO_Pin_0;
|
|
+ stGpio.GPIO_Pin = EXTI_BD_GPIO_PIN;
|
|
- GPIO_Init(GPIOB, &stGpio);
|
|
+ GPIO_Init(EXTI_BD_GPIO_PORT, &stGpio);
|
|
|
|
|
|
|
|
|
|
- SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource0);
|
|
+ SYSCFG_EXTILineConfig(EXTI_BD_SOURCE_PORT, EXTI_BD_SOURCE_PIN);
|
|
|
|
|
|
|
|
|
|
- stExti.EXTI_Line = EXTI_Line0;
|
|
+ stExti.EXTI_Line = EXTI_BD_LINE;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_LineCmd = ENABLE;
|
|
stExti.EXTI_LineCmd = ENABLE;
|
|
@@ -53,7 +54,7 @@ void exti_init_rx_pps1()
|
|
EXTI_Init(&stExti);
|
|
EXTI_Init(&stExti);
|
|
|
|
|
|
|
|
|
|
- stNvic.NVIC_IRQChannel = EXTI0_IRQn;
|
|
+ stNvic.NVIC_IRQChannel = EXTI_BD_IRQ_CHANNEL;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelSubPriority = 0;
|
|
stNvic.NVIC_IRQChannelSubPriority = 0;
|
|
stNvic.NVIC_IRQChannelCmd = ENABLE;
|
|
stNvic.NVIC_IRQChannelCmd = ENABLE;
|
|
@@ -69,10 +70,110 @@ void EXTI0_IRQHandler(void)
|
|
uint8 byFlag = 0;
|
|
uint8 byFlag = 0;
|
|
uint8 byRtcTimeValidFlag = 0;
|
|
uint8 byRtcTimeValidFlag = 0;
|
|
|
|
|
|
- if (EXTI_GetITStatus(EXTI_Line0) != RESET)
|
|
+ if (EXTI_GetITStatus(EXTI_BD_LINE) != RESET)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ byIntLevelFlag = GPIO_ReadInputDataBit(EXTI_BD_GPIO_PORT, EXTI_BD_GPIO_PIN);
|
|
|
|
+ if (byIntLevelFlag)
|
|
|
|
+ {
|
|
|
|
+ gExti_bySyncSendCounter++;
|
|
|
|
+ if (gExti_bySyncSendCounter == EXTI_SYNC_SEND_COUNTER)
|
|
|
|
+ {
|
|
|
|
+ gExti_bySyncSendCounter = 0;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ byTxCpltFlag = sync_rxtx_query_tx_cplt_flag();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (!byTxCpltFlag)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ if (gExti_bySyncTimerEnabled)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ sync_rxtx_update_tx_cplt_flag(1);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ byFlag = sync_rxtx_send_signal();
|
|
|
|
+ if (byFlag)
|
|
|
|
+ {
|
|
|
|
+ exti_enable_sync_tx_int();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ sync_rxtx_update_tx_alarm(1);
|
|
|
|
+ sync_rxtx_update_tx_cplt_flag(2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (!gExti_bySyncTimerEnabled)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ gExti_byLedFlag ^= 1;
|
|
|
|
+ driver_led_switch_green(gExti_byLedFlag);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ EXTI_ClearITPendingBit(EXTI_BD_LINE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+void exti_init_pps_cpld()
|
|
|
|
+{
|
|
|
|
+ GPIO_InitTypeDef stGpio = {0};
|
|
|
|
+ EXTI_InitTypeDef stExti = {0};
|
|
|
|
+ NVIC_InitTypeDef stNvic = {0};
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ RCC_AHB1PeriphClockCmd(EXTI_CPLD_RCC_PERIPH, ENABLE);
|
|
|
|
+ stGpio.GPIO_Mode = GPIO_Mode_IN;
|
|
|
|
+ stGpio.GPIO_PuPd = GPIO_PuPd_DOWN;
|
|
|
|
+ stGpio.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
|
+ stGpio.GPIO_Pin = EXTI_CPLD_GPIO_PIN;
|
|
|
|
+ GPIO_Init(EXTI_CPLD_GPIO_PORT, &stGpio);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ SYSCFG_EXTILineConfig(EXTI_CPLD_SOURCE_PORT, EXTI_CPLD_SOURCE_PIN);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ stExti.EXTI_Line = EXTI_CPLD_LINE;
|
|
|
|
+ stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
|
|
+ stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
|
|
+ stExti.EXTI_LineCmd = ENABLE;
|
|
|
|
+ EXTI_DeInit();
|
|
|
|
+ EXTI_Init(&stExti);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ stNvic.NVIC_IRQChannel = EXTI_CPLD_IRQ_CHANNEL;
|
|
|
|
+ stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
|
|
+ stNvic.NVIC_IRQChannelSubPriority = 0;
|
|
|
|
+ stNvic.NVIC_IRQChannelCmd = ENABLE;
|
|
|
|
+ NVIC_Init(&stNvic);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+void EXTI1_IRQHandler(void)
|
|
|
|
+{
|
|
|
|
+ uint8 byIntLevelFlag = 0;
|
|
|
|
+ uint8 byTxCpltFlag = 0;
|
|
|
|
+ uint8 byFlag = 0;
|
|
|
|
+ uint8 byRtcTimeValidFlag = 0;
|
|
|
|
+
|
|
|
|
+ if (EXTI_GetITStatus(EXTI_CPLD_LINE) != RESET)
|
|
{
|
|
{
|
|
|
|
|
|
- byIntLevelFlag = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0);
|
|
+ byIntLevelFlag = GPIO_ReadInputDataBit(EXTI_CPLD_GPIO_PORT, EXTI_CPLD_GPIO_PIN);
|
|
if (byIntLevelFlag)
|
|
if (byIntLevelFlag)
|
|
{
|
|
{
|
|
gExti_bySyncSendCounter++;
|
|
gExti_bySyncSendCounter++;
|
|
@@ -118,7 +219,7 @@ void EXTI0_IRQHandler(void)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- EXTI_ClearITPendingBit(EXTI_Line0);
|
|
+ EXTI_ClearITPendingBit(EXTI_CPLD_LINE);
|
|
}
|
|
}
|
|
|
|
|
|
return;
|
|
return;
|
|
@@ -131,7 +232,7 @@ void exti_set_sync_timer_enabled_flag(uint8 byFlag)
|
|
gExti_bySyncTimerEnabled = byFlag;
|
|
gExti_bySyncTimerEnabled = byFlag;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -144,25 +245,25 @@ void exti_init_tx_sync()
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
|
|
|
|
|
|
|
|
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
|
|
+ RCC_AHB1PeriphClockCmd(EXTI_SYNC_RCC_PERIPH, ENABLE);
|
|
stGpio.GPIO_Mode = GPIO_Mode_IN;
|
|
stGpio.GPIO_Mode = GPIO_Mode_IN;
|
|
stGpio.GPIO_PuPd = GPIO_PuPd_DOWN;
|
|
stGpio.GPIO_PuPd = GPIO_PuPd_DOWN;
|
|
stGpio.GPIO_Speed = GPIO_Speed_50MHz;
|
|
stGpio.GPIO_Speed = GPIO_Speed_50MHz;
|
|
- stGpio.GPIO_Pin = GPIO_Pin_4;
|
|
+ stGpio.GPIO_Pin = EXTI_SYNC_GPIO_PIN;
|
|
- GPIO_Init(GPIOD, &stGpio);
|
|
+ GPIO_Init(EXTI_SYNC_GPIO_PORT, &stGpio);
|
|
|
|
|
|
|
|
|
|
- SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource4);
|
|
+ SYSCFG_EXTILineConfig(EXTI_SYNC_SOURCE_PORT, EXTI_SYNC_SOURCE_PIN);
|
|
|
|
|
|
|
|
|
|
- stExti.EXTI_Line = EXTI_Line4;
|
|
+ stExti.EXTI_Line = EXTI_SYNC_LINE;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_LineCmd = DISABLE;
|
|
stExti.EXTI_LineCmd = DISABLE;
|
|
EXTI_Init(&stExti);
|
|
EXTI_Init(&stExti);
|
|
|
|
|
|
|
|
|
|
- stNvic.NVIC_IRQChannel = EXTI4_IRQn;
|
|
+ stNvic.NVIC_IRQChannel = EXTI_SYNC_IRQ_CHANNEL;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelCmd = DISABLE;
|
|
stNvic.NVIC_IRQChannelCmd = DISABLE;
|
|
@@ -172,7 +273,7 @@ void exti_init_tx_sync()
|
|
|
|
|
|
void EXTI4_IRQHandler(void)
|
|
void EXTI4_IRQHandler(void)
|
|
{
|
|
{
|
|
- if (EXTI_GetITStatus(EXTI_Line4) != RESET)
|
|
+ if (EXTI_GetITStatus(EXTI_SYNC_LINE) != RESET)
|
|
{
|
|
{
|
|
|
|
|
|
sync_rxtx_update_tx_cplt_flag(2);
|
|
sync_rxtx_update_tx_cplt_flag(2);
|
|
@@ -185,7 +286,7 @@ void EXTI4_IRQHandler(void)
|
|
driver_led_switch_green(gExti_byLedFlag);
|
|
driver_led_switch_green(gExti_byLedFlag);
|
|
|
|
|
|
|
|
|
|
- EXTI_ClearITPendingBit(EXTI_Line4);
|
|
+ EXTI_ClearITPendingBit(EXTI_SYNC_LINE);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -196,14 +297,14 @@ void exti_enable_sync_tx_int()
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
|
|
|
|
|
|
|
|
- SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource4);
|
|
+ SYSCFG_EXTILineConfig(EXTI_SYNC_SOURCE_PORT, EXTI_SYNC_SOURCE_PIN);
|
|
- stExti.EXTI_Line = EXTI_Line4;
|
|
+ stExti.EXTI_Line = EXTI_SYNC_LINE;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_LineCmd = ENABLE;
|
|
stExti.EXTI_LineCmd = ENABLE;
|
|
EXTI_Init(&stExti);
|
|
EXTI_Init(&stExti);
|
|
|
|
|
|
- stNvic.NVIC_IRQChannel = EXTI4_IRQn;
|
|
+ stNvic.NVIC_IRQChannel = EXTI_SYNC_IRQ_CHANNEL;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelCmd = ENABLE;
|
|
stNvic.NVIC_IRQChannelCmd = ENABLE;
|
|
@@ -219,13 +320,13 @@ void exti_disable_sync_tx_int()
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
NVIC_InitTypeDef stNvic = {0};
|
|
|
|
|
|
|
|
|
|
- stExti.EXTI_Line = EXTI_Line4;
|
|
+ stExti.EXTI_Line = EXTI_SYNC_LINE;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Mode = EXTI_Mode_Interrupt;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_Trigger = EXTI_Trigger_Rising;
|
|
stExti.EXTI_LineCmd = DISABLE;
|
|
stExti.EXTI_LineCmd = DISABLE;
|
|
EXTI_Init(&stExti);
|
|
EXTI_Init(&stExti);
|
|
|
|
|
|
- stNvic.NVIC_IRQChannel = EXTI4_IRQn;
|
|
+ stNvic.NVIC_IRQChannel = EXTI_SYNC_IRQ_CHANNEL;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelPreemptionPriority = 0;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelSubPriority = 1;
|
|
stNvic.NVIC_IRQChannelCmd = DISABLE;
|
|
stNvic.NVIC_IRQChannelCmd = DISABLE;
|