历史上的今天
返回首页

历史上的今天

今天是: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 没有按下 ;

}

 

}

对函数传入的参数进行判断,就可以将两种模式合二为一,放入一个函数中去处理。


推荐阅读

史海拾趣

AIC [Analog Intergrations Corporation]公司的发展小趣事
  1. 公司成立与初期发展:Analog Integrations Corporation(AIC)是一家总部位于台湾的半导体公司,专注于设计、制造和销售高性能模拟集成电路(IC)产品。公司成立于1996年,由一群拥有丰富经验的工程师共同创立。最初,AIC致力于为广泛的应用领域提供稳定可靠的模拟芯片解决方案,如消费电子、通信、工业控制等。

  2. 技术创新与产品发展:AIC在技术创新和产品研发方面投入了大量资源,不断推出具有竞争力的新产品。公司的产品涵盖了各种模拟IC产品系列,包括功率管理IC、放大器、比较器、数据转换器等。这些产品具有高性能、低功耗、小尺寸等特点,得到了广大客户的青睐。

  3. 全球市场拓展:随着公司技术和产品的不断成熟,AIC开始着眼于国际市场的拓展。公司积极参与国际电子展览和行业会议,与全球客户建立合作关系,拓展海外市场份额。通过建立销售代理商、设立海外办事处等方式,AIC在北美、欧洲、亚太等地区建立了稳固的销售网络。

  4. 质量管理与认证:AIC始终将产品质量视为企业发展的关键。公司严格遵循国际质量管理体系标准,建立了完善的质量管理体系。AIC的生产工艺和产品测试流程经过精心设计和严格监控,确保产品质量的稳定性和可靠性。此外,公司的产品经过了多项国际认证,包括ISO 9001质量管理体系认证、ISO 14001环境管理体系认证等。

  5. 社会责任与可持续发展:作为一家负责任的企业,AIC积极履行社会责任,关注环境保护和可持续发展。公司致力于降低能源消耗和减少废物排放,推动绿色生产和循环利用。此外,AIC积极参与社会公益活动,支持教育、健康、环保等多个领域的项目,为社会发展做出积极贡献。

Davies Molding公司的发展小趣事

Davies Molding公司在追求经济效益的同时,始终关注社会责任和可持续发展。公司积极参与环保公益活动,推动绿色生产,降低对环境的影响。此外,Davies Molding公司还注重员工福利和社会公益事业,为员工提供良好的工作环境和发展空间,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

Edcon Components Netherlands Cv公司的发展小趣事

Edcon Components Netherlands Cv自成立之初,就深知技术创新是企业生存和发展的关键。在电子行业飞速发展的背景下,公司投入大量资源进行研发,成功推出了一系列高性能、低成本的电子元器件。这些产品不仅满足了市场对高质量电子产品的需求,还为公司赢得了良好的口碑。随着技术的不断迭代更新,Edcon逐渐在电子元器件市场占据了重要地位。

优先(苏州)半导体公司的发展小趣事

宝士曼第三代半导体研发生产项目位于苏州东山大道旁,占地50亩,计划建设生产、研发、办公等楼宇。项目整体将分二期建成,总建筑面积约70000平方米。已经封顶的4号楼建筑面积超11600平方米,主要用于第三代半导体器件专用封装设备的研发生产。在施工过程中,宝士曼对环保和施工细节提出了更高的要求,要求地面每5平方米的高度误差要小于3毫米,并在施工中做到“工完场清”,最大程度减少对今后生产的影响。这种对细节的严格要求体现了宝士曼对产品质量和环保责任的重视。

Compensated Devices Inc公司的发展小趣事

随着全球环保意识的日益增强,电子行业对环保的要求也越来越高。CDI积极响应这一趋势,将环保理念贯穿于产品研发、生产和销售的全过程。公司推出了一系列绿色环保型电子元件,并采用了环保材料和生产工艺。这一举措不仅赢得了客户的认可,还为公司的可持续发展奠定了坚实基础。

ELM Technology Corporation公司的发展小趣事

在电子行业竞争日益激烈的背景下,ELM Technology Corporation展现出了卓越的市场拓展能力。公司管理层准确把握市场趋势,及时调整产品策略,积极拓展国内外市场。通过与国际知名企业的合作,ELM成功打入国际市场,其产品在多个国家和地区得到了广泛应用。同时,公司还积极寻求与国内企业的合作机会,共同推动电子行业的发展。

问答坊 | AI 解惑

LED驱动mos推荐

尚晶推荐LED驱动用MOS 管 DTS2306;DTS3400…

查看全部问答>

电子方面的困惑

想问下,举个例子吧,像那个遥控器,modem,还有收音机这些个电子产品,我该如何去学习啊,我现在对这个比较感兴趣, ,看了好些个论坛什么的,都说学电路分析,还有模拟电路,数字电路,单片机等等。我也看过,但是总是感觉一点都没有学会。 想 ...…

查看全部问答>

wince 挂起后, 闹铃

现在是想在 wince 挂起后,待机后, 自已写的闹铃程序不受影响,到达设定的时候时,还能正常响铃... 大家帮忙..谢谢..…

查看全部问答>

windows ce如何与WINDOWS xp联网

  我是刚接触使用WINDOWS ce的新手,我的要求是XP如何与WINDOWS CE通过交换机连接,我现在可以在XP的电脑上PING通WINDOWS CE电脑上的IP,我需要怎么做才可以看到WINDOWS CE上的数据.因为我太需要WINDOWS ce上的数据文件,   麻烦 ...…

查看全部问答>

基于AD9288/DSP的数字图像采集处理

首先谢谢EEWORLD,ADI,也特别谢谢SOSO姐 。 之前提交的方案,系统比较复杂,时间有限到目前为止完成了部分功能,还没有完全做完,先汇报下一些硬件原理一些相关的。采用双CIS(Contact image sensor)采集的模拟信号经过运放放大到AD的采样的合适 ...…

查看全部问答>

【设计工具】ISE 设计套件 11.1 应用问答

ISE 设计套件 11.1 应用问答。     [ 本帖最后由 GONGHCU 于 2012-2-21 03:15 编辑 ]…

查看全部问答>

C2000定点和浮点处理器的乘/除法,FFT性能比较

性能比较表如下:  算法 F2812 (周期) F28335 (周期) 除法 70 24 均方根 60 27 正弦、余弦 90 44 FFT (256点) 大约27000 大约11000…

查看全部问答>

【求助】如何修改MSP430 xcl文件

如何修改MSP430 xcl文件 让程序在用户自定义的FLASH段运行及进行其他操作、 …

查看全部问答>

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 ...…

查看全部问答>