STMCU小助手
发布时间:2021-11-24 13:24
|
Ⅰ、概述 j' p$ E, `/ C EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种。因此,EXIT在实际项目开发中也是比较常见的一种。 STM32F0中外部中断EXIT属于中断和事件的章节,请看参考手册第十二章,但需要配合系统配置控制器(System configuration controller)进行操作,为中断分配引脚,详情请看参考手册第十章。! f- }6 L6 M9 _0 A& j( L Ⅱ、下载 文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。/ ~; ?7 B: A% d2 N7 \ ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。 今天的软件工程下载地址(360云盘):& [6 \8 T% i9 g$ K) ]# U& d# w https://yunpan.cn/cRJDddvF4hdXE 访问密码 f0af9 i5 @7 s. D k4 }- @: v9 d STM32F0xx的资料可以在我360云盘下载: https://yunpan.cn/cS2PVuHn6X2Bj 访问密码 8c378 Z$ \0 ~/ p. V2 f5 P U& B& l Ⅲ、准备工作5 Q) J6 v F1 V; y3 P9 |7 R9 M" f" G 对于EXIT的编程,建议大家准备F0的参考手册第十章和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。 今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。1 E b1 K5 n+ ?3 [* Y # ]* N @! _, V Ⅳ、外部中断原理 其实EXIT外部引脚中断的原理很简单,配置相应引脚为输入模式,根据电路看是否需要上下拉电阻,将该引脚通过SYSCFG配置为中断线,再配置NVIC,编写中断处理的事情即可。" p" u* {0 Y( E4 Z$ B8 G 4 U B3 U$ x/ {5 \
Ⅴ、代码描述/ z* A, Q; V' k 请下载软件工程查看源代码,结合源代码理解总结的每一点。 ①RCC时钟 . {4 l% G/ x: E
( y" P4 V) K" h8 _9 R7 b% e6 i 该函数位于bsp.c文件上面;, m7 _1 e5 T. V8 u8 } 我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。 4 t# q9 w* Y/ a: p/ D" O9 \; e2 U 注意: 外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】7 { V! [2 C7 Y; n 我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC. ②EXIT配置 ( t/ P3 t# {: t5 q/ E. `" F6 u
7 P( T& d9 \. `2 k9 t8 i6 ^$ S- c" A2 ~+ e 该函数位于bsp.c文件下面;3 N0 J) z+ l- P2 [; n. a. z 注意:: v2 S) x) b5 e, W6 V' | 4 R, N5 N' z; r) _ 该函数将EXIT分为三部分,引脚的基本配置、外部中断线配置、系统控制器配置,每一个步骤都需要,否则不会响应中断。 ) O( T9 y: T8 o' E& B9 j* n, V \ ③NVIC配置' M, F6 t" C# m+ O/ Y 6 K4 v- t1 ]7 E0 @, [' b8 Q( ^* O
7 u. m* ]) l* q8 R3 c0 r: S 该函数位于bsp.c文件下面; 要响应中断,就需要为其分配中断优先等级。 注意: 外部中断通道入口不是每一个中断分配一个入口,根据手册和参考资料可以看得出来分配为:EXTI0_1_IRQn、EXTI2_3_IRQn、EXTI4_15_IRQn;意思就是外部中断0-1为同一个的入口,其他原理相同。 ④中断函数" Q% t" [0 }3 v9 D- a' ]9 o ! Y# B/ J/ b1 @5 |0 r! e1 A
该函数位于stm32f0xx_it.c文件下面;" C0 e7 D+ g% ?; S6 K8 E. ]7 F * L" p3 i& }2 j2 T2 u- c2 G 这里我的操作相对比较简单,按键一次,中断一次。按下按键,延时消抖,变化LED一次,等待按键释放,最后清除中断标志位。 0 J3 C2 p' I2 l 注意:9 L; @7 ~: ]2 `. e+ X 8 g4 ^4 ~: w" c) h4 G 图中红色标记才是在实际应用中的重点,如果一个大的工程,有其他人也参与进来了,或者项目有部分代码是移植之前的,很有可能开启了其他中断,如果这里不加这一句判断,很可能程序会死在中断里面。 ! J2 X( S7 D$ G6 Z; q Ⅵ、说明 或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。; {' A5 h2 {! `* J6 ~ . c, [0 g3 j. h t+ e2 S 本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。 今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。 . B/ p8 d% x) P4 u% Y* G |
【评分有奖】STM32 AI Sidekick聊天工具上线,快来体验一下吧!
ST TouchGFX 实操系列视频+如何选择正确的帧缓冲区策略
ST TouchGFX 实操系列视频++如何添加图像
ST TouchGFX 实操系列视频+如何进行屏幕转换
ST TouchGFX 实操系列视频+控件的淡入淡出
ST TouchGFX 实操系列视频+移动控件的三种方法
ST TouchGFX 实操系列视频+如何创建用户界面(UI)
ST TouchGFX 实操系列视频+如何安装TouchGFX Designer和STM32Cube软件环境
【经验分享】STM32F1 GPIO工作原理
【经验分享】STM32F0xx_DMA收发USART数据配置详细过程
微信公众号
手机版