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

专业做汽车的网站长沙官网seo收费

专业做汽车的网站,长沙官网seo收费,网络营销的特点有哪些特点,仿豆瓣WordPress主题1.EXTI简介 EXTI是External Interrupt的缩写,指外部中断。在嵌入式系统中,外部中断是一种用于处理外部事件的机制。当外部事件发生时(比如按下按钮、传感器信号变化等),外部中断可以立即打断正在执行的程序&#xff0…

1.EXTI简介

EXTI是External Interrupt的缩写,指外部中断。在嵌入式系统中,外部中断是一种用于处理外部事件的机制。当外部事件发生时(比如按下按钮、传感器信号变化等),外部中断可以立即打断正在执行的程序,转而执行一个特定的中断服务程序(ISR),以响应和处理外部事件。

在大多数嵌入式系统中,外部中断可以配置为上升沿触发、下降沿触发、高电平触发、低电平触发等不同的触发方式,以适应不同的外部事件类型。外部中断通常用于实时性要求较高的应用,如实时控制系统、传感器数据采集等。

在使用外部中断时,需要了解具体的硬件平台和编程语言的相关知识,以确保正确地配置和处理外部中断。

2.EXTI功能框图讲解

 首先,中断源从输入线进入,总共有20根中断/事件线,每一条线对应着PXx,例如EXTI0的输入源可以是PX0(X为A、B、C、D、E、F、G、H、I),因为GPIO端口有16个,所以x的取值在0-15,EXTI16的输入源是PVD输出,EXTI17的输入源是RTC闹钟事件,EXTI18的输入源是USB唤醒事件,EXTI19的输入源是以太网唤醒事件(只适用互联型)。

通过外部中断配置寄存器1(AFIO_EXTICR1)配置来选择输入线,每一个EXTIx有四个位,可以选择16个GPIO端口。

 

选择输入线和输入源后进入边缘检测电路 ,边缘检测电路通过寄存器上升沿触发选择寄存器(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)选择触发方式。

通过配置的触发方式,边缘检测电路输出“1”给到或门,然后另一个输入由软件中断事件寄存器输入,当软件中断事件寄存器相应位为’0’时,写’1’将设置EXTI_PR中相应的挂起位,是否相应中断请求由后面的总开关中断屏蔽寄存器(EXTI_IMR)决定,这样或门输入两个“1”,或门也输出“1”,将这个“1”输入给请求挂起寄存器就是中断,输入给与门就是事件,然后请求挂起寄存器输出“1”给与门,然后中断屏蔽寄存器(EXTI_IMR)对应位置“1”,开放来自线x的中断请求,与门输出“1”给到NVIC中断控制器,NVIC在内核中,由内核响应这个中断,内核就会去查找相应的中断服务函数ESR。

3.GPIO中断实例

3.1.初始化GPIO 

 通过原理图查看按键对应的GPIO端口

通过原理图可以知道按键SW2连接的是GPIO的PA0,那么我们需要初始化PA0,并且将PA0连接到EXTI0。

初始化GPIO

  GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);

3.2.初始化EXTI用于产生中断/事件

 初始化EXTI方法和初始化GPIO相似,首先打开系统时钟,然后选择输入线,通过函数GPIO_EXTILineConfig()配置,接着通过EXTI_InitTypeDef结构体定义一个变量,通过这个变量配置EXTI的输入线、模式、触发方式,然后将配置的结构体变量的地址传递给初始化EXTI函数EXTI_Init()。

    EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);

3.3.初始化NVIC

 初始化NVIC和初始化GPIO和初始化EXTI相似,都需要通过定义结构体变量去配置相应参数。首先定义结构体变量NVIC_InitStructure。然后设置中断优先级级分组,通过函数NVIC_PriorityGroupConfig(),有5个组

没个组有主优先级和次优先级,我们配置中断优先级的时候stm32使用了四个位,当主优先级只是用0位时,取值就是0,次优先级就使用四个位,取值就是0-15。同理,当主优先级只是用1位时,取值就是0-1,次优先级就使用3个位,取值就是0-7,以此类推。然后通过定义的结构体变量配置中断源,抢占优先级,子优先级。注意这里的中断源配置,如果是GPIO0-4都是单独的EXTIx_IRQn,但是如果你说4以后的端口,就会使用到EXTI9_5_IRQn和EXTI15_10_IRQn。然后将配置的结构体变量的地址传递给初始化NVIC初始化函数NVIC_Init()。

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

3.4.编写中断服务函数

 通断服务函数都放在stm32f10x_it.c这个文件里面,中断服务函数的名字已经定义好了,放在startup_stm32f10x_hd.s文件的向量表中。通过if语句判断函数EXTI_GetITStatus()的返回值来判断是否产生中断,如果产生中断EXTI_GetITStatus()返回值位1。通过宏定义LED_G_TOGGLE

#define LED_G_TOGGLE     {GPIOB->ODR ^= GPIO_Pin_0;}

通过控制端口输出数据寄存器ODR异或运算控制LED交替,异或运算符与1异或改变,与0异或不变。为了防止一直在中断里面,最后需要清除中断位,通过函数 EXTI_ClearITPendingBit()。

void EXTI0_IRQHandler(void)
{if(EXTI_GetITStatus(EXTI_Line0) != RESET){LED_G_TOGGLE;}EXTI_ClearITPendingBit(EXTI_Line0);
}

3.5.main函数

 最后,通过main函数调用前面写的函数

int main(void)
{LED_GPIO_RCC();LED_GPIO_Config();EXIT_Key_Config();while(1){}
}

http://www.zhongyajixie.com/news/34885.html

相关文章:

  • 漳州seo建站百度app打开
  • 如何做网站的内链优化买链接网
  • 沈阳网站制作找网势科技郑州网站推广优化
  • 深圳物流公司电话大全seo优化论坛
  • 在国外做盗版电影网站抖音搜索关键词排名
  • wordpress 链接转换东莞搜索网络优化
  • 岳阳做公司网站市场营销方案范文
  • 网站权限设计方案排名前十的小说
  • 广州企业建站网站广州网站优化多少钱
  • 青州做网站的网络公司郑州网络运营培训
  • 扬州专业外贸网站建设推广2022年新闻热点摘抄
  • 做推广任务网站上海专业seo服务公司
  • dedecms网站logo抖音seo招商
  • wordpress微信机器人下载seo是怎么优化的
  • 如何做传奇私服网站防止恶意点击软件管用吗
  • 企业网站建设维护方案网页设计框架图
  • 广州做网站海珠新科上海seo博客
  • 网站文章怎么做内链seo外链推广平台
  • 什么是企业网站营销网站建设步骤流程详细介绍
  • 杭州网站的特点济南做网站公司
  • 老薛主机做两个网站互联网营销的方式有哪些
  • 怎么做网站关键字搜索网络服务有哪些
  • 怎样做网站图清晰网站规划
  • 建设网站后如何做后台可以发广告的100个网站
  • 大连做网站孙晓龙在线一键建站系统
  • 郑州网站建设公司制作定制软件外包公司排名
  • 大气门户网站外贸网络推广公司
  • 成都哪家做网站好排名优化价格
  • 广州市 住房建设局网站首页长春做网站推广的公司
  • 做网站怎么注册域名西安网站到首页排名