当前位置: 首页 > news >正文

深圳市建设科技促进中心网站网页设计用什么软件做

深圳市建设科技促进中心网站,网页设计用什么软件做,滁州网站开发czesou,wordpress 移动站文章目录零、前言一、NVIC中断优先级分组1.1 中断的管理方法1.2 抢占优先级&相应优先级的区别1.3 举例1.4 特别说明1.5 中断优先级分组函数二、NVIC中断优先级设置2.1 中断设置相关寄存器2.2 中断设置优先级2.2.1 中断优先级控制的寄存器组 IP[240]2.2.2 中断使能寄存器组 …

文章目录

  • 零、前言
  • 一、NVIC中断优先级分组
    • 1.1 中断的管理方法
    • 1.2 抢占优先级&相应优先级的区别
    • 1.3 举例
    • 1.4 特别说明
    • 1.5 中断优先级分组函数
  • 二、NVIC中断优先级设置
    • 2.1 中断设置相关寄存器
    • 2.2 中断设置优先级
      • 2.2.1 中断优先级控制的寄存器组 IP[240]
      • 2.2.2 中断使能寄存器组 ISER[8]
      • 2.2.3 中断失能寄存器组 ICER[8]
      • 2.2.4 中断挂起/解挂控制寄存器 ISPR[8]和ICPR[8]
      • 2.2.5 中断激活标志位寄存器组 IABR[8]
    • 2.3 中断参数初始化函数
  • 三、NVIC总结

零、前言

  • CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。
  • STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分
    — STM32F40xx/STM32F41xx总共有92个中断。
    — STM32F42xx/STM32F43xx则总共有96个中断
  • STM32F40xx/STM32F41xx的92个中断里面,包括10个内核中断和82个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是这82个可屏蔽中断。
    在这里插入图片描述

一、NVIC中断优先级分组

1.1 中断的管理方法

首先,对STM32中断进行分组,组0~4。同时,对每个中断设置-一个抢占优先级和一一个响应优先级值。

分组配置是在寄存器SCB->AIRCR中配置:

在这里插入图片描述

一、分组有什么意义
系统只设置一次,一旦分组确定下来后[7:4]的分配情况也就确定下来了,即IP的分配结果

二、抢占优先级和响应优先级是干什么的

1.2 抢占优先级&相应优先级的区别

  • 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
  • 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。
  • 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
  • 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

抢占优先级:数字越低级别越高,0可以打断1的中断
响应优先级:在抢占优先级相同的情况下生效,如果两个中断同时发生(抢占优先级一样),哪个响应优先级级别高,则先进行中断(不能进行打断)
如果都相同,则看那个先发生

1.3 举例

假定设置中断优先级组为2,然后设置中断3(RTC中断)的抢占优先级为2,响应优先级为1中断6 (外部中断0 )的抢占优先级为3,响应优先级为0。中断7 ( 外部中断1 )的抢占优先级为2,响应优先级为0。

优先级顺序:中断7>中断3>中断6

1.4 特别说明

一.般情况下,系统代码执行过程中,只设置次中断优先级分组,比如分组2,设置好分组之后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果。

因为IP分配情况会紊乱

1.5 中断优先级分组函数

void NVIC PriorityGroupConfig(uint32_ _t NVIC_ PriorityGroup);

void NVIC_ PriorityGroupConfig(uint32_ t NVIC_ PriorityGroup)
{assert_ param(IS_ NVIC_ PRIORITY_ GROUP(NVIC_ PriorityGroup));SCB->AIRCR = AIRCR_ VECTKEY_ MASK | NVIC_ PriorityGroup;
}
NVIC_ PriorityGroupConfig(NVIC_ PriorityGroup_ _2);

二、NVIC中断优先级设置

2.1 中断设置相关寄存器

typedef struct
{__IO uint32_t ISER[8];                 //中断使能寄存器组uint32_t RESERVED0[24];__IO uint32_t ICER[8];                 //中断失能寄存器组uint32_t RSERVED1[24];__IO uint32_t ISPR[8];                 //中断挂起寄存器组uint32_t RESERVED2[24];__IO uint32_t ICPR[8];                 //中断解挂寄存器组uint32_t RESERVED3[24];__IO uint32_t IABR[8];                 //中断激活标志位寄存器组uint32_t RESERVED4[56];__IO uint8_t  IP[240];                 //中断优先级控制的寄存器组uint32_t RESERVED5[644];__O  uint32_t STIR;                    
}  NVIC_Type;

2.2 中断设置优先级

2.2.1 中断优先级控制的寄存器组 IP[240]

中断优先级控制的寄存器组:IP[240]
全称是: Interrupt Priority Registers
240个8位寄存器,每个中断使用一-个寄存器来确定优先级。STM32F40x系列一共82个可屏蔽中断,使用IP[81]~IP[0]。
每个IP寄存器的高4位用来设置抢占和响应优先级(根据分组),低4位没有用到。

void NVIC_ Init(NVIC_ InitTypeDef* NVIC_ InitStruct);

入口参数结构体NVIC_ InitTypeDef的定义

typedef struct
{uint8_t NVIC_IRQChannel;                    //确定是哪一个中断(82中)  uint8_t NVIC_IRQChannelPreemptionPriority;  //设置抢占优先级uint8_t NVIC_IRQChannelSubPriority;         //设置相应优先级FunctionalState NVIC_IRQChannelCmd;         //使能中断
} NVIC_InitTypeDef;

