EFR32MG裸机工程-3-按键

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21352095/article/details/82627389

转载请注明出处,谢谢!

Newbit-Msming 2018-09-11

环境:Windows 10、Simplicity Studio 4

SDK: Gecko SDK Suite

工程:自建

1、 参考 EFR32MG裸机工程-1-新建,新建一个空白工程;

2、 在工程中点击右键,New -> Other ->Simlicity Studio -> Simplicity Configurator Document -> Next,填写路径和文件名。
新建配置文件

3、 打开步骤2生成的文件,并添加2个按键,注意下图标号“4”,好像不能手动添加最后的两行,解决方法是直接更改文本文件,文本如下:

<property object="BTL_BUTTON" propertyId="BTL_BUTTON.BSP_BTL_BUTTON.PIN" value="PF6"/>
<property object="BUTTON" propertyId="ABPeripheral.included" value="true"/>
<property object="BUTTON" propertyId="BUTTON.BSP_BUTTON0.PIN" value="PF6"/>
<property object="BUTTON" propertyId="BUTTON.BSP_BUTTON1.PIN" value="PF7"/>
<property object="BUTTON" propertyId="BUTTON.HAL_BUTTON_COUNT.INT" value="2"/>
<property object="BUTTON" propertyId="BUTTON.showadvanced.BOOL" value="1"/>

改完后,保存或者在下图左边的区域点击右键-> Generate Source就会自动生成代码文件“hal-config.h”
config

4、 新建button.c和button.h文件,代码可以从其他工程Copy过来,其中按键处理函数如下:

WEAK(void halButtonIsr(uint8_t button, uint8_t state)
{
	if(button == BSP_BUTTON0_PIN && state == BUTTON_PRESSED)
		halToggleLed(BOARDLED0);
	if(button == BSP_BUTTON1_PIN && state == BUTTON_PRESSED)
		halToggleLed(BOARDLED1);
})

5、 一些必须的库文件:emdrv;

6、 main函数代码如下:

#include "em_device.h"
#include "em_chip.h"
#include "hal-config.h"
#include "button.h"
#include "led.h"

unsigned long i = 0xFFF;
unsigned char c = 5;
int main(void)
{
  /* Chip errata */
  CHIP_Init();

  halInternalInitLed();
  halInternalInitButton();
  /* Infinite loop */
  while (1) {

	  i=0xFfFFF;
	  while(i--);

	  if(c)
	  {
		c--;
	    halToggleLed(BOARDLED0);
	  }
  }
}

7、 烧录的时候烧录bin或者hex文件;

8、 代码请查看附件。

常驻:NewBit Studio

附件-工程代码

猜你喜欢

转载自blog.csdn.net/qq_21352095/article/details/82627389