历史上的今天
返回首页

历史上的今天

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

正在发生

2018年04月13日 | STM8S---独立按键IO口设置及按下事件问题

2018-04-13 来源:eefocus

1 GPIO设置

                STM8 I/O 口引脚配置表

Px_DDRPx_CR1Px_CR2I/O 方式引脚状态
000输入悬浮输入
001输入上拉输入
010输入中断悬浮输入
011输入中断上拉输入
100输出开漏输出
110输出推挽输出
1x1输出输出(最快速度为10MHZ)

对STM8S的IO配置,我们只需要操作五个寄存器就行了:

  • 输出数据寄存器 (ODR)

  • 输入数据寄存器 (IDR)

  • 数据方向寄存器 (DDR)

  • 控制寄存器1(CR1)

  • 控制寄存器2(CR2)

2 按键检测

  在做独立按键检测的时候,设置成上拉输入不能实现功能,设置成中断悬浮输入就可以了。 
  两次短按键之间的时间间隔大约在300ms~600ms之间。一次短按键按下的时间大约在14ms~26ms之间;

2.1 连续按键检测(短按+长按)

定时器TIM1 + 按键 = 连续按键检测(短按键+长按键) 
两个标记:

  • 短按+长按—flag0

  • 短按后时间在规定范围之内—flag1

如果两个标记都满足,则开/关电源;每次按键都启动按键计时;

当两次按键的时间间隔在300ms~600ms之间的时候,怎么得到第一次(短按)和第二次(长按)按键之间的时间呢? 
  如果判断了是短按,则开启计时,同时将第一次短按flag置一,超过600ms停止计时并清零,等待第二次的按键;有了第二次的按键之后,在短按置一flag条件中中断计时,判断是否在规定范围之内的时间间隔,是则将flag1置一;并接下来判断该按键是长按还是短按,如果是长按,则将flag0置一,满足flag0、flag1均置一,则是连续按键。

3 关键代码


/*

return = 

    0   :   No Key Press

    1   :   Single Key Press

    2   :   将长按作为一次单独按键,并执行Single Key Press功能   

    3   :   Double Key Press

*/

unsigned int Key_Scan(void)

{

    unsigned int count = 0;


    if(0 == KEY)

    {

        Delay(2);

        if(0 == KEY)

        {

            if(1 == keytimesFlag)

            {

                afterOnceShortPressFlag = 0;

                if((afterOnceShortPressCount <=30) 

                    && (afterOnceShortPressCount > 15))

                {

                    isSetTimeFlag = 1;

                }

                else isSetTimeFlag = 0;

            }

            keyFlag = 1;

            while(!KEY);

            keyFlag = 0;

            count = keyCount;

            keyCount = 0;

        }

        else

        {

            count = 0;

        }

    }


    if(count >= 200)

    {

        if(1 == isSetTimeFlag)

        {

            isSetTimeFlag = 0;

            keytimesFlag = 0;

            return 3;

        }

        else 

        {

            keytimesFlag = 0;

            return 2;           

        }

    }

    else if(count >= 4)

    {

        afterOnceShortPressFlag = 1;

        afterOnceShortPressCount = 0;

        keytimesFlag = 1;

        return 1;

    }

    else return 0;

}


在定时周期为10ms的定时器中断函数里:

@far @interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)

{   

    TIM1_SR1 &=~(0x01);    

    if(1 == keyFlag)

    {

        ++keyCount;

    }

    else ;

    if(1 == afterOnceShortPressFlag)

    {

        ++afterOnceShortPressCount;

        if(afterOnceShortPressCount > 80)

        {

            afterOnceShortPressFlag = 0;

            afterOnceShortPressCount = 0;

            keytimesFlag = 0;

        }

    }

    else ;

}



推荐阅读

史海拾趣

FUJI公司的发展小趣事

