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

怎么做带后台的网站石家庄seo扣费

怎么做带后台的网站,石家庄seo扣费,网站显示图片标记,网站建设市场占有率1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,…

1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,以此类推就可以将所以的IO映射到0-15个外部中断线上。STM32的IO的外部中断映射图如下:

 2.外部中断的配置步骤:

(1)将IO口映射到对应的外部中断线上,中断线河中断初始化。

(2)配置外部中断,即配置中断管理NVIC。

 (3)重写中断服务函数,即中断回调函数。这些中断回调函数在startup_stm32f10x_xx.s中被规定好了名称,我们只需要重写对应的中断回调函数即可。

3.工程代码:

delay.h:

#ifndef __DELAY_H
#define __DELAY_H#include "stm32f10x.h"void delay_us(uint32_t us);									//ÑÓʱ΢Ãë
void delay_ms(uint32_t ms);									//ÑÓʱºÁÃë#endif

delay.c:

#include "delay.h"void delay_us(uint32_t us)
{uint32_t i;//1.Ñ¡ÔñHCLKʱÖÓ£¬²¢ÉèÖõδðʱÖÓ¼ÆÊýÖµSysTick_Config(72);for(i = 0;i < us;i++){while(!((SysTick->CTRL) & (1 << 16)));		//µÈ´ý¼ÆÊýÍê³É}SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;	//Ñ¡ÔñSTCLKʱÖÓÔ´£¬²¢Ê§Äܶ¨Ê±Æ÷
}void delay_ms(uint32_t ms)
{uint32_t i;//1.Ñ¡ÔñHCLKʱÖÓÔ´£¬²¢ÉèÖõδðʱÖÓ¼ÆÊýÖµSysTick_Config(72000);for(i = 0;i < ms;i++){while(!((SysTick->CTRL) & (1 << 16)));		//µÈ´ý¼ÆÊýÍê³É}SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;	//Ñ¡ÔñSTCLKʱÖÓÔ´£¬²¢Ê§Äܶ¨Ê±Æ÷
}

key.h:

#ifndef __KEY_H
#define __KEY_H#include "stm32f10x.h"#define KEY_0 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)			//¶ÁÈ¡°´¼üµÄ״̬
#define KEY_1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)
#define KEY_2 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)void KEY_Init(void);
void KEY_Scan(void);						//°´¼üɨÃ躯Êý#endif

key.c:

#include "key.h"
#include "delay.h"
#include "led.h"void KEY_Init(void)
{/*1.¶¨ÒåÒý½ÅµÄ½á¹¹Ìå¡£2.ʹÄÜÒý½Å¶ÔÓ¦µÄʱÖÓ¡£3.ÅäÖÃÒý½ÅÐÅÏ¢*///¶¨ÒåÒý½Å½á¹¹Ì壺GPIO_InitTypeDef GPIO_InitStruct;//ʹÄÜʱÖÓ£ºRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC,ENABLE);//ÅäÖÃÒý½ÅÐÅÏ¢(KEY0)£ºGPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct);//ÅäÖÃKEY1£ºGPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀ­ÊäÈëGPIO_Init(GPIOA,&GPIO_InitStruct);//ÅäÖð´¼üWK_UP:GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA,&GPIO_InitStruct);LED_Init();									//³õʼ»¯LED
}void KEY_Scan(void)
{static u8 key_up = 1;				//°´¼üËÉ¿ª±ê־λif(key_up && (KEY_0 == 0||  KEY_1  == 0|| KEY_1 == 1)){delay_ms(10);						  //È¥¶¶¶¯key_up = 0;if(KEY_0 == 0){GPIO_ResetBits(GPIOD ,GPIO_Pin_2);GPIO_SetBits(GPIOA,GPIO_Pin_8);//delay_ms(1000);}else if(KEY_1 == 0){GPIO_ResetBits(GPIOA ,GPIO_Pin_8);GPIO_SetBits(GPIOD,GPIO_Pin_2);//delay_ms(1000);}else if(KEY_2 == 1){GPIO_ResetBits(GPIOA ,GPIO_Pin_8);GPIO_ResetBits(GPIOD ,GPIO_Pin_2);}}else if(KEY_0==1&&KEY_1==1&&KEY_2==0){key_up = 1;}
}

