历史上的今天
今天是: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的内容.
史海拾趣
|
2.1 UTM模块 USB总线数据线由DP和DN组成,是I/O端口。并行通过对DP和DN的上拉、下拉来区别低速USB设备和高速USB设备。 USB总线上的数据首先通过UTM,进行NRZI解码和位剥离后,串并转换为8位并行数据,传送给SIE中的UTMI或从UTMI接收8位并行数据 ...… 查看全部问答> |
|
5月19日,巴黎现代艺术博物馆的5幅分别出自毕加索、马蒂斯、布拉克、莱热以及莫迪利亚尼之手的世界级名画一夜之间被秘密盗走。这5幅名画总价值5亿欧元(有媒体更正为1亿欧元),目前警方已开始着手调查。 据法国媒体报道,巴黎现代艺术博物馆 ...… 查看全部问答> |
|
先来说说规格: 开机需要两个LOGO,分别是一个静态LOGO用来显示公司名字,一个是动态LOGO用来显示CE的加载过程。 第一个应该比较好弄,在bootloader中OENPlatformInit中初始化屏完毕后,将要显示的图片数据复制到显存中即可。 问题是第二个, ...… 查看全部问答> |
|
非计算机专业的,在ARM平台上,需要跑操作系统(及写相关驱动),但是对操作系统没有深刻的理解(以前未涉及操作系统), 1、该从哪个操作系统下手对我来说比较现实? 2、是否需要研究操作系统内核? 3、除了语言,应当具备哪些基础知识? 4、 ...… 查看全部问答> |
|
如题,我手头的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服务器. 请高手给出思路,多谢! … 查看全部问答> |
|
/** * @brief 使能或失能USART的.---Enables or disables the USART\'s 8x oversampling mode. * @param USARTx: ---Select the USART or the UART peripheral. *&n ...… 查看全部问答> |




