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

什么网站做兼职可靠app下载

什么网站做兼职可靠,app下载,建设旅游网站的意义,wordpress自己打包apkNVIC全称 Nested Vectored Controller 嵌套向量中断控制器 它是一种硬件设备,用于管理和协调处理器的中断请求。NVIC可以管理多个中断请求,并按优先级处理它们。当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序&am…

        NVIC全称 Nested Vectored Controller 嵌套向量中断控制器

        它是一种硬件设备,用于管理和协调处理器的中断请求。NVIC可以管理多个中断请求,并按优先级处理它们。当一个中断请求到达时,NVIC会确定其优先级并决定是否应该中断当前执行的程序,以便及时响应和处理该中断请求。

        它可以提高系统的响应速度和可靠性,尤其是在需要及时处理大量中断请求的实时应用程序中。NVIC通常集成在处理器中,可以使用特定的控制寄存器进行编程配置。在嵌入式系统中,程序员需要理解和使用NVIC以确保系统能够正确处理中断请求,同时提高系统的性能和可靠性。

       举个例子:当你在炒菜的时候,来了个电话,你停下炒菜,去接了个电话,然后再回来炒菜。停下炒菜,去接电话。这个过程就叫做中断。

        在STM32中有两个优先级的概念,每个中断源都需要指定这两种优先级。

  • 抢占优先级 Preemption Priority
  • 从优先级(响应优先级) Sub Priority

        其中高抢占优先级的中断可以嵌套低抢占优先级的中断。

        假设 X抢占优先级为X_{P},Y抢占优先级为Y_{P},X响应优先级为X_{S},Y响应优先级位Y_{S}

X_{P}>Y_{P}时,中断Y_{P}和代码,先执行X_{P}

X_{P}=Y_{P}时,若X_{P}先到达,则先执行X_{P}后执行Y_{P}。反之,先执行Y_{P}后执行X_{P}

X_{P}=Y_{P}X_{S}=Y_{S}时,根据它们在中断表中的排位顺序执行。

        可以使用STM32库函数中的NVIC_PriorityGroupConfig()选择优先级,函数的参数为NVIC_PriorityGroup_X

        EXTI(External Interrupt/event Controller)是外部中断/事件控制器。它提供了一种单向的、由外部事件触发的中断机制,可以用于响应外部信号的变化,例如按键、传感器、通信接口等外设的状态变化。EXTI模块可以配置为两种工作模式:事件中断和触发中断。

        事件中断:手头有上的事情做完了,再去执行中断。

        触发中断:直接执行中断。

        所以中断请求的及时性比时间请求的及时性快。

        触发方式有上升沿触发、下降沿触发、双边沿触发、以及低电平触发。

        EXTI模块可以实现多种中断触发方式的支持,中断延时时间短,具有高精度的中断响应能力,并可以与其他外设操作结合使用,是STM32微控制器中实现外部中断的常用模块。

        我们看一下外部中断/时间线路映像图

        从中我们可以看到PA0/PB0/.../PG0——>EXTI0 ,PA1/PB1/.../PG1——>EXTI1,...,PA15/PB15/.../PG15——>EXTI15       

        在本示例用PA0按钮控制LED亮灭,所以等等配置EXTI_Line的时候就要用到EXTI_Line0

//1.配置NVIC

	NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);

//2.配置PA0+PA0外部中断使能

	GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);GPIO_Init(GPIOA,&GPIO_InitStructure);

//3.配置EXTI

	EXTI_InitTypeDef EXTI_InitSturcture;EXTI_InitSturcture.EXTI_Line = EXTI_Line0;EXTI_InitSturcture.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitSturcture.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitSturcture.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitSturcture);

//4.开启PA0和PA0的复用功能的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

到这里PA0的配置就搞定了

void PA0_EXTI0_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;EXTI_InitTypeDef EXTI_InitSturcture;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);GPIO_Init(GPIOA,&GPIO_InitStructure);EXTI_InitSturcture.EXTI_Line = EXTI_Line0;EXTI_InitSturcture.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitSturcture.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitSturcture.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitSturcture);}

//5.配置LED

void Led_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}

        根据中断表,当PA0配置成外部中断,只要PA0出现异常就会跳转到EXTI0_IRQHandler。

        在STM32中,厂家已经把中断的主要部分都编写完了,我们只需要在stm32f103x_it.c中编写自己需要的中断即可。也可以放在自己想要的位置。

void EXTI0_IRQHandler(void)
{if(EXTI_GetITStatus(EXTI_Line0)==SET){GPIOA->ODR ^= GPIO_Pin_1;ClearITPendingBit(EXTI_Line0);}
}

        EXTI_GetITStatus是判断中断是否触发,触发的话返回SET,没出发返回RESET       

        触发后翻转一次PA1的电平。

        然后清除EXTI_GetITStatus,要不然你第一次按下PA0的按钮后,EXTI_GetITStatus返回SET,然后会一直触发中断。

http://www.dinnco.com/news/39136.html

相关文章:

  • 做黄网站用什么域名武汉服装seo整站优化方案
  • 网站内部优化cilimao磁力猫最新版地址
  • 网站下载地址网站首页seo关键词布局
  • 电商网站的程序有哪些网络优化是干什么的
  • 网站注册免费qq360seo关键词优化
  • 广告片拍摄制作公司行者seo无敌
  • 怎么自己做砍价网站个人网站建设
  • 抄底券网站怎么做的seo博客模板
  • 关于政府门户网站建设 以下说法正确的是媒体广告投放平台
  • 平安车险官方保险网站网推什么平台好用
  • 网站如何做网站征求意见专栏东莞网站推广行者seo08
  • 商丘住房和城乡建设网站最近的热点新闻
  • 淮南网站建设云南网络营销seo
  • 学校网站建设推进会百度广告联系方式
  • 白银区住房和城乡建设局网站新媒体运营师证书
  • 怎么做b2c网站腾讯企业邮箱
  • 朝天门户网seo优化工具
  • 做网站哪种语言好发布信息的免费平台
  • 烟台网站制作开发百度软文推广怎么做
  • 域名备案和网站备案是一回事吗怎么创造自己的网站
  • 做设计在哪个网站找图片厦门关键词优化报价
  • 设置自动删除的wordpress汕头百度seo公司
  • 熊岳网站在哪做网络营销主要是学什么的
  • 网站界面设计案例分析嘉兴网络推广
  • wordpress 主题 餐饮苏州手机关键词优化
  • wordpress b2c建站指数平滑法
  • 吉林建站seo技术培训广东
  • 专业的网站首页建设公司深圳网络营销推广中心
  • 陕西咸阳建设银行网站对网络营销的理解
  • 服装网站网络建设和硬件资源公司网页制作流程