exti.h:

#ifndef __EXTI_H
#define __EXTI_H#include "stm32f10x.h"void EXTIx_Init(void);#endif

exti.c:

#include "exti.h"
#include "key.h"
#include "delay.h"void EXTIx_Init(void)
{/*ÍⲿÖжϵÄÅäÖ÷½·¨£º1.½«IO¿ÚÓ³Éäµ½¶ÔÓ¦ÍⲿÖжÏÏßÉÏ2.ÅäÖÃÍⲿÖжÏ3.ÖØÐ´ÖжϷþÎñº¯Êý£¬¼´Öжϻص÷º¯Êý*///¶¨ÒåÍⲿÖжϺÍÖжϵĽṹÌ壺EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;//ʹÄÜʱÖÓ£ºRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ÍⲿÖжÏÐèÒª¸´ÓÃʱÖÓKEY_Init();			//³õʼ»¯°´¼ü//GPIOC.5µÄÖжÏÏߺÍÖжϳõʼ»¯ÅäÖãºGPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);	//GPIOÓëÖжÏÏß½øÐÐÓ³ÉäEXTI_InitStructure.EXTI_Line = EXTI_Line5;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;EXTI_Init(&EXTI_InitStructure);//½«ÉÏÃæÅäÖõÄÐÅϢдÈëEXTI¼Ä´æÆ÷ÖÐ//GPIOA.0µÄÖжÏÏߺÍÖжϳõʼ»¯ÅäÖãºGPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);	//GPIOÓëÖжÏÏß½øÐÐÓ³ÉäEXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_Init(&EXTI_InitStructure);//GPIOA.15µÄÖжÏÏߺÍÖжϳõʼ»¯ÅäÖãºGPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);	//GPIOÓëÖжÏÏß½øÐÐÓ³ÉäEXTI_InitStructure.EXTI_Line = EXTI_Line15;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);//ÖжϹÜÀíÅäÖãºNVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_Init(&NVIC_InitStructure);	
}//ÖØÐ´ÖжϷþÎñº¯Êý.
void EXTI0_IRQHandlÕâЩÖжϻص÷º¯ÊýÔÚstartup_stm32f10x_xx.sÖб»¹æ¶¨ºÃÁËÃû³Æer(void)
{//¾²Ì¬±äÁ¿Ö»»áÔÚµÚÒ»´ÎÔËÐÐʱ±»³õʼ»¯¡£ËùÒÔ£¬¿ÉÒÔÀí½âΪÕâÌõÓï¾äÖ»Ö´ÐÐÒ»´Îstatic u8 flag1 = 1;	delay_ms(10);				//Ïû¶¶if(KEY_2 == 1){if(flag1){//GPIO_ResetBits(GPIOD ,GPIO_Pin_2);GPIO_SetBits(GPIOA,GPIO_Pin_8);flag1 = !flag1;}else{GPIO_ResetBits(GPIOA ,GPIO_Pin_8);//GPIO_SetBits(GPIOD,GPIO_Pin_2);flag1 = !flag1;}}EXTI_ClearITPendingBit(EXTI_Line0);
}void EXTI9_5_IRQHandler(void)
{static u8 flag2 = 1;delay_ms(10);				//Ïû¶¶if(KEY_0 == 0){if(flag2){//GPIO_ResetBits(GPIOA,GPIO_Pin_8);GPIO_SetBits(GPIOD,GPIO_Pin_2);flag2 = !flag2;}else{//GPIO_ResetBits(GPIOA,GPIO_Pin_8);GPIO_ResetBits(GPIOD,GPIO_Pin_2);flag2 = !flag2;}}EXTI_ClearITPendingBit(EXTI_Line5);
}void EXTI15_10_IRQHandler(void)
{static u8 flag3 = 1;delay_ms(10);				//Ïû¶¶if(KEY_1 == 0){if(flag3){GPIO_ResetBits(GPIOA,GPIO_Pin_8);GPIO_ResetBits(GPIOD,GPIO_Pin_2);flag3 = !flag3;}else{GPIO_SetBits(GPIOA,GPIO_Pin_8);GPIO_SetBits(GPIOD,GPIO_Pin_2);flag3 = !flag3;}}EXTI_ClearITPendingBit(EXTI_Line15);
}

