历史上的今天
返回首页

历史上的今天

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

2019年03月29日 | stm32的KEY控制LED

2019-03-29 来源:eefocus

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);


}

推荐阅读

史海拾趣

Digital公司的发展小趣事

DIALIGHT公司一直专注于工业LED照明领域的发展。他们深入了解工业空间照明的需求和挑战,设计了一系列专为工业应用而定制的LED照明产品。这些产品不仅易于安装和维护,而且能在恶劣的环境下持续使用。此外,DIALIGHT还提供集成系统解决方案,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。通过不断创新和优质服务,DIALIGHT在工业LED照明领域赢得了广泛的认可和信赖。

EDSYN公司的发展小趣事

随着智能能源市场的不断发展,Econais也积极拓展该领域的应用。通过与能源公司的合作,Econais的Wi-Fi模块被广泛应用于智能电网、智能家居和分布式能源管理等领域。这些应用不仅提高了能源利用的效率,也为用户带来了更加便捷和舒适的体验。Econais凭借其在超低功耗和高性能无线产品方面的技术优势,成功在智能能源市场占据了一席之地。

Alpha (Taiwan)公司的发展小趣事

面对全球环保意识的日益增强,Alpha (Taiwan)公司积极响应号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色环保电子产品。这些产品不仅具有优异的性能,而且在使用过程中对环境的影响较小,符合现代社会的环保理念。此外,公司还积极参与环保公益活动,宣传环保知识,推动电子行业的绿色发展。

Fagor Electrónica公司的发展小趣事

如今,Fagor Electrónica已经成为电子和数字领域的领军企业之一。展望未来,公司将继续秉承创新驱动的发展理念,加大在人工智能、物联网等新兴领域的投入。同时,Fagor Electrónica还将积极参与全球市场竞争,拓展更广阔的市场空间。相信在不久的将来,Fagor Electrónica将会创造更加辉煌的业绩。

Futaba Electric Co Ltd公司的发展小趣事

1959年,Fagor Electrónica在电子领域崭露头角,当时它还只是Ulgor, S. Coop.公司旗下的一个电子部门。这一年,公司开始制造硒板和整流器,这标志着其电子制造业务的开始。尽管初始规模不大,但Fagor Electrónica凭借其高质量的产品和卓越的客户服务,迅速在市场上赢得了声誉。

Cypress Industries公司的发展小趣事

Cypress Semiconductor于1982年在美国加州的硅谷成立,这里是全球半导体行业的发源地之一。公司起初专注于高性能IC产品的研发和生产,为数据传输、远程通讯等领域提供解决方案。随着技术的不断发展和市场的扩大,Cypress逐渐将业务拓展至全球,并在多个国家和地区建立了生产基地和设计中心。

问答坊 | AI 解惑

请问有没有关于FPGA的中英文对照论文啊

求助,有没有关于FPGA的中英文对照论文,1000字以上的就可以了…

查看全部问答>

开机密码时startui.cpp加了ipShowIM(SIPF_ON)软键盘为什么还不出来?

Startup_DlgProc() {         switch (message)                 {                 case WM_INITDIALOG:         ...…

查看全部问答>

PB分布式编译有什么类似distcc的工具吗?

这样我build一个新的platform的时候分布到其他PC,可以加快速度 linux下有distcc,win32下有什么类似的工具…

查看全部问答>

NDIS中间层驱动如何支持多种Windows操作系统?

我正在做一个NDIS中间层驱动程序,以前没怎么接触过,不知道怎么实现支持所有windows系列操作系统?关键技术在哪?是不是用最新的DDK开发就能向下兼容?还是... 请各位帮忙,在此先谢过了!…

查看全部问答>

[交友贴]......

msn: wince.net@hotmail.com 杭州 wince开发…

查看全部问答>

说下我的应急灯经验

    其实作为消费电子产品来讲,美信确实没必要开发小功率的LED驱动芯片,因为性能/价格比确实有点低。参与这个项目的有不少是学生朋友,可能对价格这个方面不是很敏感,我接手的一款产品后来就用简单的恒流电路解决掉了,因为客户 ...…

查看全部问答>

09年全国电子设计大赛B题

本帖最后由 paulhyde 于 2014-9-15 09:36 编辑 现在学校为了今年的电子设计大赛,让我们从2009年的电子设计大赛的题目中选择一道题来练习一下!我们选择了声音引导系统这道题目,可所需要的元器件那么多,估计一两家淘宝店都搞不定啊,怎么办?好 ...…

查看全部问答>

STC-ISP软件问题

 一打开软件设置好以后点下载就没有反应了,关闭也不行,进程都关不了,想病毒一样?还有就是老是下不了,串口不对什么,但是实际上就是那个串口?急急急急急急!用老版本是可以下载的,但是一两次后就跟这个一样了。 两个ISP程序都关不了 ...…

查看全部问答>

让我们一起做一个小程序

在 我的C语言之路 里,我反复强调的一句话是:作为一个程序员应该做的事情只有一件,那就是coding。回想过去,我的很多coding都是教科书上的编程习题。这次学习C++。当然它本身就为下面所说的这个小程序所驱动。我决定换个方法学习,我手头有一本书 ...…

查看全部问答>