历史上的今天
返回首页

历史上的今天

今天是:2025年04月09日(星期三)

正在发生

2019年04月09日 | stm32按键的检测(EXTI和Polling两种方式)

2019-04-09 来源:eefocus

XTI Mode时,只要别漏下面这两行基本是没问题了.


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    /* 复用时钟使能 */


GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1); /* 选择GPIO管脚用作外部中断线路 */




#include

#include



#define EXTI_Trigger_Mode



#define KEY_RCC RCC_APB2Periph_GPIOB

#define KEY_GPIO GPIOB

#define KEY_PIN (GPIO_Pin_1)

#define KEY_LINE (EXTI_Line1)



#ifdef EXTI_Trigger_Mode

void rt_hw_key_gpio_init(void);

void rt_hw_key_exti_init(void);

void rt_hw_key_navi_init(void);

#else

void rt_key_polling_judge(void);

#endif


以上是.h文件内容




#include "key.h"



void rt_hw_key_gpio_init(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(KEY_RCC, ENABLE); 

    GPIO_InitStructure.GPIO_Pin = KEY_PIN;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_Init(KEY_GPIO,&GPIO_InitStructure);

}



#ifdef EXTI_Trigger_Mode

void rt_hw_key_exti_init(void)

{

    EXTI_InitTypeDef EXTI_InitStructure; 

    EXTI_InitStructure.EXTI_Line = KEY_LINE; 

    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 

    EXTI_InitStructure.EXTI_LineCmd = ENABLE; 

    EXTI_Init(&EXTI_InitStructure); 

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1);

}



void rt_hw_key_navi_init(void)

{

    NVIC_InitTypeDef NVIC_InitStructure; 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  

    NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; 

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

    NVIC_Init(&NVIC_InitStructure);

}



void EXTI1_IRQHandler(void)

{

    if(EXTI_GetITStatus(KEY_LINE) == SET)

    {

        rt_kprintf("~~~~~~~~~~~~~~~~~~~~~~~~~~111~~~~~~~~~~~~~~~~~~~~~~~~~~rn");

        EXTI_ClearFlag(KEY_LINE); 

    }

}

#else

void rt_key_polling_judge(void)

{

    while(1)

    {

        if(GPIO_ReadInputDataBit(KEY_GPIO,KEY_PIN) == 0)

        {

            rt_thread_delay(100);

            if(GPIO_ReadInputDataBit(KEY_GPIO,KEY_PIN) == 0)

            {

                rt_kprintf("~~~~~~~~~~~~~~~~~~~~~~~~~~222~~~~~~~~~~~~~~~~~~~~~~~~~~rn");

            }

        }

    }

}

#endif


以上是.c的内容.


推荐阅读

史海拾趣

ERP Power公司的发展小趣事

在这个故事中,我们将看到ERP Power如何与HANA技术相结合,为一家电子企业提供了强大的数据支持和分析能力。通过实施基于HANA的ERP Power系统,该企业成功实现了数字化转型,提高了生产效率和产品质量。

HiRel Connectors Inc公司的发展小趣事
对于独立供电的摄像头,检查电源适配器是否工作正常,输出电压和电流是否符合要求。
Hi-Light Electronic Co Ltd公司的发展小趣事
对于独立供电的摄像头,检查电源适配器是否工作正常,输出电压和电流是否符合要求。
Automatic Connector公司的发展小趣事

面对日益严重的环境问题,Automatic Connector公司积极响应绿色制造的号召。公司投入大量资金研发环保型电子连接器,采用环保材料和节能工艺,减少生产过程中的污染排放。同时,公司还倡导循环经济的理念,推动废弃电子产品的回收和再利用。这一举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

Hosiden Corporation公司的发展小趣事

近年来,Hosiden在技术创新方面取得了显著成果。特别是在汽车市场,公司积极参与并推动了MIPI A-PHY标准的验证与应用。Hosiden与Valens Semiconductor等领先企业合作,完成了其连接器和电缆对Valens VA7000芯片组的验证,这是市场上首个符合MIPI A-PHY的芯片组。这一里程碑式的成就不仅展示了Hosiden在技术创新方面的实力,也进一步巩固了其在汽车电子市场中的领先地位。

AVAGO公司的发展小趣事

