STM32F10x外部中断实现与程序解析

版权申诉
0 下载量 59 浏览量 更新于2024-11-04 收藏 17KB RAR 举报
资源摘要信息:"STM32F10x是STMicroelectronics(意法半导体)公司生产的一系列高性能的32位ARM Cortex-M3微控制器。该系列微控制器针对工业控制和医疗设备等领域设计,具有丰富的外设接口,灵活性高,可扩展性强。在实际应用中,为了响应外部事件或信号的变化,常常需要使用外部中断功能。 在描述中提到的“STM32F10x,外部中断程序123456”,这可能是指开发过程中用于测试外部中断功能的一系列代码或示例程序编号,也可能是示例项目中的某个特定功能或配置。 文件名称列表中包含了与STM32F10x相关的源代码和配置文件,具体如下: - system_stm32f10x.c:该文件通常包含了针对STM32F10x系列微控制器的系统初始化代码,包括时钟配置、向量表的设置、低级硬件抽象层(HAL)的初始化等。 - stm32f10x_it.c:该文件负责实现中断服务例程(ISR),是中断处理的核心代码,根据不同的中断源编写对应的处理函数。 - main.c:包含了程序的主入口main函数,负责调用系统初始化函数,并进入主循环。 - BIOS.c:可能是一个基于优先级调度的实时操作系统(RTOS)的实现文件,或者是一个简单的初始化任务调度器,为程序的多任务处理提供基础。 - stm32f10x_conf.h:该文件包含了针对STM32F10x系列的外设驱动配置宏定义,以及对库函数的配置选项。 - stm32f10x_it.h:该头文件定义了中断向量表,并声明中断服务例程,供中断处理函数调用。 - BIOS.h:与BIOS.c对应,包含了可能用到的头文件,定义了实时操作系统或任务调度器中用到的宏定义和函数原型。 - Release_Notes.html:包含项目或库版本的发布说明,记录了软件的更新内容、新增功能、修复的bug等重要信息。 - readme.txt:通常包含项目的简单介绍,安装和使用指南,以及对代码结构和使用的说明。 了解这些文件有助于开发者对STM32F10x项目的代码结构和程序流程有一个清晰的认识,对于开发中涉及到的外部中断编程尤其重要。在开发STM32F10x外部中断程序时,开发者需要关注中断优先级的设置、中断源的配置、中断标志位的清除以及中断服务例程的编写等内容。"

在保持原来的代码逻辑的条件下,根据STM32F407的特性,把下面STM32F1的代码移植到STM32F407。void ExtiGpioInit(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5 ; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); } void ExtiNvicInit(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void ExtiModeInit(void) { EXTI_InitTypeDef EXTI_InitStructure; GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_Line = EXTI_Line4; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_Line = EXTI_Line5; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }

2023-07-09 上传