历史上的今天
返回首页

历史上的今天

今天是:2024年08月29日(星期四)

正在发生

2019年08月29日 | STM32F429 >> 5. 按键控制LED 开关

2019-08-29 来源:eefocus

本工程板级支持包文件适用于野火stm32f429 开发板。

本工程中涉及bsp_led.c, bsp_led.h 等文件,请前往STM32F429 >> 4. 使用固件库点亮LED进行查看


bsp_key.c

/**

  ******************************************************************************

  * @file    bsp_key.c

  * @author  Waao

  * @version V1.0.0

  * @date    20-Dec-2018

  * @brief   This file contains some board support package's functions for the KEY.

  *            

  ******************************************************************************

  * @attention

  *

  * None

*

  ******************************************************************************

  */


#include


/**

  * @brief  Initialize the key.

  * @note   None

  * @param  None  

  * @retval None

  */

void KEY_GPIO_Config(void)

{

GPIO_InitTypeDef GPIO_Structure;

RCC_AHB1PeriphClockCmd(KEY1_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(KEY2_GPIO_CLK, ENABLE);


GPIO_Structure.GPIO_Mode = GPIO_Mode_IN;

GPIO_Structure.GPIO_Speed = GPIO_Medium_Speed;

GPIO_Structure.GPIO_OType = GPIO_OType_PP;

GPIO_Structure.GPIO_PuPd = GPIO_PuPd_DOWN;

GPIO_Structure.GPIO_Pin = KEY1_PIN;

GPIO_Init(KEY1_GPIO_PORT, &GPIO_Structure);


GPIO_Structure.GPIO_Pin = KEY2_PIN;

GPIO_Init(KEY2_GPIO_PORT, &GPIO_Structure);

}



/**

  * @brief  Detect the key whether be pressed down actually.

  * @note   None

* @param  GPIOx: where x can be (A..K) to select the GPIO peripheral.

*         GPIO_Pin: specifies the port bit to read. This parameter can be GPIO_Pin_x where x can be (0..15). 

  * @retval The status of the input port.

  */

int Key_Scan(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

{

if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON)

{

while(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON);

return KEY_ON;

}

else

return KEY_OFF;

}


bsp_key.h

/**

  ******************************************************************************

  * @file    bsp_key.h

  * @author  Waao

  * @version V1.0.0

  * @date    20-Dec-2018

  * @brief   This file contains some board support package's definition for the KEY.

  *            

  ******************************************************************************

  * @attention

  *

  * None

*

  ******************************************************************************

  */

#ifndef __BSP_KEY_H_

#define __BSP_KEY_H_



#include


#define KEY1_PIN             GPIO_Pin_0

#define KEY1_GPIO_PORT       GPIOA

#define KEY1_GPIO_CLK        RCC_AHB1Periph_GPIOA


#define KEY2_PIN             GPIO_Pin_13

#define KEY2_GPIO_PORT       GPIOC

#define KEY2_GPIO_CLK        RCC_AHB1Periph_GPIOC


#define KEY_ON              1

#define KEY_OFF             0



void KEY_GPIO_Config(void);

int Key_Scan(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);



#endif


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

main.c

#include

#include

#include "bsp_led.h"


int main(void)

{

LED_GPIO_Config();

KEY_GPIO_Config();

LED_BLUE;

while(1)

{

if(Key_Scan(KEY2_GPIO_PORT, KEY2_PIN) == KEY_ON)

{

LED3_TOGGLE;

}

if(Key_Scan(KEY1_GPIO_PORT, KEY1_PIN) == KEY_ON)

{

LED3_TOGGLE;

}

}

}



推荐阅读

史海拾趣

CIPS公司的发展小趣事

随着CIPS系统的不断发展壮大,其在行业内的地位和影响力也逐渐提升。多家银行和金融机构因积极运用CIPS标准收发器推动跨境人民币业务发展而荣获奖项,这是对CIPS系统及其运营机构的高度认可。这些荣誉和奖项不仅彰显了CIPS在行业内的领先地位,也为其未来的发展奠定了坚实基础。

DETCO公司的发展小趣事

为了进一步拓展全球市场,ElectronicsCorp制定了国际化战略。公司先后在北美、欧洲和南美等地设立了研发中心和生产基地。这些海外机构不仅为ElectronicsCorp提供了更广阔的市场空间,还使其能够更深入地了解不同地区的消费者需求和文化背景。通过本土化战略的实施,ElectronicsCorp逐渐在海外市场取得了成功。

上海双岭电子(Double-peak)公司的发展小趣事

随着科技的不断发展,电子行业面临着日新月异的技术变革。为了保持竞争优势,双岭电子始终坚持创新驱动的发展理念。公司投入大量资金用于研发新技术、新产品,并鼓励员工提出创新性的想法和建议。通过不断的创新实践,双岭电子成功推出了MOS型场效应晶体管和CMOS集成电路等高端产品,进一步巩固了公司在行业中的领先地位。

FWBELL公司的发展小趣事
在保证安全的前提下,尽量设定较高的温度阈值以提高充电效率。
AKM [Asahi Kasei Microsystems]公司的发展小趣事
自动调整充电模式以适应电池温度的变化,实现智能化充电管理。
Corning Cable Systems公司的发展小趣事

在深海光缆领域,Corning Cable Systems公司也展现出了强大的实力。公司成功研发出适用于深海环境的光缆产品,并在多个国际项目中得到了广泛应用。这些深海光缆不仅具有优异的传输性能,还能够在极端恶劣的海底环境下保持长期稳定运行,为跨洋通信提供了可靠的保障。

问答坊 | AI 解惑

关于题C的问题

本帖最后由 paulhyde 于 2014-9-15 09:30 编辑 AD603产生的自激现象严重,当用两级放大时候,第二级放大严重失真,这个是什么原因啊?我们现在在AD603前面加了OPA658做前级跟随器,希望可以减小自激  …

查看全部问答>

发个我用的元件库

这是我平常所用到的元件库…

查看全部问答>

wince 的cab 安装包问题(vs2005)

想做一个cab安装包,安装今日插件,按照网上的说明写了个安装程序setupdll.dll, 但是在模拟器上(pocket pc se 2003 Emulator)安装发现setupdll没有被调用(在函数Install_Exit中加了MessageBox,没有弹出,注册表也没写) cab安装包使用vs2005做的 ...…

查看全部问答>

GPRS连接问题

我用OPEN AT 已经建立完成了GPRS激活部分,但是为什么数据流中什么都收不到,在超级终端里使用ATD*99***1#,可以收到PPP包,如何使用OPEN AT ADL也能收到这些PPP包?请指教一二!我在软件里已经加入了AT命令,但是没有任何反应,到底是什么地方出了 ...…

查看全部问答>

用KernelIoControl获取逻辑中断号失败

我想使用EINTT4作按键中断输入.定义如下: UINT32  g_EINTIrq = IRQ_EINT4; UINT32  g_EINTSysIntr = SYSINTR_UNDEFINED; PUBLIC DWORD CPK_Init(DWORD dwContext) {             &n ...…

查看全部问答>

EVC4.0中窗体最小化问题

想要实现一个最小化功能 使用ShowWindow函数没反应~ 请问各位还有什么其他办法不?…

查看全部问答>

dshow CreateMediaType FreeMediaType 无法解析的外部符号

我在wince6.0上做dshow开发,已经包含的头文件和库 #include #include #include #include #include                                     &n ...…

查看全部问答>

CE6及BSP安装求救!!!!紧急啊

我之前安装开发环境的时候,发现PB中Device Driver中的SD选项没有,后来把Updates全装上了,就出现了SD选项。 前几天系统崩溃了,重新装上所有东西后发现就是SD选项没有,各位有没有遇到过这种情况啊????急 …

查看全部问答>

请教中断问题

我在做关于MPC8260的工作.目前,我想为DMA加入中断处理程序.MPC8260的参考手册中 说,IDMA1的中断号是6,我使用如下函数: intConnect(INUM_TO_IVEC(6),dma_isr,0); 连接中断处理程序与中断源.但是一旦DMA结束,BC中断到来之后,整个EP8260板子就死掉 ...…

查看全部问答>

MCS-51单片机定时器问题

MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 ? MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP…

查看全部问答>