我使用的是STM32F207VC控制器。我的外部探头温度传感器连接到stm32的内部ADC通道之一。
我想在连接到控制器时产生外部中断,我应该从外部温度传感器开始测量。
请允许任何人在此提供代码或任何帮助
由于
答案 0 :(得分: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_IRQHandler
处理第5~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作为我的工具链。