历史上的今天
返回首页

历史上的今天

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

正在发生

2019年04月10日 | 总结写的stm32的KEY控制LED

2019-04-10 来源: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);


}


推荐阅读

史海拾趣

Cygnal Integrated Products Inc公司的发展小趣事

在20世纪90年代末,Cygnal Integrated Products Inc由几位热衷于微控制器技术的工程师创立。他们看到了嵌入式系统在电子产品中的巨大潜力,并决定专注于开发高性能、低功耗的微控制器。通过不断的技术创新和市场调研,Cygnal成功推出了其首款产品——一款集成了多种外设接口的8位微控制器,受到了市场的热烈欢迎。

FINISAR公司的发展小趣事

随着业务的不断扩展,FINISAR开始在全球范围内布局。公司在中国、马来西亚、美国、澳大利亚、以色列、新加坡、印度、韩国等多个国家设立了子公司和研发中心,形成了全球化的生产和服务网络。这一战略布局不仅增强了FINISAR的市场竞争力,还为公司带来了更多的发展机遇。特别是在中国市场,FINISAR凭借其先进的技术和优质的产品,赢得了众多知名企业的青睐,如思科、IBM、华为等。

Changzhou Galaxy Century Microelectronics Co.,Ltd公司的发展小趣事

随着技术实力的不断提升,银河微电开始积极拓展市场。公司深入分析市场需求,针对不同行业和领域的特点,推出了定制化的产品解决方案。同时,银河微电还加大了营销力度,通过参加行业展会、举办技术研讨会等方式,与潜在客户建立联系,推动产品销售。在市场的不断拓展中,银河微电实现了跨越式发展,市场份额逐年提升。

AVAGO公司的发展小趣事

为了进一步扩大市场份额和提高竞争力,AVAGO公司开始积极寻求并购机会。通过一系列精心策划的并购交易,公司成功整合了多家在半导体行业具有影响力的企业,从而获得了更多的技术资源和市场份额。这些并购不仅增强了AVAGO公司的综合实力,还为其在全球范围内的业务拓展奠定了坚实基础。

Engineered Components Co公司的发展小趣事

为了确保产品质量和客户满意度,ECC建立了完善的质量管理体系。他们从原材料采购到生产、检测、包装等各个环节都制定了严格的质量标准。ECC还引入了先进的质量检测设备和方法,确保每一件产品都符合高标准的质量要求。此外,ECC还定期对员工进行质量培训,提高员工的质量意识和操作技能。这些措施使得ECC的产品在市场上赢得了良好的口碑和信誉。

欧密格光电(Amicc)公司的发展小趣事

在追求经济效益的同时,ECC也注重可持续发展和环保责任。他们积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。ECC还投入资金建设了废水处理设施和废气处理设备,确保生产过程中的废弃物得到有效处理。此外,ECC还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了ECC的社会责任感,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

Win XP系统中巧查上网累计时间

  尽管现在宽带普及,但像笔者这样拨号上网的人也为数不少,断开网络连接后,这才想起查看一下上网时间,毕竟时间就是金钱吗!在Windows XP中,即使断开了网络连接,查看上网时间也是非常容易的。   在控制面板中,打开“管理工具”窗口, ...…

查看全部问答>

称重传感器选用

手动丝锥折断原因及预防措施摘要:喷瓷管线接头焊后涂层与基体的界面研究活塞裙部中凸变椭圆异型面车削加工卧式车床模块化及可编程控制器的应用高速走丝线切割加工中不稳定加工状态分析中国最大的卧螺离心机问世提高国产机床市场占有率大有可为断路 ...…

查看全部问答>

2009EEWORLD年度人物大评选活动(投票已经结束,评选已公布)

   ********************************************************************************* 活动进行阶段: ********************************************************************************* 提起EEWORLD,哪些是你一下就能够 ...…

查看全部问答>

AVR初学者提问

  我在做AVR的ADC实验时为什么第一次转换的电压值是正确的,而连续转换的电压不正确…

查看全部问答>

keil3能否用软件仿真arm运行

keil3能否用软件仿真arm运行…

查看全部问答>

请问~~wince5.0的基于s3c2440的BSP在哪里可以下载

缺省安装时 只带了2410的BSP,急求2440版本的~~…

查看全部问答>

请教mobile 5.0 加入汇编的问题

我把inline函数放到一个文件单独文件 有些函数比如说 FixPoint FixPoint::operator * ( const FixPoint& fp ) 这个函数在程序里面频繁调用 使用__asm{}加入arm汇编代码..不能编译通过.. nonstandard extension used : \'__asm\' keyword not s ...…

查看全部问答>

ce下有类似于skpye的应用程序可以用吗?

我下载了mobile版本的skype(cab安装包),在ce上不能安装; 我也下载了wince版本的SJphone(cab安装包),可以安装,但是双击后无法运行,也没有错误提示,就是没有对象出来! …

查看全部问答>

参加活动免费赠送Stellaris3S5956开发板

 继TI Stellaris Cortex-M3 的Sandstorm(沙暴)、Fury Class(狂暴)、Dustdevil Class(旋风)之后,Tempest Class(飓风)系列已开始全球批量供应。Stellaris基于实现了革命性突破的ARM Cortex-M3技术之上,是业界领先的高可靠性实时微处理 ...…

查看全部问答>