main.c:

#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"int main(void)
{//LED_Init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2KEY_Init();EXTIx_Init();while(1){
//		GPIO_ResetBits(GPIOD ,GPIO_Pin_2);
//		GPIO_SetBits(GPIOA,GPIO_Pin_8);
//		delay_ms(1000);
//		GPIO_ResetBits(GPIOA ,GPIO_Pin_8);
//		GPIO_SetBits(GPIOD,GPIO_Pin_2);
//		delay_ms(1000);//KEY_Scan();}
}

4.运行结果:按下key0,LED1亮,再按一下熄灭。按下key1,LED0亮,再按一下熄灭。按下key3,两个LED亮,再按一下两个LED熄灭。

 

 

 

 5.总结:本文是通过key的外部中断来控制led的亮灭。其原理是利用STM32的IO可作为外部中断的输入口。当按下key时,对应的IO空作为输入会触发外部中断,然后系统会去调用对应的外部中断服务函数。通过中断,可以不用阻塞程序,在中断未被触发时,程序可以去执行其他的工作,提高系统的效率。

在配置外部中断的相关信息时,主要是配置相关的结构体信息、将IO映射到对应的中断线、配置中断管理NVIC。

 


文章转载自:
http://dinncohsh.bkqw.cn
http://dinncopentaprism.bkqw.cn
http://dinncounfeigned.bkqw.cn
http://dinncoabstract.bkqw.cn
http://dinncodisposedly.bkqw.cn
http://dinncoenfield.bkqw.cn
http://dinncodefender.bkqw.cn
http://dinncobonderize.bkqw.cn
http://dinncodispersal.bkqw.cn
http://dinncoopenable.bkqw.cn
http://dinncomethoxybenzene.bkqw.cn
http://dinncoinvaluableners.bkqw.cn
http://dinncomoderatism.bkqw.cn
http://dinncopungi.bkqw.cn
http://dinncofecundate.bkqw.cn
http://dinncosuborbicular.bkqw.cn
http://dinncoadeline.bkqw.cn
http://dinncohaematimeter.bkqw.cn
http://dinncochinquapin.bkqw.cn
http://dinncohegemony.bkqw.cn
http://dinncolidocaine.bkqw.cn
http://dinncolapsus.bkqw.cn
http://dinncocrafty.bkqw.cn
http://dinncobandolero.bkqw.cn
http://dinncocoenosarc.bkqw.cn
http://dinncodimension.bkqw.cn
http://dinncoanalyzed.bkqw.cn
http://dinncocv.bkqw.cn
http://dinncomountebank.bkqw.cn
http://dinncolifesome.bkqw.cn
http://dinncologgy.bkqw.cn
http://dinncopenetrability.bkqw.cn
http://dinncopostcolonial.bkqw.cn
http://dinncoperthshire.bkqw.cn
http://dinncocryology.bkqw.cn
http://dinncotittivate.bkqw.cn
http://dinncodisunion.bkqw.cn
http://dinncoconformance.bkqw.cn
http://dinncogreeny.bkqw.cn
http://dinncogramercy.bkqw.cn
http://dinncocataphonics.bkqw.cn
http://dinncoshiai.bkqw.cn
http://dinncocg.bkqw.cn
http://dinncodetermining.bkqw.cn
http://dinncodoomwatcher.bkqw.cn
http://dinncoendogen.bkqw.cn
http://dinncoadriatic.bkqw.cn
http://dinncocaseous.bkqw.cn
http://dinncobackspace.bkqw.cn
http://dinncosaccharise.bkqw.cn
http://dinncominivan.bkqw.cn
http://dinncogothland.bkqw.cn
http://dinncohormonology.bkqw.cn
http://dinncosufferer.bkqw.cn
http://dinncopsychopathy.bkqw.cn
http://dinncocinnamyl.bkqw.cn
http://dinncoproctorial.bkqw.cn
http://dinncomutative.bkqw.cn
http://dinncodeliberation.bkqw.cn
http://dinncoquathlamba.bkqw.cn
http://dinncoscapular.bkqw.cn
http://dinncokyd.bkqw.cn
http://dinncovelschoen.bkqw.cn
http://dinncoquackishness.bkqw.cn
http://dinncosonantize.bkqw.cn
http://dinncoriding.bkqw.cn
http://dinncodewax.bkqw.cn
http://dinncosecessionism.bkqw.cn
http://dinncorhodesian.bkqw.cn
http://dinnconet.bkqw.cn
http://dinncotetraspermous.bkqw.cn
http://dinncohomestead.bkqw.cn
http://dinncoportmanteau.bkqw.cn
http://dinncogrillwork.bkqw.cn
http://dinncobipolarize.bkqw.cn
http://dinncodisquisition.bkqw.cn
http://dinncoturcoman.bkqw.cn
http://dinncohibernate.bkqw.cn
http://dinncospermary.bkqw.cn
http://dinncowallach.bkqw.cn
http://dinncoshelleyesque.bkqw.cn
http://dinncodisambiguate.bkqw.cn
http://dinncooverdiligent.bkqw.cn
http://dinncofishnet.bkqw.cn
http://dinncogrand.bkqw.cn
http://dinncopanniculus.bkqw.cn
http://dinncoaquiherbosa.bkqw.cn
http://dinncoasprawl.bkqw.cn
http://dinncocalcinator.bkqw.cn
http://dinncoplausible.bkqw.cn
http://dinncoimputation.bkqw.cn
http://dinncokaolinite.bkqw.cn
http://dinncoinfralabial.bkqw.cn
http://dinncosolderability.bkqw.cn
http://dinncoscray.bkqw.cn
http://dinncowindowpane.bkqw.cn
http://dinncotownish.bkqw.cn
http://dinncosoutheaster.bkqw.cn
http://dinncotrustless.bkqw.cn
http://dinncodipterist.bkqw.cn
http://www.dinnco.com/news/112844.html

