历史上的今天
返回首页

历史上的今天

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

正在发生

2018年07月09日 | STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关

2018-07-09 来源:eefocus

      STM32是一款低功耗的芯片,所以其外设均有一个与之对应的时钟,而在芯片刚上电的时候这些时钟是被关闭的,所以如果想要外设工作,便必须将与之对应的时钟打开。

      本文介绍如何基于GPIO来通过按键控制LEN灯的开关。

     (1)按键的控制


      上图所示为按键的电路,在按键未被按下的时候,KEY2的输出信号为低电平(按键所在的电路不通,其与地相连);在按键按下时,KEY2的输出状态为高电平(按键所在的电路导通,其与3.3V的电源相连)。因此,通过对引脚的电平进行检测便可以判断按键是否按下。

       按键的机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳点接通或断开,其会产生如下图所示的带波纹信号,需要使用软件消抖处理滤波,不方便输入检测。此外,硬件也可实现消抖功能,如上图所示,硬件的消抖功能便是通过C61的充放电实现延时从而消除了波纹,从而简化的软件的处理,使软件只需检测引脚的电平便可。

      

      如上文所说,首先是开启GPIO的时钟,使其外设可工作。本文使用STM32的库函数来编写代码:



//启动按键端口(端口A)的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

//定义一个结构体,用于配置PA0管脚的设置

GPIO_InitTypeDef GPIO_InitStructure;

//将结构体的引脚设为 0

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

//将结构体的模式设为浮空输入

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

//将结构体设为A端口,即将PA0管脚设为浮空输入

GPIO_Init(GPIOA, &GPIO_InitStructure);



      上述代码便是先填好GPIO的结构体,再通过函数GPIO_Init()往对应的GPIO寄存器写入参数,完成GPIO的初始化。

      然后便是检测按键的状态,其代码如下:

//检测按键是否按下

if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == KEY_ON) {

//检测按键是否已经放开

      while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == KEY_ON);

//后续为按键后的代码处理         

............................................

}

(二)GPIO输出

       与GPIO输入类似,GPIO输出的代码如下:


//定义一个GPIO_InitTypeDef类型的结构体

GPIO_InitTyopeDef GPIO_InitStructure;

//开启GPIO相关的外设时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

//选择要控制的GPIO引脚

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

//设置GPIO引脚的输出模式为推挽输出

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

//设置引脚速率为50MHZ

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHZ;

//调用库函数初始化GPIO

GPIO_Init(GPIOB, &GPIO_InitStructure);


      在使用上述代码设置后,便可以在主函数中对LED灯进行控制。

      将GPIOB->BSRR置1从而输出高电平来点亮LED灯,而通过GPIOB->BRR置1来输出低电平从而将LED熄灭。


推荐阅读

史海拾趣

Alps Alpine Co Ltd公司的发展小趣事

Alps Alpine Co., Ltd.是一家总部位于日本的跨国电子制造公司,专注于设计和制造汽车电子、消费电子和工业电子产品。以下是关于Alps Alpine公司发展的五个相关故事:

  1. 公司合并:Alps Electric Co., Ltd.和Alpine Electronics, Inc.于2019年进行了合并,正式成立了Alps Alpine Co., Ltd. 这一合并为两家公司带来了更强大的整合资源和技术实力,使得Alps Alpine能够在全球范围内提供更多样化的电子解决方案。

  2. 汽车电子领域的发展:Alps Alpine在汽车电子领域拥有丰富的经验和技术积累。公司致力于开发汽车内部电子系统,包括车载娱乐系统、导航系统、车载通信系统、驾驶辅助系统等。随着汽车智能化和互联网化的发展,Alps Alpine不断推出创新产品,满足汽车制造商和消费者对智能驾驶体验的需求。

  3. 消费电子产品的多样化:除了汽车电子,Alps Alpine还在消费电子领域拥有广泛的产品线。公司的产品涵盖了手机、平板电脑、摄像机、音响设备等多个终端设备,并不断推出新品,以满足消费者对功能性和设计性的需求。

  4. 工业电子市场的拓展:Alps Alpine在工业电子领域也取得了长足的发展。公司的产品被广泛应用于工业自动化、机器人技术、医疗设备、能源管理等领域,为各行各业提供高性能、可靠的电子解决方案。

  5. 技术创新与研发投入:作为一家技术驱动的企业,Alps Alpine不断加大对研发的投入,致力于技术创新和产品优化。公司拥有强大的研发团队和先进的研发设施,在各个领域持续推动技术进步,提升产品竞争力。

以上是关于Alps Alpine Co., Ltd.发展的五个相关故事,这些故事展示了公司在合并整合、汽车电子、消费电子、工业电子和技术创新方面的发展历程,以及其在电子行业中的重要地位和影响力。

Amkor公司的发展小趣事

