一、硬件和软件平台 硬件平台:STM32F030探索套件 编译环境:MDK 硬件工具:Mini USB 主要文件:key.h、key.c、exti.c和exti.h 二、按键控制有两种基本的方式 1.按键扫描控制 2.按键中断控制 按键扫描效率相对要低,因为他一直需要MCU不停的扫描,这就会导致资源的浪费。而按键中断就很巧妙的弥补了这个缺点,只要系统IO口出现上升沿或下降沿电平就会触发执行中断内的程序。这样就不会限制MCU的工作。 三、外部中断简单讲解 在F030英文手册88页的3.9节就讲述了中断和事件,具体可以参考STM32F10x系列的,原理基本一样。 下面主要是对按键中断控制进行讲解: 1.配置GPIO与中断线的映射关系的函数SYSCFG_EXTILineConfig(),该函数将 GPIO端口与中断线映射起来; 2.IO口的中断触发方式:设置该中断线上中断的初始化参数,中断线上中断的初始化是通过函数EXTI_Init()实现的; 3. 在编写中断服务函数的时候会经常使用到两个函数,第一个函数是判断某个中断线上的中断是否发生(标志位是否置位) :ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)这个函数一般使用在中断服务函数的开头判断中断是否发生。 4.另一个函数是清除某个中断线上的中断标志位:这个函数一般应用在中断服务函数结束之前,清除中断标志位。void EXTI_ClearITPendingBit(uint32_t EXTI_Line) 这两个函数均在stm32f0xx_exti.c里面,大家可以查看。 5.中断服务函数,一般有固定的格式: void EXTIx_x_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Linex)!=RESET)//判断某个线上的中断是否发生 { 中断逻辑… EXTI_ClearITPendingBit(EXTI_Linex); //清除 LINEx 上的中断标志位 } } 四、用IO口外部中断的一般步骤: 1.初始化IO口为输入; 2.开启IO口时钟,设置 IO 口与中断线的映射关系; 3.初始化线上中断,设置触发条件等; 4.配置中断分组(NVIC),并使能中断; 5.编写中断服务函数。 五、实验结果图片 |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
STM32F042无法调试
来看看 能不能解决问题。
RE:【STM32F030探索套件】序列之五 外部中断
RE:【STM32F030探索套件】序列之五 外部中断
再推荐阅读:
STM32F030探索套件开发日志,中文教程,使用问答70篇
RE:【STM32F030探索套件】序列之五 外部中断
回复:【STM32F030探索套件】序列之五 外部中断
RE:【STM32F030探索套件】序列之五 外部中断
回复:【STM32F030探索套件】序列之五 外部中断
回复:【STM32F030探索套件】序列之五 外部中断
RE:【STM32F030探索套件】序列之五 外部中断
回复:【STM32F030探索套件】序列之五 外部中断
Good!欢迎楼主将其他系列也分享出来!
再推荐阅读:
STM32F030探索套件开发日志,中文教程,使用问答70篇
恩 奋斗中
回复:【STM32F030探索套件】序列之五 外部中断
嘻嘻,不错,谢谢啦,
哈哈 加油
回复:【STM32F030探索套件】序列之五 外部中断
看看
回复:【STM32F030探索套件】序列之五 外部中断
看看,谢谢!
回复:【STM32F030探索套件】序列之五 外部中断
东西需要啊..............
RE:【STM32F030探索套件】序列之五 外部中断