01 异常类型
02 NVIC简介
03 优先级的定义
04 中断编程(顺序,寄存器)
STM32的中断非常强大,STM32每个外设可以产生中断,可粗略认为,异常就是中断,中断就是异常。
一:
1.系统异常,体现在内核水平 -3~6
2.外部中断,体现在外设水平
二:
1- 嵌套向量中断控制器
NVIC ,用来控制这么多的外设中断
Nested vectored interrupt controller
两个重要的库文件:core_cm4.h和misc.h
2- 中断
中断使能寄存器
中断清除寄存器
中断使能悬起寄存器
中断清除悬起寄存器
中断有效位寄存器
中断优先级寄存器(8Bit wide)
软件触发中断寄存器
三:
中断优先级寄存器 NVIC_IPRx (0~93)可设置
NVIC->IPRx
四:
程序流程(结合功能框图编写)
1- 使能中断请求
2- 配置中断优先级分组
3- 配置NVIC寄存器,初始化NVIC_InitTypeDef结构体来实现;
4- 编写中断服务函数
英文定义介绍
1- 串口通信的使能TX,SPI的是IE
2- 软件仲裁
3- NVIC_InitTypeDef结构体
1- NVIC_IRQChannel :中断源
2- NVIC_IRQChannelPreemptionPriority:抢占优先级
3- NVIC_IRQChannelSubPriorty:子优先级
4- NVIC_IRQChannelCmd:使能或者失能
4- 中断服务函数 名字都写在启动文件,要与中断向量表名字一样,一般写在stmf4xx_it.c里面
关键字:STM32F429 中断应用 中断控制器
引用地址:
STM32F429--中断应用概览
推荐阅读最新更新时间:2024-11-08 18:44
FreeRTOS在STM32应用中的中断优先级设置问题
一、FreeRTOS中断设置介绍 FreeRTOSConfig.h中定义了两个宏,分别是: configKERNEL_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY configKERNEL_INTERRUPT_PRIORITY用来设置RTOS内核自己的中断优先级。因为RTOS内核中断不允许抢占用户使用的中断,因此这个宏一般定义为硬件最低优先级。configMAX_SYSCALL_INTERRUPT_PRIORITY用来设置可以在中断服务程序中安全调用FreeRTOS API函数的最高中断优先级。优先级小于等于这个宏所代表的优先级时,程序可以在中断服
[单片机]
第13章 STM32F429启动过程详解
13.1 初学者重要提示 1、如果觉得学习本章节吃力的话,推荐看我们早期做的入门视频教程第8章。 http://www.armbbs.cn/forum.php?mod=viewthread&tid=15408 。 13.2 各个版本的启动文件介绍 这里各个版本的意思是指不同的编译器、不同的F4系列对应的启动文件。 13.2.1 不同编译器对应的启动文件 打开我们为本教程提供的工程文件,路径如下: LibrariesCMSISDeviceSTSTM32F4xxSourceTemplates 在这个文件里面有ST官方为各个编译器提供的启动文件。 看了上面的截图,大家会问怎么没有KEIL MDK呢?其实已经被放在了文
[单片机]
STM32F429之GPIO使用
STM32 IO模式 (1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 (2)带上拉输入_IPU——IO内部上拉电阻输入 (3)带下拉输入_IPD—— IO内部下拉电阻输入 (4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电 (5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变 。可以读IO输入电平变化,实现C51的IO双向功能 (6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读
[单片机]
中断及定时器的应用
#include reg51.h #define uchar unsigned char #define uint unsigned int sbit K1=P3^7; uchar i,second_count, key_flag_idx; bit key_state; uchar dsy_code ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delayms(uint ms) { uchar i; while(ms--) for(i=0;i 120;i++); } void key_event_handle() { if(k
[单片机]
6MHz时钟的单片机AT89C51系统时钟中断的应用分析
本文以6MHz时钟的单片机AT89C51系统为例,说明时钟中断的应用: 定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断时比启动时经过了N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的“初值”。下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个机器周
[单片机]
STM32F429 >> 20. CAN 通讯(二)
STM32 的 CAN 外设简介 STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN),它支持 CAN 协议 2.0A 和2.0B 标准。 该 CAN 控制器支持最高的通讯速率为 1Mb/s;可以自动地接收和发送 CAN 报文,支持使用标准 ID 和扩展 ID 的报文;外设中具有 3 个发送邮箱,发送报文的优先级可以使用软件控制,还可以记录发送的时间;具有 2 个 3 级深度的接收 FIFO,可使用过滤功能只接收或不接收某些 ID 号的报文;可配置成自动重发;不支持使用 DMA 进行数据收发。 STM32 的 CAN 架构剖析 STM32 的有两组 CAN 控制器,其中 CAN1 是主
[单片机]
PIC单片机多中断处理技术的应用与研究
引言 PIC系列单片机中断源已经达到14个.可谓相当丰富;但同时也带来了一些难题:在处理多中断时不具备处理“高级优先处理”能力的问题,如此多的中断源在处理时很容易产生中断冲突,如何有效的处理中断到达时的时序,其算法应该如何实现成了首先需要解决的问题。 1 中断处理技术 对于PIC系列单片机,其设计上虽然有很多中断,但是并没有规定中断的优先级。当遇到中断的时候,不做任何判断,而是先把指针指向0004H(中断起始地址),至于接下来如何操作则完全交给用户“软处理”完成。其中断时序图如下: 图1 INT引脚中断时序图 中断现场的保护是中断技术中一个很重要的环节。对于PICl6F87X单片机,在进人中断
[单片机]
STM32F429 >> 15. IWDG_独立看门狗
STM32 有两个看门狗,一个是独立看门狗,另一个是窗口看门狗 独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。 IWDG 功能框图 ①. 独立看门狗时钟 独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效。LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ。
[单片机]