Amkor Technology是一家全球领先的半导体封装和测试服务提供商。以下是关于Amkor公司发展的五个相关故事:

  1. 成立与早期发展:Amkor Technology成立于1968年,总部位于美国亚利桑那州的钱德勒市。公司最初是一家小型半导体封装服务提供商,专注于为集成电路制造商提供先进的封装解决方案。在成立初期,Amkor致力于技术创新和质量控制,赢得了客户的信任和认可。

  2. 技术创新与产品多样化:随着电子行业的发展和技术的进步,Amkor不断进行技术创新,并扩展了产品线。公司推出了一系列新的封装技术和解决方案,包括先进的3D封装、薄型封装、系统封装等。这些技术创新和产品多样化使得Amkor能够满足不同客户的需求,并保持在市场竞争中的领先地位。

  3. 全球布局与生产基地建设:为了更好地服务全球客户,Amkor在全球范围内建立了多个生产基地和分销中心。除了在美国的设施外,公司还在亚洲、欧洲和其他地区建立了生产工厂和研发中心。这种全球布局有助于降低生产成本、提高生产效率,并加强了在全球市场的竞争力。

  4. 合作伙伴关系与客户服务:Amkor与全球各种半导体制造商建立了紧密的合作伙伴关系,共同推动技术创新和产品发展。公司致力于为客户提供优质的封装和测试解决方案,并与客户密切合作,开发定制化的解决方案。Amkor的客户服务团队提供全方位的技术支持和服务,确保客户的满意度和业务成功。

  5. 持续发展与业绩表现:Amkor持续实现了稳健的增长和良好的业绩表现。公司不断投入研发,并提升生产效率和管理水平,以提高盈利能力和市场竞争力。Amkor的业绩稳步增长,为股东创造了可观的价值,并使得公司成为半导体封装和测试服务领域的领先企业之一。

这些故事展示了Amkor Technology从成立初期到如今在技术创新、产品多样化、全球布局、合作伙伴关系建设和持续发展等方面取得的重要进展。

Gowanda Electronics公司的发展小趣事

对于连续可调直流稳压电源电路,网友可能会有多个方面的问题,以下是一些常见问题及其解答:

一、技术原理与性能参数

  1. 问:连续可调直流稳压电源电路的工作原理是什么?
    : 连续可调直流稳压电源电路的工作原理主要是通过扩展开关电源的电压和电流容量,采用高频调制技术,将输入的交流电转换为直流电,并通过调节电路使输出电压稳定在一个可调范围内。其内部包含整流、滤波、稳压等多个环节,以提供稳定且可调的直流电压输出。

  2. 问:如何选择合适的连续可调直流稳压电源?
    : 选择连续可调直流稳压电源时,需要考虑的主要因素包括所需电压范围、电流容量、稳压精度、纹波噪声、保护功能等。同时,也需要根据应用场景考虑电源的体积、重量、散热性能等因素。

二、使用与维护

  1. 问:在使用过程中,输出电压不稳定怎么办?
    : 如果输出电压不稳定,可以首先检查电源输入电压是否稳定,使用稳压电源或变压器等辅助设备来保持输入电压的稳定。其次,检查输出端电压设置是否正确,确保输出电压值在设定范围内。最后,检查电源输出端负载是否符合规定,避免负载过重或过轻导致输出电压波动。

  2. 问:如何对连续可调直流稳压电源进行日常维护?
    : 日常维护主要包括检查电源输入输出线路的连接是否牢固,清洁电源外壳和散热风扇上的灰尘,以及定期检查电源的工作状态和性能指标。如果发现异常或故障,应及时进行处理或更换损坏的部件。

三、故障排查与解决

  1. 问:电源无法输出电压或电流怎么办?
    : 如果电源无法输出电压或电流,可以首先检查电源输入电压是否正常,电源本身是否损坏。其次,检查电源输出端连接是否正确,是否存在开路或短路的情况。最后,检查电源是否过载或短路,确保电源在正常工作范围内。

  2. 问:电源输出电压波动大怎么办?
    : 输出电压波动大可能是由于电源输入电压不稳定、输出端负载不匹配或存在电磁干扰等原因造成的。解决方法包括稳定输入电压、匹配适当的负载、检查并消除电磁干扰源等。

四、扩展与升级

  1. 问:如何扩展连续可调直流稳压电源的电压和电流范围?
    : 扩展电压和电流范围通常需要根据具体的电源设计来进行。一般来说,可以通过更换更高功率的整流管、滤波电容和稳压元件等方式来提升电源的电压和电流容量。同时,也可以通过增加并联或串联电路的方式来实现电压和电流的分档调节。

  2. 问:如何进行电路的升级和改造?
    : 电路的升级和改造需要根据实际需求和技术能力来进行。在升级过程中,需要注意保持原有电路的稳定性和可靠性,避免引入新的故障点。同时,也需要关注新技术的发展和应用,以便在升级过程中采用更先进、更高效的电路设计方案。