尽管AVAGO公司在发展过程中取得了显著成就,但也面临着诸多挑战。随着全球半导体市场的竞争日益激烈,公司需要不断投入研发资金、加强人才培养、优化生产流程等方面来保持竞争优势。同时,公司还需要密切关注行业动态和市场需求变化,以便及时调整战略和产品线。在未来,AVAGO公司将继续致力于技术创新和市场拓展,为全球客户提供更优质的产品和服务。

以上五个故事仅是对AVAGO公司发展历程的简要描述,实际上公司在发展过程中还经历了许多其他重要事件和阶段。这些故事展示了AVAGO公司如何凭借技术实力、市场洞察力和战略眼光在电子行业中脱颖而出,并成为全球领先的半导体企业之一。

问答坊 | AI 解惑

电容漏泄的测量

电容器是几乎所有电气设备上都会用到的主要器件。漏阻是电容器被测试的众多电气特征中的一个。漏阻通常被称为“IR”(Insulation Resistance,绝缘电阻),以“兆欧-微法”表示。在其它情况下,漏泄可能被表示为特定电压(通常为工作电压)下的漏 ...…

查看全部问答>

基于FPGA的USB接口IP核设计

2.1 UTM模块 USB总线数据线由DP和DN组成,是I/O端口。并行通过对DP和DN的上拉、下拉来区别低速USB设备和高速USB设备。 USB总线上的数据首先通过UTM,进行NRZI解码和位剥离后,串并转换为8位并行数据,传送给SIE中的UTMI或从UTMI接收8位并行数据 ...…

查看全部问答>

从巴黎5幅名画被盗来看安防系统的不足

5月19日,巴黎现代艺术博物馆的5幅分别出自毕加索、马蒂斯、布拉克、莱热以及莫迪利亚尼之手的世界级名画一夜之间被秘密盗走。这5幅名画总价值5亿欧元(有媒体更正为1亿欧元),目前警方已开始着手调查。   据法国媒体报道,巴黎现代艺术博物馆 ...…

查看全部问答>

WinCE下动态LOGO的做法?

先来说说规格: 开机需要两个LOGO,分别是一个静态LOGO用来显示公司名字,一个是动态LOGO用来显示CE的加载过程。 第一个应该比较好弄,在bootloader中OENPlatformInit中初始化屏完毕后,将要显示的图片数据复制到显存中即可。 问题是第二个, ...…

查看全部问答>

初涉操作系统,该从何入手

非计算机专业的,在ARM平台上,需要跑操作系统(及写相关驱动),但是对操作系统没有深刻的理解(以前未涉及操作系统), 1、该从哪个操作系统下手对我来说比较现实? 2、是否需要研究操作系统内核? 3、除了语言,应当具备哪些基础知识? 4、 ...…

查看全部问答>

求基于2410板子的NANDFLASH驱动

如题,我手头的NANDFLASH驱动版本太老,在内核加新功能时总是:Failed to add the PCI NAND Flash Driver (SDNPCID) feature (SYSGEN_MSFLASH) to the platform.,哪位大哥有写好的给小弟发一份  我用的是WINCE4.2 慧通(www.witech.com.cn)24 ...…

查看全部问答>

vxWorks compress rom的解压缩速度问题,MIPS 24KEC CACHE 4路组相连

手上在做一个用MIPS32   24KEC的项目,CACHE这块似乎我一直没调对,后边都起的差不多了但是这里仍然有问题 体现如下:无论在config0最后3bit写0,2,3,7   就是写透关闭写回还有一个是UNCACHE 加速~不是很明白~总之几个CACH ...…

查看全部问答>

如何用\WINCE500\PUBLIC\SERVERS\SDK\SAMPLES下的ftpd文件夹做一个FTP服务器的exe呢(用EVC来实现)?

如何用\\WINCE500\\PUBLIC\\SERVERS\\SDK\\SAMPLES下的ftpd文件夹里的那些文件做一个FTP服务器的exe呢(用EVC来实现)? 做出一个exe文件来,一点击就相当与建立了一个FTP服务器. 请高手给出思路,多谢! …

查看全部问答>

固件库V3.3中的关于USART新添加的两个函数,求解释?

/**   * @brief  使能或失能USART的.---Enables or disables the USART\'s 8x oversampling mode.   * @param  USARTx:  ---Select the USART or the UART peripheral.   *&n ...…

查看全部问答>