在电子行业中,虽然直接名为“FUJI”的公司可能不是最为人所熟知的(注意:富士通实际上使用的是“Fujitsu”而非“FUJI”,但考虑到FUJI可能与富士电机等相关联,以下将基于这些相关公司进行阐述),但富士电机及其关联企业,如富士通和富士施乐,在电子行业的发展历程中都有着举足轻重的地位。以下是五个与这些公司相关的故事:

1. 富士电机的诞生与多元化发展

故事概述:富士电机控股公司(FUJI ELECTRIC HOLDINGS CO., LTD.)成立于1923年,是古河电器工业与德国西门子资本技术合作的产物。起初,公司以电气机器制造为主,后逐渐扩展到电机系统、电子设备和零售终端设备等多个领域。富士电机不仅在电机领域保持领先地位,还积极拓展至自动贩卖机等领域,并在该领域占据日本国内第一的市场份额。其发展历程展现了日本重电机制造商的多元化战略和全球视野。

2. 富士通的通讯与计算机技术崛起

故事概述:富士通(Fujitsu)的前身可以追溯到1875年成立的Furukawa Denko公司,后与西门子合作成立富士电机制造株式会社。富士通在通讯和计算机技术方面的崛起尤为显著。1935年,富士通信机制造公司成立,标志着富士通在通讯领域的正式起步。随后,公司不断推出创新产品,如FACOM系列计算机、第一台出口海外的计算机等,奠定了其在全球计算机市场的地位。富士通对通讯和计算机技术的持续投入和创新,使其成为电子行业的重要力量。

3. 富士施乐的打印机与复印技术革新

故事概述:富士施乐(Fuji Xerox)成立于1962年,是富士胶片和美国施乐合资成立的企业。自成立以来,富士施乐在打印机和复印技术方面取得了显著成就。公司不仅推出了多款具有创新性的打印和复印产品,还积极应对市场变化,不断调整业务结构。例如,在数字化浪潮中,富士施乐推出了多款支持网络打印和多功能一体的产品,满足了市场的新需求。其技术革新和市场策略调整,使富士施乐在打印和复印技术领域保持领先地位。

4. 富士通与FANUC的工业机器人合作

故事概述:富士通与FANUC的合作是电子行业与工业机器人技术结合的一个典型案例。FANUC作为富士通的子公司之一,自上世纪70年代成立以来,便致力于工业机器人的研发和生产。富士通与FANUC的紧密合作,不仅推动了工业机器人技术的快速发展,还促进了电子行业生产线的自动化和智能化升级。两家公司的合作成果广泛应用于汽车制造、电子组装等多个领域,为工业生产带来了革命性的变化。

5. 富士电机在绿色能源领域的探索

故事概述:随着全球对绿色能源和可持续发展的重视,富士电机也开始在绿色能源领域进行积极探索。公司不仅致力于高效能电机的研发和生产,还积极推动可再生能源技术的应用。例如,富士电机在太阳能和风能领域推出了多款创新产品和技术解决方案,为可再生能源的普及和应用做出了积极贡献。其绿色能源战略不仅符合全球发展趋势,也为公司未来的可持续发展奠定了坚实基础。

以上五个故事分别展现了富士电机及其关联企业在电子行业不同领域的发展历程和成就。这些公司凭借持续的技术创新和市场拓展,成为了电子行业的重要参与者和推动者。

ETA-USA公司的发展小趣事

ETA-USA公司起源于XXXX年,当时由几位电子工程领域的先驱者在美国密歇根州的Troy市创立了这家专注于电子技术和解决方案的公司。初创时期,ETA-USA面临着技术挑战、资金短缺和市场竞争激烈等多重困难。然而,通过不断创新和提供高质量的工程服务,公司逐渐在电子行业崭露头角,赢得了客户的信任。

HTC Korea(TAEJIN Technology )公司的发展小趣事

在HTC的发展历程中,与微软的合作无疑是重要的一环。早在2002年,微软联合HTC推出了全球第一台搭载Windows mobile的Pocket PC,这一操作系统成为了日后WP 8的前身。得益于微软的信任和支持,HTC能够率先搭载最新的Windows mobile系统,从而成为Windows手机的顶级生产商。这种紧密的合作关系不仅提升了HTC的品牌影响力,还为其带来了大量的市场份额和利润。