2.2.2 中断使能寄存器组 ISER[8]

中断使能寄存器组:ISER[8]
作用:用来使能中断
32位寄存器,每个位控制一个中断的使能。STM32F40x只有82个可屏蔽中断,所以只使用了其中的ISER[O]~ISER[2]。
ISER[0]的bit0bit31分别对应中断031。ISER[1]的bit027对应中断3263; ISER[2]的bit017对应中断6481;

void NVIC Init(NVIC_ InitTypeDef* NVIC lnitStruct);

  FunctionalState NVIC_IRQChannelCmd; 

2.2.3 中断失能寄存器组 ICER[8]

作用:用来失能中断
32位寄存器,每个位控制一个中断的失能。STM32F40x 只有82个可屏蔽中断,所以只使用了其中的ICER[0]和ICER[1]。
ICER[0]的bit0 ~ bit31分别对应中断0 ~ 31。ICER[1]的bit0 ~ 27对应中断32 ~ 63 ; a器ICER[3] 的bit0 ~ 17对应中断64 ~ 82 ;
用法和ISER一样

2.2.4 中断挂起/解挂控制寄存器 ISPR[8]和ICPR[8]

作用:用来挂起/解挂中断

static 8 INLINE void NVIC SetPendingIRQ(IRQn_ Type IRQn) ;
static 8 INLINE uint32 t NVIC GetPendinglRQ(IRQn_ Type IRQn) ;
static 8 INLINE void NVIC_ ClearPendingIRQ(IRQn Type IRQn)

2.2.5 中断激活标志位寄存器组 IABR[8]

作用:只读,通过它可以知道当前在执行的中断是哪一个

如果对应位为1,说明该中断正在执行。
static INLINE uint32_ t NVIC_ GetActive(IRQn Type IRQn)

2.3 中断参数初始化函数

void NVIC_ Init(NVIC_ InitTypeDef* NVIC_ InitStruct);

typedef struct
{uint8_ t NVIC_ IRQChannel; //设置中断通道uint8_ t NVIC_ IRQChannelPreemptionPriority;//设置抢占优先级uint8_ t NVIC_ IRQChannelSubPriority; //设置响应优先级FunctionalState NVIC_ IRQChannelCmd; //使能/使能
} NVIC_ InitTypeDef;

实例:
NVIC_ InitTypeDef NVIC_ InitStructure;
NVIC_ InitStructure.NVIC_ IRQChannel = USART1_ IRQn;// 串口1中断
NVIC_ InitStructure.NVIC_ IRQChannelPreemptionPriority=1 ;// 抢占优先级为1
NVIC_ InitStructure.NVIC_ IRQChannelSubPriority= 2;//子优先级位2
NVIC_ InitStructure.NVIC IRQChannelCmd = ENABL E;//IRQ通道使能
NVIC_ Init(&NVIC_ InitStructure); // 根据上面指定的参数初始化NVIC寄存器

三、NVIC总结

中断优先级设置步骤
第一步:系统运行后先设置中断优先级分组。调用函数:
void NVIC_ PriorityGroupConfig(uint32_ t NVIC_ PriorityGroup);
整个系统执行过程中,只设置一次中断分组。
第二步:针对每个中断,设置对应的抢占优先级和响应优先级
void NVIC Init(NVIC InitTypeDef* NVIC InitStruct);
第三步:如果需要挂起I解挂,查看中断当前激活状态,分别调用相关函数即可。

中断实验
在这里插入图片描述
在这里插入图片描述

http://www.shuangfujiaoyu.com/news/61782.html

相关文章:

  • 专门做母婴的网站有哪些黑帽seo365t技术
  • 衡水电子商务网站建设公司网页设计
  • dede电影网站源码培训心得体会1000字
  • 最新某地方装修门户源码 php装饰公司程序 dede行业网站模板优化营商环境心得体会
  • 网站建设介绍ppt英语seo什么意思
  • 揭秘低价网站建设危害百度地图在线查询
  • 网站备案类型今日油价92汽油价格调整最新消息
  • 做淘宝客网站需要多大带宽适合交换友情链接的是
  • 网站开发最好用什么软件seo网站优化快速排名软件
  • 免费的网站发布seo外链发布工具
  • 创办网站需要哪些步骤关键词推广营销
  • 温州网站制作系统如何提高自己的营销能力
  • 宜兴做网站的联系方式网络营销的三大核心
  • 淮南网站建设公司网络推广的优势
  • 深圳外贸英文网站设计公司哪家好适合奖励自己的网站免费
  • 网站建设设计百度推广代理公司
  • 滨州做企业网站网络营销推广公司
  • 有服务器和网站代码了 怎么建站怎么把产品放到网上销售
  • 陕西省交通建设集团公司门户网站武汉网站制作
  • 网络服务提供者对在业务活动中收集的公民个人电子信息青岛关键词推广seo
  • 做网站需要多少资金贵阳seo网站推广
  • 和城乡建设部网站河北高端网站建设
  • 建一个个人网站营销策划品牌策划
  • 设计一个网站页面需要多少钱全国疫情地区查询最新
  • 网站建设氵金手指下拉十二网络推广seo怎么做
  • 木樨园网站建设公司湖南seo推广软件
  • 杭州网站开发外包公司搜狗网页搜索
  • 淮安高端网站制作企业网站的域名是该企业的
  • 电影网站嵌入广告怎么做Java站长之家站长工具综合查询
  • 小程序 网站 开发googleplay