以上是针对连续可调直流稳压电源电路的一些常见问题及其解答。希望这些信息能够对网友有所帮助。

德崧电子(D-SWITCH)公司的发展小趣事

在电子开关行业,防水性能一直是重要的技术指标。德崧电子(D-SWITCH)公司在成立初期就意识到了这一点,并投入大量资源进行研发。经过数年的努力,公司成功研发出了具有TUV IP67/IP68防水等级认证的防水型开关。这一突破性的技术不仅解决了市场上防水开关性能不稳定的问题,还大大提高了产品的可靠性和使用寿命。凭借这一技术优势,德崧电子在市场上迅速崭露头角,赢得了客户的广泛认可。

Abracon公司的发展小趣事

在电子开关行业,防水性能一直是重要的技术指标。德崧电子(D-SWITCH)公司在成立初期就意识到了这一点,并投入大量资源进行研发。经过数年的努力,公司成功研发出了具有TUV IP67/IP68防水等级认证的防水型开关。这一突破性的技术不仅解决了市场上防水开关性能不稳定的问题,还大大提高了产品的可靠性和使用寿命。凭借这一技术优势,德崧电子在市场上迅速崭露头角,赢得了客户的广泛认可。

FerriShield公司的发展小趣事

为了进一步推动技术创新和产品研发,FerriShield积极寻求与高校和研究机构的合作。公司与多所知名大学建立了产学研合作关系,共同开展新材料、新工艺的研究和开发。这些合作不仅提升了FerriShield的技术实力,还为公司培养了一批高素质的研发人才。

问答坊 | AI 解惑

IC购买时对假冒翻新货的识别

从网上找的识别大法,看看对大家有没有帮助。 我一般不会去柜台购买,都是从渠道商和代理商拿货。…

查看全部问答>

问题解决了啊---Keil MDK,RDI调试出现程序乱跳

今天早上5点中突然醒了,好像有个概念不知道什么时候出现在我大脑------编译器代码优化。前两天一直解决不了的程序乱跳和代码优化有没有关系,立马翻看工具手册提到了4种代码优化级别,编译器默认最好的优化,最好的优化,是最差的调试视图。我改了 ...…

查看全部问答>

X86板之NTC929板子测评

拿到了心仪已久的X86系列的NTC929板子,打开包装,给人的感觉总是那么舒心和愉悦。拿到手了,进行简单测评一下。 本板式一款高性能、低功耗3.5’的嵌入式工业主板,该板采用了Intel Siliverthorn+Poulsbo芯片组,板载IntelSilverthorn(Intel Atom ...…

查看全部问答>

WINCE打印问题?求解

我的WINCE系统 可以PING通局域网内其他PC的IP 但是 连接外网的时候就不行, 我主要是想在局网内打印(特性目录中PCL Print driver添加进去了) ,打印IE浏览器的时候 点 file/print 没反应!  我用的是HP的激光打印机支持PCL的!是不是 ...…

查看全部问答>

WM5.0的菜单问题

程序在WM5.0的设备上运行时,如果菜单项超过两项时,菜单栏的颜色就会变成淡蓝色,而不是原来默认的颜色。 请问有没有办法是菜单栏的颜色不改变或是将菜单栏的颜色设置一下呢?? 用C++…

查看全部问答>

activesync4.2无法通过usb连接pc与wince5.0

我使用致远(周立功) MagicARM2410教学实验开发平台及配套光盘中的wince镜像 按照试验指导书安装evc4.0 及activesync4.2及相关软件 但pc机始终无法使用activesync4.2通过usb与wince建立连接 pc端的activesync4.2会显示正在连接 但约一分钟后 会显 ...…

查看全部问答>

请问:我在运行evc的工程时,提示我说sdk 不能运行在emulator device,这是什么原因呀?

错误为: an application targeting a Standard SDK for Windows CE.NET and built for the MIPSII_FP CPU cannot be run on the Emulator device.In order to run this application on any CPU other than the Emulator,you will have to install ...…

查看全部问答>

8962不能调试

我用IAR v6.0编译下载EasyArm第四章实验程序的bootloader例程到EasyArm8962开发板上,但是下载后没有出现实验指导书上的结果。再试其它的程序(原来都成功了)时,IAR一进入调试就死机了,死得非常彻底,我等了近二个小时也没有提示出现。 请问这 ...…

查看全部问答>

用stm32l152芯片控制mma7455l遇到的一个问题!

我使用stm32l152模拟IIC接口控制mma7455l加速的传感器。 iic驱动程序,对加速的传感器的0x16控制寄存器的访问是完全正确,例如先向0x16寄存器写入0x45,然后可以正确的读取到0x45。 但是读取数据寄存器0x06、0x07、0x08和地址寄存器0x0d的时候却不 ...…

查看全部问答>