标签:AMA3B2KK task LED Freertos setup bitSet 按键 led void
一 前记 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的上手速度还是比较快的。文档和代码比较全。
标签:AMA3B2KK,task,LED,Freertos,setup,bitSet,按键,led,void 来源: https://www.cnblogs.com/dylancao/p/16093661.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。