Ambiq Micro-AMA3B2KK-KBR芯片可穿戴产品解决方案开发之基于Freertos系统的按键和LED控制
2023-09-11 14:17:11 时间
一 前记
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"); } } } }
三 效果展示
编译下载之后,可以看到系统的日志信息:
![](https://pic1.zhimg.com/80/v2-b1331e2c21e7b3f84b45905a289af587_720w.png)
尝试按键,发现每个按键是对应一个led的。说明功能完全ok了。
![](https://pic2.zhimg.com/80/v2-974c6ae235347404817c4a07279d670c_720w.jpeg)
四 总结
一步步下来,发现AMA3B的上手速度还是比较快的。文档和代码比较全。
相关文章
- C/C++控制Windows关机/注销/重启的正确姿势
- Spring核心(ioc控制反转)
- 三关节机械臂控制命令修改
- Python 基础|4 种条件控制语句
- 系统学习JAVA第七天(流程控制语句、方法、冒泡排序、二分查找)
- DCL 管理用户与权限控制
- iOS 9音频应用播放音频之控制播放速度
- SpringBoot整合SpringSecurity做认证和权限控制案例(含Demo代码)
- macOS SwiftUI 开发教程之 popover通过选择item内容控制弹框(技巧含源码)
- 智能家居UI--灯光控制
- iic 控制源码
- JS 四种条件控制语句
- setState()批处理,合并策略,控制批处理----batchUpdates