历史上的今天
今天是:2024年09月24日(星期二)
2019年09月24日 | STM32F1x系列——按键输入实验
2019-09-24 来源:eefocus
今天学习了STM32F1x系列的按键输入实验,具体上分为三个步骤:
(1)使能按键对应IO口时钟,调用函数:RCC_APB2PeriphClockCmd()
(2)初始化IO模式:上拉/下拉输入。调用函数:GPIO_Init()
(3)扫描IO口电平(库函数/寄存器/位操作)
主要说一下其中的按键扫描,思路图如下:
(1)按键扫描(支持连续按)的一般思路代码:
u8 KEY_Scan(void)
{
if(KEY按下)
{
delay_ms(10) ; //延时10-20ms 用来去抖
if(KEY确实按下)
{
return KEY_Value ;
}
return 无效值 ;
}
}
(2)按键扫描(不支持连续按)的一般思路代码:(就是说按键按下了,没有松开只能算按了一次)
在这里会用到c语言里的关键字:static
a. static声明的局部变量,存储在静态存储区
b. 它在函数调用结束之后,不会被释放,它的值会一直保留下来
c. 所以可以说static声明的局部变量,具有记忆功能
u8 KEY_Scan(void)
{
static u8 key_up = 1 ;
if(key_up&&KEY按下)
{
dealy_ms(10) ; //延时,防抖
key_up = 0 ; //标记这次key已经按下
if(KEY确实按下)
{
return KEY_Value ;
}
}
else if(KEY没有按下)
{
return 没有按下 ;
}
}
(3)按键扫描(两种模式合二为一)的一般思路:
u8 KEY_Scan(u8 mode)
{
static u8 key_up = 1 ;
if(mode == 1)
{
key_up = 1 ; //支持连续按
}
if(key_up&&KEY按下)
{
dealy_ms(10) ; //延时,防抖
key_up = 0 ; //标记这次key已经按下
if(KEY确实按下)
{
return KEY_Value ;
}
}
else if(KEY没有按下)
{
return 没有按下 ;
}
}
对函数传入的参数进行判断,就可以将两种模式合二为一,放入一个函数中去处理。
史海拾趣
|
我是刚接触使用WINDOWS ce的新手,我的要求是XP如何与WINDOWS CE通过交换机连接,我现在可以在XP的电脑上PING通WINDOWS CE电脑上的IP,我需要怎么做才可以看到WINDOWS CE上的数据.因为我太需要WINDOWS ce上的数据文件, 麻烦 ...… 查看全部问答> |
|
首先谢谢EEWORLD,ADI,也特别谢谢SOSO姐 。 之前提交的方案,系统比较复杂,时间有限到目前为止完成了部分功能,还没有完全做完,先汇报下一些硬件原理一些相关的。采用双CIS(Contact image sensor)采集的模拟信号经过运放放大到AD的采样的合适 ...… 查看全部问答> |
|
性能比较表如下: 算法 F2812 (周期) F28335 (周期) 除法 70 24 均方根 60 27 正弦、余弦 90 44 FFT (256点) 大约27000 大约11000… 查看全部问答> |
|
msp430运用定时器A和比较器A测电阻。不知道问题出在哪里 #include \"msp430x14x.h\" #define REF_O (P1DIR |= BIT3) #define MEA_O (P1DIR |= BIT4) #define REF_I (P1DIR |= BIT3) #define MEA_I (P1DIR |= BIT4) #define REF_H (P1OUT |= BIT3) #define REF_L (P1OUT &= ~BIT3) #define MEA_H (P ...… 查看全部问答> |




