一 前记
freetos在可穿戴设备上应用十分广泛,用来实现基本的按键和led控制,来熟悉它的基本架构。这是一个不错的尝试。
二 源码分析
1 系统初始化
这个启动task,相当于系统的入口函数,这里的setup_task承担着这个task的工作。
    xTaskCreate(setup_task, "Setup", 512, 0, 3, &xSetupTask);

2 这里才是启动ledtask的地方,相当于从系统初始进程里面生出来一个工作的进程。

void setup_task(void *pvParameters)
{
//
// Print a debug message.
//
am_util_debug_printf("Running setup tasks...\r\n"); //
// Run setup functions.
//
LedTaskSetup(); //disable_print_interface(); //
// Create the functional tasks
//
xTaskCreate(LedTask, "LEDTask", 512, 0, 3, &led_task_handle);
//
// The setup operations are complete, so suspend the setup task now.
//
vTaskSuspend(NULL); while (1);
}

3 在LedTask函数里面,是系统真正工作的处理:

void LedTask(void *pvParameters)
{
uint32_t bitSet; while (1)
{
//
// Wait for an event to be posted to the LED Event Handle.
//
bitSet = xEventGroupWaitBits(xLedEventHandle, 0x7, pdTRUE,
pdFALSE, portMAX_DELAY);
if (bitSet != 0)
{
// Button Press Event received
// Toggle respective LED(s)
if (bitSet & (1 << 0))
{
am_devices_led_toggle(am_bsp_psLEDs, 0);
am_util_debug_printf("LEDTask: led1 switch \n"); }
if (bitSet & (1 << 1))
{
am_devices_led_toggle(am_bsp_psLEDs, 1);
am_util_debug_printf("LEDTask: led2 switch \n"); }
if (bitSet & (1 << 2))
{
am_devices_led_toggle(am_bsp_psLEDs, 2);
am_util_debug_printf("LEDTask: led3 switch \n"); }
}
}
}
三 效果展示
编译下载之后,可以看到系统的日志信息:

 
尝试按键,发现每个按键是对应一个led的。说明功能完全ok了。

 
四 总结
 
一步步下来,发现AMA3B的上手速度还是比较快的。文档和代码比较全。

Ambiq Micro-AMA3B2KK-KBR芯片可穿戴产品解决方案开发之基于Freertos系统的按键和LED控制的更多相关文章

  1. 迅为IMX6Q开发板提供原理图_底板PCB_驱动程序源码_芯片和LCD数据手册_开发板环境_使用手册

      迅为IMX6开发板: Android4.4/6.0系统  Linux + Qt5.7系统  Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板 ...

  2. 哪些产品不用开发原生APP,微信公众号就够了?

    最近一阶段H5技术被推到高峰,很多人认为借助H5就能利用微信公众号取代APP原生应用了,而事实是怎么样的?这里我从产品层做一个客观分析. 一,原生APP总体趋势 要谈APP是否会被微信取代,那么必须回 ...

  3. Facebook产品的开发流程

    [编者注]王淮是Facebook第二位中国籍工程师,也是第一位中国籍研发经理,他一手开创了Facebook的支付安全和客服工具领域.2011年他离开Facebook,回国成为天使投资人,希望用自己在F ...

  4. Imec推出高性能芯片的低成本冷却解决方案

    Imec推出高性能芯片的低成本冷却解决方案 Imec unveils low-cost cooling solution for high-performance chips 3D打印冷却器优于传统解 ...

  5. 单芯片DP108USB声卡/音频解决方案完全替代CM108/CM108AH

    简介 DP108是一种高度集成的单芯片USB音频解决方案.所有重要的模拟模块嵌入DP108,包括双DAC和耳机放大器,ADC和麦克风助力器,锁相环,调节器,和USB收发器.许多功能与跳线或外部EEPR ...

  6. [转]Linux芯片级移植与底层驱动(基于3.7.4内核)

      1.   SoC Linux底层驱动的组成和现状 为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍.中断控制器.SMP启动.CPU hotplug以及底层的G ...

  7. 裁剪TOGAF进行产品架构开发

    http://ea.zhoujingen.cn/56.html . 有人和我说“周老师,我的企业条件不适合,学习企业架构没用.” 如果等公司让我用企业架构,估计会比我自己开始晚七八年.我们学习任何内容 ...

  8. “多团队大规模”开发模式 - 基于SAP HANA平台的多团队产品研发

    应用SAP HANA “官方”开发模式的伙伴们在转到“多团队大规模”开发模式时会遇到各式各样的心理不适应的状况,各种纠结.比如GIT Repository和HANA Repository冲突什么的. ...

  9. SAP HANA 开发模式 - 基于SAP HANA平台的多团队产品研发

    “基本”开发模式 Windows: Unix/Linux: 在基本模式下我们可以通过regi来进行激活我们的object.Regi是一个类git功能的,方便和HANA repository交互的一个命 ...

  10. 集成产品开发-IPD简介

    内训IPD流程,听完后,觉的流程的力量很强大,可以高效的团队几千上万人的研发团队,来正确地为同一个目标前进.因为讲解者是从华为出来的,所以,相关的案例分析以及理解,都是以华为研发为模板来讲解的.这没错 ...

