хочу проверить как ведут себя входы DRDY.
пытаюсь их конфигурировать и просто (пока не подключил АЦП) соединить вход с землей.
если их по очереди конфигурить - то все они работают, но не все одновременно.
если конфигурируешь 3 сразу то возникает лишь одно прерывание.
в чем загвоздка, подскажите!
CODE
RCC_APB2PeriphClockCmd(ADS1210_DRDY1_GPIO_CLK | ADS1210_DRDY2_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
/*!< Configure ADS1210_DRDY1_PIN pin: DRDY1 pin */
GPIO_InitStructure.GPIO_Pin = ADS1210_DRDY1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // или GPIO_Mode_IPU ?
GPIO_Init(ADS1210_DRDY1_GPIO_PORT, &GPIO_InitStructure);
/* Свяжем GPIO DRDY1 с линией EXTI1 */
GPIO_EXTILineConfig(ADS1210_DRDY1_EXTI_PORT_SOURCE, ADS1210_DRDY1_EXTI_PIN_SOURCE);
EXTI_InitStructure.EXTI_Line = ADS1210_DRDY1_EXTI_LINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/*!< Configure ADS1210_DRDY2_PIN pin: DRDY2 pin */
GPIO_InitStructure.GPIO_Pin = ADS1210_DRDY2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // или GPIO_Mode_IPU ?
GPIO_Init(ADS1210_DRDY2_GPIO_PORT, &GPIO_InitStructure);
/* Свяжем GPIO DRDY2 с линией EXTI1 */
GPIO_EXTILineConfig(ADS1210_DRDY2_EXTI_PORT_SOURCE, ADS1210_DRDY2_EXTI_PIN_SOURCE);
EXTI_InitStructure.EXTI_Line = ADS1210_DRDY2_EXTI_LINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
обработчик выглядит примерно так:
CODE
void EXTI1_IRQHandler(void)
{
#if 0
if(EXTI_GetITStatus(ADS1210_DRDY1_EXTI_LINE) != RESET)
{
/* Toggle LED3 */
STM32vldiscovery_LEDToggle(LED3);
/* Clear EXTI line pending bit */
EXTI_ClearITPendingBit(ADS1210_DRDY1_EXTI_LINE);
}
#endif
if(EXTI_GetITStatus(ADS1210_DRDY2_EXTI_LINE) != RESET)
{
/* Toggle LED4 */
STM32vldiscovery_LEDToggle(LED4);
/* Clear EXTI line pending bit */
EXTI_ClearITPendingBit(ADS1210_DRDY2_EXTI_LINE);
}
}
ну и нвик я настраивал примерно так:
CODE
/* Enable and set Button EXTI Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = ADS1210_DRDY1_EXTI_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0f;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannel = ADS1210_DRDY2_EXTI_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0f;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
может у меня в настройке нвика ошибка, как мне EXTI поместить в обин обработчик?
входы DRDY a1 b1 c1 - типа чтоб на одно exti посадить.