总结写的stm32的KEY控制LED

发布者:心动代码最新更新时间:2019-04-10 来源: eefocus关键字:stm32  KEY控制  LED 手机看文章 扫描二维码
随时随地手机看文章

stm32的学习就是弄懂是怎么进行软件配置,先明白硬件连接,再结合起来;


#include "stm32f4xx.h"


#include "led.h"


#define KEY0  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)   // 这里读取IO的状态,将stm32的IO口作为输入使用

#define KEY1  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)

#define KEY2  GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)



#define LED0 PFout(9)                                  //DSO  LED的端口定义,可以有位带操作实现某个IO口的一个位;这个是正点原子中的,标准库中没有

#define LED1 PFout(10)

#define LED2 PFout(9)&&PFout(10)





void KEY_init(void);                 // 

u8 KEY_scan( u8 );

void delay(void)                       // 使用最简单的方式实现延迟,这种方式仅仅用于测试

{

int i,j;

for(i=0;i<100;i++)

for(j=0;j<100;j++);





int main()

{

u8 k;



LED_init();   //

KEY_init();

GPIO_SetBits(GPIOF,GPIO_Pin_9);      // 使用固件库操作来实现IO口操作

delay();



while(1)

{


k=KEY_scan(0);                                               //  读取IO口状态




if(k){

switch(k){

case 1: 

GPIO_SetBits(GPIOF,GPIO_Pin_9);

 GPIO_SetBits(GPIOF,GPIO_Pin_10);

break;

case 2:

GPIO_ResetBits(GPIOF,GPIO_Pin_9);

 GPIO_ResetBits(GPIOF,GPIO_Pin_10);

break;

case 3:

GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_9);

break;


}

}

delay();




//delay();

// GPIO_ResetBits(GPIOF,GPIO_Pin_9);

// GPIO_SetBits(GPIOF,GPIO_Pin_10);

// 

// GPIO_ResetBits(GPIOF,GPIO_Pin_9);

// GPIO_SetBits(GPIOF,GPIO_Pin_10);

}


return 0;

}

void KEY_init(void){

GPIO_InitTypeDef GPIO_InitStruct;


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);


GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;  // ÕâÀïµÄIO¿Ú×÷ΪÊä³ö£¬Êä³öµÍµçƽ µÆÁÁ

GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;

GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP; 

GPIO_InitStruct.GPIO_Speed=GPIO_Fast_Speed;


GPIO_Init(GPIOE,  &GPIO_InitStruct);



}

u8 KEY_scan( u8 mode){

// mode ÊÇ·ñÖ§³ÖÁ¬Ðø°´

static u8 key=1;

if(mode) key=1;

if(key&&(KEY0==0|KEY1==0||KEY2==0)){

delay();

key=0;

 if(KEY0==0)

return 1;

else if(KEY1==0)

return 2;

else if(KEY2==0)

return 3;



}else if(KEY0==1&&KEY1==1&&KEY2==1) key=1;



return 0;

}




void LED_init(void )

{


GPIO_InitTypeDef GPIO_InitStruct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//ʹÄÜGPIOFʱÖÓ


GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_9|GPIO_Pin_10;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;

GPIO_InitStruct.GPIO_Speed=GPIO_Medium_Speed;

GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;

GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_NOPULL;


GPIO_Init(GPIOF, &GPIO_InitStruct);



GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);


}


关键字:stm32  KEY控制  LED 引用地址:总结写的stm32的KEY控制LED

上一篇:STM32 嵌入式学习入门(3)——STM32F103 按键输入控制LED灯
下一篇:STM32Cube-按键控制LED

推荐阅读最新更新时间:2024-03-16 16:27

STM32 串口通信实验
一,串口操作相关库函数: 获取状态标志位函数-操作USART_SR寄存器 // 获取状态标志位 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); // 清除状态标志位 void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); // 获取中断状态标志位 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); // 清除中断状态标志位 void USART_ClearITPe
[单片机]
<font color='red'>STM32</font> 串口通信实验
基于LED路灯的PFC开关电源驱动设计方案
  LED抗浪涌的能力是比较差的,特别是抗反向电压能力,所以加强这方面的保护是必不可少的。鉴于此,本文介绍了一种基于LED路灯的PFC开关电源驱动设计方案,本方案采用有源PFC功能电路设计的室外LED路灯电源,内置完整的EMC电路和高效防雷电路,从而保证LED路灯在户外使用过程中的安全性,同时达到理想的发光强度。    0 引言   LED路灯是低电压、大电流的驱动器件,其发光的强度由流过LED的电流决定,电流过强会引起 LED的衰减,电流过弱会影响LED的发光强度,因此LED的驱动需要提供恒流电源,以保证大功率LED使用的安全性,同时达到理想的发光强度。用市电驱动大功率LED需要解决降压、隔离、PFC(功率因素校正)和恒流问题