随机推荐

  1. Java-Stream-flatMap

    Leave leave1 = new Leave("1","1",new Date(),CollUtil.newArrayList("A", ...

  2. PicGo + Gitee 实现 Markdown 图床

    最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...

  3. 用GPT4聊天制作AI绘画搞笑视频,播放量近10w,附GPT4开通教程

    AI一天,人间一年 大家好,我是小卷,最近大家在视频号.抖音刷短视频时,是不是经常刷到那种用AI生成的聊天搞笑绘画视频.比如下面这个视频:南方小土豆来哈尔滨 又或者是AI眼中的各个大学 又或者是两个大 ...

  4. 【实用小技巧】RSA非对称加解密及XML&PEM格式互换方案

    ​ 最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止tim ...

  5. 轻量级按键动作识别模块(C语言)

    1.前言 继嵌入式(单片机)裸机 C 语言开发 + 按键扫描(模块分层/非阻塞式)文章后,原来的按键识别基本能满足大部分需求,但是对于双击和多击等多样化的功能需求并不能满足,因此对整个按键动作识别模块 ...

  6. Power BI 1 DAY

    目录 Power BI(商业智能)分析 BI 分析步骤 Power Query 表数据结构 区别 主键 Power Query中的纵向合并与横向合并 销售一表和销售二表进行纵向合并为一张销售表. 产品 ...

  7. NVME(学习笔记一)—概述

    NVMe概述 NVMe是一个针对基于PCIe的固态硬盘的高性能的.可扩展的主机控制器接口. NVMe的显著特征是提供多个队列来处理I/O命令.单个NVMe设备支持多达64K个I/O 队列,每个I/O队 ...

  8. Linux进程通信 | 信号

    一.什么是信号? 信号就像是一个突然的电话铃声,它会打断正在进行的程序并引起其注意. 在Linux系统中,信号是一种软件中断,它通常是异步发生的,可以用来通知进程某个事件已经发生..每个信号都有一个唯 ...

  9. 解锁Mysql中的JSON数据类型,怎一个爽字了得

    引言 在实际业务开发中,随着业务的变化,数据的复杂性和多样性不断增加.传统的关系型数据库模型在这种情况下会显得受限,因为它们需要预先定义严格的数据模式,并且通常只能存储具有相同结构的数据.而面对非结构 ...

  10. VueRouter导航守卫

    VueRouter导航守卫 vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航,简单来说导航守卫就是路由跳转过程中的一些钩子函数,路由跳转是一个大的过程,这个大的过程分为跳转前中后 ...