APX Technologies公司的发展小趣事

APX Technologies在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,致力于研发和生产低能耗、低污染的电子产品。此外,APX Technologies还积极参与社会公益活动,为社会的和谐发展贡献自己的力量。这些举措不仅提升了公司的品牌形象,也赢得了社会各界的广泛赞誉。

以上五个故事均基于虚构的APX Technologies公司的发展情况,旨在展示一个电子行业公司可能经历的不同发展阶段和面临的挑战。这些故事并不代表任何真实情况,仅供参考和启发。

Corporation Soneet公司的发展小趣事

随着国内市场的饱和,Soneet开始将目光投向国际市场。公司积极开拓海外市场,与国外的电子设备制造商建立合作关系。通过参与国际项目合作和技术交流,Soneet不断吸收国际先进的技术和管理经验,提升自身实力。如今,Soneet已经成为一家具有国际化视野和竞争力的电子企业。

请注意,以上故事均为虚构内容,旨在展示一个电子行业内新兴公司可能经历的发展历程。实际情况中,每家公司的发展路径都会因其自身的特点和市场环境而有所不同。

Bay Linear Inc公司的发展小趣事

随着公司产品的热销,Bay Linear Inc开始积极拓展国际市场。通过与国外知名企业的合作,公司成功打入欧洲和北美市场,进一步提升了品牌知名度和影响力。同时,公司还积极参与国际技术交流与合作,不断提升自身的技术水平和市场竞争力。

问答坊 | AI 解惑

FPGA设计验证关键要点

FPGA设计验证关键要点…

查看全部问答>

FPGA应用举例.pdf

本帖最后由 paulhyde 于 2014-9-15 03:44 编辑 FPGA应用举例.pdf    …

查看全部问答>

问一个wince5.0 用以太网实现kitl 的问题

以太网kitl通信通道的实现,用到虚拟的网络设备,我想问一下 kitl所用的虚拟的网络设备是由vbridge实现的,还是 由vbridge和vmini共同实现的,或者说vmini在kitl的实现过程中用到了吗? vmini都做些什么? 请高手指点!…

查看全部问答>

十万火急!请教USB端口写数据~

各位前辈大侠,     我现在用一个USB接口的打印机,连接在Wince的PDA上,想直接发送打印数据到打印机。我在网上找了好几天资料都说要找到打印机设备的路径或者是名称,用CreateFile创建句柄,但是我不知道怎么找到该设备。无法用CreateF ...…

查看全部问答>

脉冲宽度的测量的怪问题?

目的是测量连续的脉冲宽度 源码见附件 typedef struct times {   uchar second;       //秒级     uint m_second;     //毫秒级     uchar mm_second_1;  / ...…

查看全部问答>

高质量C++编程指南

高质量C++编程指南…

查看全部问答>

高手帮帮忙

请问,我用的是MSP430F449单片机,其中很多模块都用不到,也有很多引脚用不上,这些多余的引脚怎么处理呢?肯定不能直接悬空吧?哪位大侠给指点一下呢,谢谢…

查看全部问答>

第11章 终端I/O

11.1   引言 24611.2   综述 24611.3   特殊输入字符 25011.4   获得和设置终端属性 25411.5   终端选择标志 25411.6   stty命令 25811.7   ...…

查看全部问答>

MSP430FR5739+DS18B20示例

由于室内温度有点冷,所以想测量一下温度有多高,正好手头有DS18B20,就动手写写代码测一下,最终结果是12℃左右,真是受不了啊,看来下个月真要换个地方住了。 电路很简单,DS18B20+4.7K电阻一只+MSP-EXP430FR5739开发套件。DS18B20的GND接板子GN ...…

查看全部问答>

TI最近狂招人啊,贴一下list

Job Function_2    Position     Location FAE    FAE: MCU    Chongqing FAE    FAE: MCU    Hangzhou FAE &nbs ...…

查看全部问答>