今天讲解“STM32F103 EXIT中断”,关于EXIT中断里面有很多学问,以我的工作经验来看,有几点是特别容易犯错的,我会在文章最后重点讲解。
每次讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。
今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。
本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友分享、关注和推广一下微信公众号,增加一下人气。
每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cPhvyer3vIwXh 访问密码 57e1
STM32F10x的资料可以在我360云盘下载:
https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90
工程概要说明:定义一个按键(可自己定义),每按键一次,响应中断一次,在中断函数中LED提示灯变化一次,用户可更加实际情况在中断函数做出相应操作,这里只是一个模板。
关于“STM32F103 EXIT中断” 我把重要的几点在下面分别讲述,若不明白,请关注微信公众号“EmbeddDeveloper”查阅或留言。
一、RCC时钟配置
该函数位于在bsp.c文件下面;
使能RCC时钟:RCC_APB2Periph_GPIOC 和 RCC_APB2Periph_AFIO (针对该工程主要的两项,引脚PC13和复用功能)。
二、EXIT配置
该函数位于在bsp.c文件下面;
对应外部中断(按键)的引脚,这里两处必须匹配。
三、NVIC配置
该函数位于在bsp.c文件下面;
对EXIT的中断控制器进行配置
注意:
EXTI15_10_IRQn包含EXTI10 ---EXTI15共6条外部中断线,也就是说共用一个中断入口,需要在中断里面判断是哪一个中断。
四、中断函数
该函数位于在stm32f10x_it.c文件下面;
这里需要判断是哪个中断,这里的操作根据自己实际情况条添加代码。
五、今天的重点提示
A.外部中断IO
STM32所有的IO引脚都可以配置成外部中断引脚,见手册:
B.中断入口
程序中“EXTI9_5_IRQHandler” 和 “EXTI15_10_IRQHandler”可能开始学习的人不明白,其实很简单,就是综合了几个EXIT中断,入口都在这里。
C.细心的朋友会发现我“中断函数”中有一句else{EXTI->PR = 0xFC00;},估计很多人都不明白。这里告诉大家,这句else其实很重要,特别是正式工作的人(我工作亲身经验),为什么重要,在与移植工程时,或许之前的工程开启了其他中断,但移植过后没有屏蔽,从而导致进入中断,而中断标志位又没有清除掉(else就是清除标志位),致使不停止中断中执行。
关键字:STM32 EXIT中断
引用地址:
STM32_EXIT中断
推荐阅读最新更新时间:2024-03-16 15:37
STM32 F4 (8) Systick滴答定时器-延时函数讲解
SysTick定时器适用所有的STM32开发板,这节课讲解SysTick定时器产生的 延时函数,STM32开发指南5.1小节有有关SysTick相关的 介绍,在程序中在delay文件夹中,SysTick定时器是内核级别的,这个定时器很简单,主要用来延时和用作实时系统里面的心跳时钟 可以节省单片机资源,SysTick定时器就是系统滴答定时器,是一个24位的倒计数定时器,当他计数到0时就会从RELOD寄存器(重装载寄存器)重新装载计数初值,由此循环。只要 不把他的使能 位清除,他就会永不停息的工作,即使在睡眠模式下也能正常工作。 SysTick定时器它是捆绑在NVIC中,可以产生SysTick异常,SysTick也可以产生中断 ,
[单片机]
STM32 TALK | 无感FOC方案原理机器控制难点分析
1、电机控制方案的分析与选择 在永磁电机的无感控制策略中,主要有两大类:(1)无感方波控制;(2)无感FOC控制。 先谈谈无感方波控制。在无感方波控制中,主要是利用反电动势过零点的方式来得到换相信号(反电动势过零点的信号与电机的换相信号在相位上相差30°电角度)。为了得到反电动势过零的信号,通常采用两种方式:(1)硬件比较器法;(2)软件端电压采样法。这两种方法的原理大致是相同的,都是将检测得到的端电压的值与电机中性点电压进行比较来得到反电动势过零点的信号。在无感方波控制中,该检测手段的好坏将决定了控制性能的好坏。但无感方波控制通常会伴随着噪声大、转矩脉动大等缺点,因此仅在一些对电机无感控制要求不是很高的场合中较为适用。
[单片机]
STM32的ADC及内部温度传感器的使用
STM32自带1-3个ADC模块,采样精度达到了12位,比起当年使用的AVR单片机的10位来说,上了个小档次了~本测试程序采用了ADC DMA的中断方式,这样CPU就可以把ADC的任务交给DMA这个勤劳肯干的部下了,当DMA完成了一次任务之后会产生中断,告诉CPU可以来查收结果了!DMA也是在嵌入式系统中非常常用的,例如在LCD中,数据拷贝中等。。。在STM32F103RBT6中,ADC1和ADC2共用一组管脚 总体编程思路和顺序如下: 1.初始化RCC相关,使得系统有时钟,功能模块如ADC、DMA有时钟。 2.GPIO相关初始化,比如常用的指示灯,ADC的管家要设置为输入等。 3.NVIC向量中断的配置,
[模拟电子]
基于STM32和HAL库创建一个IIC设备
1 简述 使用面向对象的编程思想封装IIC驱动,将IIC的属性和操作封装成一个库,在需要创建一个IIC设备时只需要实例化一个IIC对象即可,本文是基于STM32和HAL库做进一步封装的。 底层驱动方法不重要,封装的思想很重要。在完成对IIC驱动的封装之后借助继承特性实现AT24C64存储器的驱动开发,仍使用面向对象的思想封装AT24C64驱动。 2 IIC驱动面向对象封装 iic.h头文件主要是类模板的定义,具体如下: //定义IIC类 typedef struct IIC_Type { //属性 GPIO_TypeDef *GPIOx_SCL; //GPIO_SCL所属的GPIO组(如:GPIOA)
[单片机]
如何设计在stm32中的复位电路?
说到复位,我们都不会陌生,系统基本都有一个复位按键。复位的种类有很多:上电复位、掉电复位、复位引脚复位、看门狗复位、软件复位等。本文探讨的就是在stm32中复位电路如何设计。 STM32介绍 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex®-M0,M0+,M3, M4和M7内核在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。 新系列采用LQFP64、LQFP100和LFBGA
[单片机]
STM32 Keil-MDK工程模板 V3.5 固件库
原来一直在用3.3 的固件库,3.4 的出来好久了 也没顾得上更新如今的3.5 的库再也忍不住了,建好了个新的V3.5的工程模板 用的是最新的MDK4.20 . 3.5 到3.3 对于一般用户而言 基本没有什么 界面的上变革 目前看来好像仅仅改变了一些定义所处的文件位置,看起来跟合理些,SD 等的驱动更加稳定。我一直很是喜欢STM32的官方固件库 完好的遵循ANSI 风格,代码编写严谨,还有一点C语言面向对象的感觉。更重要的是开源,我想这才是能流行起来的原因。 工程移植了 KEIL 的图形化配置向导 stm32_Init.c 工程路径 Cortex_M3_Project_V3.5\STM32\STM32F10X_HD\RVMDK
[单片机]
STM32 串口驱动,分层通信
以前在使用串口的时候都是直接使用中断,每收发一个字节都要进一次中断,然后直接在中断进行封包,现在做了一个简单的分层设计,其实这个设计还是驱动设计,后期将逻辑层划分再细致一点,争取做到和linux的shell类似的分层。 软件分层如下 驱动层:串口、DMA、初始化,串口只开启接收空闲中断,DMA中断不开启。 缓冲区:利用malloc和free函数创建的链表,缓冲区管理有两个,一个是接收缓冲区,每次进入接收空闲中断就把数据扔到接收缓冲队列里面去;另一个是发送缓冲区,发送缓冲区无逻辑,这只是一个数据结构。 示意图中的数据指针实际上用的是uint8 数组,当然,第一个数据完全可以塞到第二个数据里面,但是如果使用的是M0芯
[单片机]
STM32_RTC闹钟
今天讲解“STM32F103 RTC闹钟”,说起“闹钟”大家肯定不会陌生,基本上我们每天都在接触。今天说的“RTC闹钟”就是我们现实生活中的闹钟,只是今天站在技术知识的角度来看待“闹钟”。由于这一阶段定位的是基础的知识,所以今天提供的软件例程也是相对简单一点的,但明白今天的知识,相信自己都会写闹钟程序了,后期我会更新日历及闹钟的综合知识。 今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友分享、关注和推广一下微信公众号,增加一下人气。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证
[单片机]