1

我正在使用 STM32F207VC 控制器。我将外部探头温度传感器连接到 stm32 的内部 ADC 通道之一。

当它连接到控制器时,我想生成一个外部中断,我应该从外部温度传感器开始测量。

请任何人都可以提供我的代码或任何帮助

谢谢

4

1 回答 1

1

我有一个与 Solomon Systems SSD1963 GPU 连接的 STM32F4 处理器。GPU 有一个撕裂信号 (TE),它会在处理器即将进行垂直刷新时通知处理器。我希望您可以使用此代码作为示例,并使其适应您的解决方案。

TE 信号连接到 CPU 的 GPIO G7 引脚。所以首先我必须配置 GPIO 引脚。

//GPIO Pin G7
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOG, &GPIO_InitStructure);

接下来我必须配置中断和 NVIC。

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOG, EXTI_PinSource7);

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_StructInit(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line7;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

最后我必须创建中断处理程序。第EXTI9_5_IRQHandler5 ~ 7 行处理外部中断。这个方法实际上在我的 CPU 启动程序集文件中定义为弱引用。我只需要重新定义方法,链接器将完成剩下的工作。

extern "C" void EXTI9_5_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line7) != RESET)
    {
        //Handle the interrupt

        EXTI_ClearITPendingBit(EXTI_Line7);
    }
}

我使用 Mentor Graphics 的 Sourcery Codebench Lite 作为我的工具链。

于 2012-10-08T02:24:11.943 回答