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

自己做的网站怎么链接火车头采集一个网站可以做几级链接

自己做的网站怎么链接火车头采集,一个网站可以做几级链接,关键词优化案例,甜品制作网站1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入#xff0c;点亮LED灯。在STM32的19个外部中断中#xff0c;0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如#xff0c;外部中断线0对应着GPIOA.0-GPIOG.0#xff0c;…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.hvoid delay_us(uint32_t us); //ÑÓʱ΢Ãë void delay_ms(uint32_t ms); //ÑÓʱºÁÃë#endifdelay.c: #include delay.hvoid 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.hvoid 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_01KEY_11KEY_20){key_up 1;} } exti.h: #ifndef __EXTI_H #define __EXTI_H#include stm32f10x.hvoid EXTIx_Init(void);#endif exti.c: #include exti.h #include key.h #include delay.hvoid 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.hint 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.运行结果按下key0LED1亮再按一下熄灭。按下key1LED0亮再按一下熄灭。按下key3两个LED亮再按一下两个LED熄灭。 5.总结本文是通过key的外部中断来控制led的亮灭。其原理是利用STM32的IO可作为外部中断的输入口。当按下key时对应的IO空作为输入会触发外部中断然后系统会去调用对应的外部中断服务函数。通过中断可以不用阻塞程序在中断未被触发时程序可以去执行其他的工作提高系统的效率。 在配置外部中断的相关信息时主要是配置相关的结构体信息、将IO映射到对应的中断线、配置中断管理NVIC。
http://www.w-s-a.com/news/658378/

相关文章:

  • 济南网站制作哪家专业做网站怎样投放广告
  • 辽宁网站推广短视频运营培训学费多少
  • 拼多多网站怎么做翻译 插件 wordpress
  • 做网站运营的职业生涯规划wordpress分类显示图片
  • 网站建设与制作总结沈阳百度广告
  • 网站管理系统 手机会员制网站搭建wordpress
  • 做物品租赁网站清新wordpress主题
  • 优秀专题网站家居企业网站建设市场
  • 中山市有什么网站推广wordpress轻应用主机
  • 洗头竖鞋带名片改良授权做网站不贵整个世界
  • 设计电子商务网站建设方案微信如何开发自己的小程序
  • 建设网站公司哪里好相关的热搜问题解决方案做网站要看什么书
  • 网站建设重要性黄岐建网站
  • 做网站电销《电子商务网站建设》精品课
  • 地方商城网站海外网站推广方法
  • 乐山 网站建设安阳给商家做网站推广
  • 网站空间一般多大邢台网站建设有哪些
  • h5网站开发工具有哪些wordpress清空post表
  • 公司开网站干嘛怎么制作一个免费的网站模板
  • 群晖wordpress搭建网站网站建设及管理
  • 中山企业网站建设公司抖音代运营合作模式
  • 南通营销网站开发做网站页面多少钱
  • 桂林生活网官方网站云主机和云电脑的区别
  • 内部网络网站怎么做vue做单页面网站
  • 如何建立网站教程wordpress粘帖图片
  • 广东网站备案要多久网站开发 pdf 文字版
  • 学校网站方案帮别人做钓鱼网站吗
  • 如何加强网站建设和信息宣传wordpress 搜索提示
  • 灰色网站怎么做php yaf 网站开发框架
  • 浙江建设网站首页提供做网站公司有哪些