一 前记
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. C/C++ 监控磁盘与目录操作

    遍历磁盘容量: #include <stdio.h> #include <Windows.h> void GetDrivesType(const char* lpRootPat ...

  2. 从嘉手札<2023-10-16>

    一.商君书 1)更法 商鞅和甘龙.杜挚同秦孝公商量变法. 后两者认为变法会动移已有的社会结构,"圣人不易民而教,知者不变法而治""法古无过,循礼无邪" 但商鞅( ...

  3. SpringBoot分布式任务中间件开发 附视频讲解 (手把手教你开发和使用中间件)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 分布式任务DcsSchedule中间件,Github地址:https://github.com ...

  4. centos编译安装tcpdump

    环境 CentOS Linux release 7.9.2009 (Core) 准备安装包 libpcap-1.5.3.tar.gz tcpdump-4.9.2.tar.gz 下载地址:https:/ ...

  5. (Python)每日代码||2024.1.18

    m = 10 a = 10 print(id(m)) print(id(a)) '''输出 140713874176728 140713874176728 ''' print() a = 1 b = ...

  6. 高精度模板 大数加大数,可变数组vector实现

    vector<int> Add(vector<int>& A, vector<int>& B)//采用引用传入vector,避免将其全部复制传值,使 ...

  7. JS 一篇文章弄懂Object.defineProperty,现学现用,来试试相关笔试题吧

    壹 ❀ 引 早在大半年前,掘金某位用户分享的面试题整理中有一题,简述let与const区别,你能自己模拟实现它们吗?,题目意思大概如此,时间久远我也很难找到那篇文章,当时看到此题对于const实现我的 ...

  8. NC14291 Cut

    题目链接 题目 题目描述 给你一个长度为 \(n\) 的序列,你每次可以将一个序列分割成两个连续的的子序列, 分割的代价为原序列的总和. 现在允许你在初始时将序列重新排列一次. 问分割成 \(n\) ...

  9. NC24949 [USACO 2008 Jan S]Running

    题目链接 题目 题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exac ...

  10. springboot项目读取自定义的properties文件

    现在我们要在某个地方读取config.properties里的这几个属性值 这里使用三个注解即可读取自定义的配置文件内容(注意这里需要写他的setter和getter方法) @Component #注 ...