[电源管理]
基于<font color='red'>LED</font>路灯的PFC开关电源驱动设计方案
中央高位刹车灯——第三刹车灯
CHMSL代表中央高位刹车灯,安装在车辆左侧和右侧制动车灯(也称为刹车灯)的上方。根据美国国家高速公路交通安全管理局的规定,当刹车系统工作时,CHMSL要向后方司机提供明显确切的信息,告诉他们必须放慢车速。由于CHMSL安装在左右刹车灯之外,因此也被称为“第三刹车灯”。除了做制动车灯功能之外,某些车辆(如皮卡车)还具有集成在CHMSL中的倒车灯。 使用分立组件的CHMSL安装应用 在现代车辆中,CHSMSL内部的照明灯主要以发光二极管(LED)灯串为基础。用晶体管电路驱动CHMSL中的LED灯串。与开关电路相反,CHMSL LED驱动器电路通常是线性电路; 也就是说,LED由晶体管工作在其线性区域的电路驱动。 设计人员通
[汽车电子]
中央高位刹车灯——第三刹车灯
【实验五】窗口看门狗实验
一、实验目的 1)了解STM32窗口看门狗; 2)了解STM32窗口看门狗与独立看门狗的异同; 3)会使用窗口看门狗; 4)利用STM32窗口看门狗的中断功能来喂狗。 二、STM32 窗口看门狗简介 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看 门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 简而言之,窗口看门狗有两个门限就上窗口和下窗口;下
[单片机]
STM32 串口初始化时的BUG
单片机:stm32f103vet6 平台:野火STM32开发板 问题描述:串口在初始化(还未发送任何数据)的时候,PC端会接收到一个字节的乱码 状态:未解决 我调试串口的步骤一般是先初始化UART,然后printf重定向,最后在串口助手里面打印出一些数字。调试还算顺利,成功打印出一行数据。但是每次复位的时候,第一个字符之前都有会多出一个乱码,起初以为是TC置1的问题,改了好几遍都没有效果,后来想一想,TC置1的问题是发送的第一个字符丢失,现在的问题是,第一个字符不丢失,而是第一个字符前出现一个乱码。 串口助手设置十六进制显示,发现在最开始的时候会打印一个字符0xFE。 单步调试发现在串口初始化前的GPIO初始化USART1的TXD
[单片机]
算算LED照明进入千家万户的“经济账”
    在新的一年里,我们不妨换个思维,换种方式,为生活多做一些“节能投资”与“绿色储蓄”,相信未来的回报一定会带给我们更多的喜悦。      在一个偶然的场合,听到两位企业家的对话,引起了思考。      一位企业家是新力光源有限公司董事长张明,执掌的新力光源已成为我国LED照明行业的领军企业之一;一位企业家是川喜集团董事长方久伦,投资创建的WOWO便利店是西部地区首家24小时营业的连锁便利零售企业。      谈话的主题自然少不了“光”。说起LED照明,越来越多的人已经知道它作为第四代照明光源和绿色光源,光感品质高,应用领域广,发展前景好,高度符合日益强劲的节能、环保潮流。但方久伦董事长提出了一个大众更为关注的问题:价格。   
[电源管理]
简单圆珠笔可手写出自定义LED
美国圣路易斯华盛顿大学研究人员开发出一种墨水笔,允许个人在纸张、纺织品、橡胶、塑料甚至3D物体等日常材料上手写出柔性、可拉伸的光电设备。《自然·光子学》最新发表论文报告了这种简单而通用的制造方法,无需任何专业培训或笨重的设备,任何人都能制造发光二极管(LED)或光电探测器。 研究人员演示使用新型圆珠笔在纸上书写自定义LED(左),还可在铝箔上绘制多彩图(右上)和发光图(右下)。图片来源:圣路易斯华盛顿大学 该方法能使个人在短短几分钟内创建多色LED和光电探测器,其利用圆珠笔的简单性,填充由导电聚合物、金属纳米线和钙钛矿晶体材料制成的专门设计的墨水,产生广泛的发光颜色。再通过用这些功能性墨水逐层书写,就像使用五彩笔一样,廉价、
[物联网]
简单圆珠笔可手写出自定义<font color='red'>LED</font>
SCA100T STM32代码
SCA100T-D01是SCA100T系列中一款测量角度为30°的双轴倾角传感器芯片,产品基于3D-MEMS技术,能够提供仪表/仪器级别的水平测量性能。内部两感应元件的测量轴平行于安装平面且相互正交,低温度漂移性、高分辨率、低噪音以及稳健的设计使得SCA100T成为水平仪器的理想选择。村田的倾角传感器能更好地对抗振动影响,且能经受高达20000g的震动冲击。 D01和D02两款测量范围和精度不同 使用STM32的模拟SPI驱动该芯片,C文件代码如下: #include SCA100T.h #include variable.h #include operate.h u8 angularflag=0; //S
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved