历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2019年03月29日 | 基于STM32利用按键点亮LED灯

2019-03-29 来源:eefocus

基于STM32利用按键点亮LED灯的基本步骤:


(1)打开stm32CubeMX,创建新工程文件


(2)选择需要的芯片,本次实验采用的是STM32F411RETx


(3)黄色代表可被使用的引脚,绿色代表已被确定功能的引脚。左侧设置栏中的红色部分表示:IO口复用造成的重叠,以至不能继续使用。


(4)选好芯片,设置好相关系数参量后,选择与keil5相对应的MDK—ARM V5。


源程序:


1.按键按下LED灯点亮


int main


{


if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){


        HAL_Delay(10);     //延时去抖


        if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){     //判断是否有键按下,有则亮


            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);


        }else{


            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);


        }


    }


}


2.按键按下,LED灯亮1s后熄灭


int main


{


if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){


        HAL_Delay(10);


        if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){              //判断时候有键按下


            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);


HAL_Delay(1000); //按键按下后灯亮1S


        }else{


            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);


        }


    }


}


3.按键按下LED点亮,再按键LED熄灭


int main{


if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0)


{


   HAL_Delay(100); //延时去抖


       if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0)         //判断是否有键按下


{


   //功能代码处


       HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);              //有键按下就反转


   //功能代码处


while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0);


 }


    }


}


 配置引脚的初始化电平


  /*Configure GPIO pin Output Level */


  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);



  /*Configure GPIO pin : PC13 */


  GPIO_InitStruct.Pin = GPIO_PIN_13;


  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;


  GPIO_InitStruct.Pull = GPIO_NOPULL;


  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);


 


  /*Configure GPIO pin : PA5 */


  GPIO_InitStruct.Pin = GPIO_PIN_5;


  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;


  GPIO_InitStruct.Pull = GPIO_NOPULL;


  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;


  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


 


推荐阅读

史海拾趣

Acutechnology公司的发展小趣事

随着技术的不断进步,Acutechnology公司不断对产品进行升级和优化。公司投入大量研发资源,推出了一系列高性能、高可靠性的电子产品,满足了市场的多样化需求。同时,公司积极拓展销售渠道,与国内外多家知名企业建立了长期合作关系,产品销量逐年攀升。

Excel-Display Corporation公司的发展小趣事

EDC一直将产品质量视为企业的生命线。为了确保产品质量,公司建立了严格的质量管理体系,从原材料采购到生产过程中的每一个环节都进行严格的质量控制。

此外,EDC还注重售后服务,为客户提供全方位的技术支持和解决方案。这些举措让EDC赢得了客户的信赖和好评,也为公司赢得了更多的市场份额。

台湾致强(FORT)公司的发展小趣事

在追求企业发展的同时,致强科技始终不忘对环境的责任。公司积极响应环保法规要求,将环保理念融入产品研发、生产和销售的各个环节。通过采用环保材料、优化生产流程、实施节能减排等措施,致强科技有效降低了产品对环境的负面影响。此外,公司还定期评估并符合最新的环保法规要求,确保企业与消费者的价值观和环境保护目标相一致。

得倍(DBIC)公司的发展小趣事

在技术创新的基础上,倍(DBIC)公司积极拓展市场,加强品牌建设。公司制定了详细的市场营销策略,针对不同区域和行业进行精准推广。同时,倍(DBIC)公司还积极参与国际展会和论坛,与全球合作伙伴建立联系。这些努力使倍(DBIC)公司的品牌知名度不断提高,市场份额也逐步扩大。

台湾奇力(Chip)公司的发展小趣事

在市场拓展方面,奇力公司采取了多元化的销售策略。除了与大型知名企业合作外,奇力公司还积极开拓国内外市场,参加各类展会和论坛,提升品牌知名度和影响力。同时,奇力公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的企业形象。

Echelon公司的发展小趣事

尽管Echelon在能源管理领域取得了显著的成绩,但公司也面临着一些挑战。随着数字化、智能化技术的不断发展,传统能源管理市场正在发生深刻变革。为了应对这些挑战,Echelon积极调整战略方向,加大在数字化、智能化技术方面的投入。同时,公司还加强了对新兴市场的关注和布局,寻找新的增长点。未来,Echelon将继续秉承创新、合作、共赢的理念,推动能源管理行业的持续发展和进步。

问答坊 | AI 解惑

AT89C51如何通过(USB-HOST)ISP1362读取U盘MP3数据 C程序

本人想利用AT89C51SND1C单片机读取U盘的数据。不知道怎么读取。。。请教高手指点一二,最好是C语言写的,我的编译器是Keil C …

查看全部问答>

关于mipsel-linux交叉编译strongswan的问题

我在交叉编译strongswan的时候,遇到一个问题,在网上找了好久,也没有找到确切的答案。 问题如下: mipsel-linux-ld: ../../../lib/libcrypto/libblowfish/libblowfish/libblowfish.a(bf_skey.o):linking PIC files with non-PIC files Bad val ...…

查看全部问答>

pda上判断是否有存储卡或者内置存储卡

用vc2005,ppc2003,请问各位大侠我该如何判断pda上是否有存储卡或内置的存储卡并读出名字呢…

查看全部问答>

keil下开发 C标准库的使用问题~~

我在keil下开发cortex m3系列的lm3s811.但是我想用到c标准库的string函数等等。如果没有把C库的lib加入keil的话。那么程序会跑到未定义的向量表~~~…

查看全部问答>

有关 enet-lwip

请问:     pucMACArray[0] = ((ulUser0 >>  0) & 0xff);     pucMACArray[1] = ((ulUser0 >>  8) & 0xff);     pucMACArray[2] = ((ulUser0 >> 16) & 0xff);     pucMACArray[3] ...…

查看全部问答>

为什么运算放大器会发生振荡——两种常见原因浅析

本帖最后由 dontium 于 2015-1-23 12:40 编辑 在TI E2E社区中发现了几篇不错的文章,特意翻译过来分享给大家,其中Bruce Trump系列关于放大器有很好的见解,特此供大家参考。 摘要:虽然 Bode 图是一种很不错的分析工具,但是您可能还没有发现, ...…

查看全部问答>

stm32控制摄像头ov7670时遇见的奇怪问题

本帖最后由 paulhyde 于 2014-9-15 04:06 编辑 我用的是STM32F103ZE,摄像头是带FIFO的ov7670,显示屏是ILI9320(320×240),中断的程序如下: void EXTI15_10_IRQHandler(void) { u16 i,j; u16 t1,t2; EXTI_Clear ...…

查看全部问答>

ADXL345零售价一般是多少?

ADXL345零售价一般是多少?据说淘宝很多假货.…

查看全部问答>

AD9361寄存器配置求助

各位好!    我们在对AD9361寄存器进行初始化配置过程中,出现247位寄存器指令读取失败的问题,导致初始化校准无法继续进行,    配置指令:{0x02,0x47,0x11},         //SPIRead    ...…

查看全部问答>

STM32的CAN是怎么用?

一些STM32开发板上有CAN的接口,但不知是怎么用来通信? …

查看全部问答>