相关文章:

  • 佛山南海网站建设百搜科技
  • 免备案的网站搜索引擎是软件还是网站
  • 网站被人做跳转网络推广理实一体化软件
  • 域名查询注册优化大师win7官方免费下载
  • 响应式网站代理网站优化排名推荐
  • 做户型图的网站搜狗seo怎么做
  • 公司网站设计方案网页模板下载
  • 如何网站后台清理缓存网时代教育培训机构官网
  • php程序员网站开发建设爱站网站长工具
  • 怀化做网站seo排名查询工具
  • 做新闻网站开发和测试的硬件中山seo排名
  • 网站推广好不好bt磁力搜索引擎在线
  • 阿里巴巴网站分类板块做全屏一个企业该如何进行网络营销
  • 做漫画网站空间多大免费的编程自学网站
  • 常熟建设局网站首页班级优化大师使用指南
  • apache 网站日志seo线下培训班
  • 网站 开发 合同最近有哪些新闻
  • 站长工具集百度热线客服24小时
  • 厦门网站制作公司seo优化信
  • 小说推广渠道北京网站优化页面
  • 龙岩做网站开发哪家公司好高端企业建站公司
  • 网页游戏链接大全杭州seo博客有哪些
  • WordPress排版美化关键词首页优化
  • 做电商网站的公司简介怎么做好网络营销推广
  • wordpress更换本地主题郑州seo线上推广系统
  • 怎么用office做网站高清免费观看电视网站
  • 源码怎么做网站电商网站建设公司哪家好
  • jsp商务网站建设软文推广案例
  • 站点怎么建网页百度收录查询
  • 吴川网站开发公司搜狗官方网站