工程概要说明:定义一个按键(可自己定义),每按键一次,响应中断一次,在中断函数中LED提示灯变化一次,用户可更加实际情况在中断函数做出相应操作,这里只是一个模板。
一、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-11-18 10:26
有关单片机延时程序
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: mov r0, #09h loop: djnz r0, loop 51 单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r
[单片机]
STM32的Remap
STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明。我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的脚位。 例如,USART3_TX的默认引出脚是PB10,USART3_RX的默认引出脚是PB11;但经过重映射后,可以变更USART3_TX的引出脚为PD8,变更USART3_RX的引出脚为PD9。 同时,STM32还只可以将一个功
[单片机]
STM32启动文件执行步骤分析
一、启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作: 1、初始化堆栈指针 SP=_initial_sp 2、初始化 PC 指针=Reset_Handler 3、初始化中断向量表 4、配置系统时钟 5、调用 C 库函数_main 初始化用户堆栈,从而最终调用 main 函数去到 C 的世界 二、启动文件代码讲解 1.Stack—栈 1 Stack_Size EQU 0x00000400 2 3 AREA STACK, NOINIT, READWRITE, ALIGN=3 4 Stack_Mem SPACE Stack_Size 5 __initial_sp 开辟栈的大小为 0X00000
[单片机]
使用PIC单片机开发需要什么东西
PIC单片机,由Microchip制造。目前,它有许多类型的单片机,具有相同替代方案的国产单片机有英锐恩的EN系列。但这里仅以PIC18F452为例,所以让我们对PIC18F452做一些简单的介绍。 PIC18F452是一个40引脚单片机,每个引脚都有自己的功能,这里不赘述了。 那么,假设我想创建一个关于LED闪烁的项目,这算是一个关于PIC单片机的最简单项目之一,所以用它来介绍PIC18F452可能非常简单、直观。 首先,我需要以下内容,以便我可以使用它们来处理PIC。英锐恩单片机工程师们在另一篇文章中讨论了PIC18F452单片机中另一些可用功能,可以去看一下。 一、MPLAB MPLA
[单片机]
MSP430F5438单片机时钟设置实验程序
//================================================================// // // // 文件: MAIN.C // // 说明: MSP430F5438开发板单片机时钟设置实验程序 // // 设置单片机时钟为外部高频晶振或外部低频晶振+DCO, // // 并将辅助时钟、主时钟和子主时钟通过IO引脚输出, // // 可通过插针将信号引出并用示波器观察。 // // // // MSP430F5438 // // ----------------- // // /|| XIN|- // // | | | XTAL1 = 32.768k // // --|RST
[单片机]
SPI协议内容及STM32 SPI的操作
SPI总线协议简介及内容 简介 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全/半双工,同步的通信总线,并且在芯片的管脚上只占用三/四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI特征 3根/4根线全双工同步传输 8或16位传输帧格式选择 主从操作模式 支持多主操作模式 从模式频率(最大为fpclk/2) 可编程的时钟极性和相位 可编程的数据顺序,MSB在前或LSB在前 可触发中断的专用发送和标志 SPI总线忙状态标志 支持可靠通信的C
[单片机]
AVR单片机I/O口使用的几个注意事项
简介:AVR单片机I/O口使用的几个注意事项 1.先正确设置DDRx方向寄存器,再进行I/O口的读写操作。 2.I/O口复位后的初始状态全部为输入工作方式,内部上拉电阻无效,外部引脚呈现三态高阻输入状态。 3.当I/O口工作在输入方式时,且要读取外部引脚上的电平时,应读取PINxn的值,而不是PORTxn的值。 4.当I/O工作在输入方式时,要根据实际情况使用或不使用内部的上拉电阻。 5.一旦将I/O口的工作方式由输出设置成输入方式后,必须等待1个时钟周期后才能正确读到外部引脚PINxn的值。
[单片机]
单片机在多种波形发生器中的应用
本文利用80C51单片机外接数模转换器和I/V转换电路,由用户通过按键选择输出实验中经常使用到的几种基本波形:方波、锯齿波、正弦波。方波由 80C51单片机内部自带的计数器/定时器产生,并由用户通过小键盘选择波形周期。与微处理器兼容的14位数模转换器MAX7534将数字量转换为模拟量电流信号,通过I/V转换电路得到双极性的锯齿波和正弦波信号,波形保证了他的精度和平滑、稳定。 1 硬件电路设计 80C51单片机时钟电路采用内部方式,外接陶瓷谐振器(频率为12 MHz),微调电容值为30 pF。系统复位采用按键式外部复位方式,复位信号至少保持8 μs以上。通过按键由用户选择要输出的波形,按键选择占用P1.1~P1.7口
[单片机]