604|0

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【EFM32 Zero Gecko Starter Kit】-2-搭建开发环境 [复制链接]

本帖最后由 __lwl 于 2024-3-24 15:46 编辑

目前SiliconLabs芯片推荐的开发IDE是Simplicity Studio V5,下载安装过程比较漫长。

 

  、

 

安装好之后板子通过USB-B - USB A连接至电脑后,可以看到IDE正确识别开发板。

 

接着新建一个空白工程:

 

 

Simplicity studio V5提供了“Software Component”的功能,这里面把常见的硬件外设包括片上的或者板级的外设进行了模块化。

比如通过搜索LED,然后右上角点击Install,即可进入LED配置界面,比如分配GPIO引脚等。

 

接下来熟悉一下按键输入触发中断,首先配置按键输入引脚,以及工作模式:

  从原理图可以看出,按键0连接到PC8,按键1连接到PC9。接下来回到Simplicity Studio V5。

 

 

点击保存后,自动生成代码:

#include "sl_simple_button.h"
#include "sl_simple_button_btn0_config.h"
#include "sl_simple_button_btn1_config.h"

sl_simple_button_context_t simple_btn0_context = {
  .state = 0,
  .history = 0,
  .port = SL_SIMPLE_BUTTON_BTN0_PORT,
  .pin = SL_SIMPLE_BUTTON_BTN0_PIN,
  .mode = SL_SIMPLE_BUTTON_BTN0_MODE,
};

const sl_button_t sl_button_btn0 = {
  .context = &simple_btn0_context,
  .init = sl_simple_button_init,
  .get_state = sl_simple_button_get_state,
  .poll = sl_simple_button_poll_step,
  .enable = sl_simple_button_enable,
  .disable = sl_simple_button_disable,
};
sl_simple_button_context_t simple_btn1_context = {
  .state = 0,
  .history = 0,
  .port = SL_SIMPLE_BUTTON_BTN1_PORT,
  .pin = SL_SIMPLE_BUTTON_BTN1_PIN,
  .mode = SL_SIMPLE_BUTTON_BTN1_MODE,
};

const sl_button_t sl_button_btn1 = {
  .context = &simple_btn1_context,
  .init = sl_simple_button_init,
  .get_state = sl_simple_button_get_state,
  .poll = sl_simple_button_poll_step,
  .enable = sl_simple_button_enable,
  .disable = sl_simple_button_disable,
};

// the table of buttons and button count are generated as a
// convenience for the application
const sl_button_t *sl_simple_button_array[] = {
  &sl_button_btn0, 
  &sl_button_btn1
};
const uint8_t simple_button_count = 2;

void sl_simple_button_init_instances(void)
{
  sl_button_init(&sl_button_btn0);
  sl_button_init(&sl_button_btn1);
}

void sl_simple_button_poll_instances(void)
{
  sl_button_poll_step(&sl_button_btn0);
  sl_button_poll_step(&sl_button_btn1);
}

对于按键中断处理与液晶显示:



/***************************************************************************//**
 * Callback on button change.
 *
 * This function overrides a weak implementation defined in the simple_button
 * module. It is triggered when the user activates one of the buttons.
 *
 ******************************************************************************/
void sl_button_on_change(const sl_button_t *handle)
{
  if (sl_button_get_state(handle) == SL_SIMPLE_BUTTON_PRESSED) {
    if (&BUTTON_INSTANCE_0 == handle) {
      currentLine = 0;
      GLIB_clear(&glibContext);
    } else if (&BUTTON_INSTANCE_1 == handle) {
      GLIB_drawStringOnLine(&glibContext,
                            "BtnPressed!",
                            currentLine++,
                            GLIB_ALIGN_LEFT,
                            5,
                            5,
                            true);
    }
    DMD_updateDisplay();
  }
}

 

实物测试:

待完善。

此帖出自单片机论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表