当前位置: 首页 > news >正文

单县网站惠州seo计费

单县网站,惠州seo计费,超值的网站建设,注册页面嵌入式轻量级开源操作系统:HeliOS的使用 #x1f4cd;项目地址#xff1a;https://github.com/heliosproj/HeliOS HeliOS项目是一个社区交付的开源项目#xff0c;用于构建和维护HeliOS嵌入式操作系统#xff08;OS#xff09;。HeliOS是一个功能齐全的操作系统#xff0… 嵌入式轻量级开源操作系统:HeliOS的使用 项目地址https://github.com/heliosproj/HeliOS HeliOS项目是一个社区交付的开源项目用于构建和维护HeliOS嵌入式操作系统OS。HeliOS是一个功能齐全的操作系统旨在满足由爱好者、研究人员、STEM教育工作者和学者组成的广泛用户社区的需求。HeliOS还旨在满足各种技能水平用户的需求从在其Arduino项目中实施操作系统的电子爱好者,以及到开发将部署到现场的遥感仪器的研究科学家。 当前该系统支持的开发环境或平台Arduino IDE、PlatformIO IDE、ARM Cortex-M。 ✨请注意当使用ESP32 Arduino内核时Espressif ESP32微控制器上不支持HeliOS。这是因为ESP32 Arduino内核是基于FreeRTOS构建的HeliOS和FreeRTOS不能在同一个应用程序中共存。要针对ESP32HeliOS必须使用Espressif的SDK构建而不是使用ESP32 Arduino内核。 /src/port.h和 /src/port.c的文件也需要更新必要的代码来控制中断和访问微控制器的滴答计时器。 对于微控制器的MMU或MPU内存保护单元启用时可能无法从用户代码中访问内存映射寄存器和I/O。 HeliOS API文档说明https://github.com/heliosproj/HeliOS/blob/master/doc/HeliOS_Developers_Guide.pdf 本文主要测试Arduino IDE平台的使用和用Keil MDK以 ARM Cortex-MMCU移植HeliOS的使用。 Arduino IDE平台构建和测试 安装依赖库HeliOS 库所提供的相关测试例程 - 测试例程代码一 一个基础的点灯程序。 /*UNCRUSTIFY-OFF*/ /*** file Blink.ino* author Manny Peterson mannyheliosproj.org* brief An example Arduino sketch* version 0.4.1* date 2023-03-19* * copyright* HeliOS Embedded Operating System Copyright (C) 2020-2023 HeliOS Project licenseheliosproj.org* * SPDX-License-Identifier: GPL-2.0-or-later* * */ /*UNCRUSTIFY-ON*/ #include Arduino.h #include HeliOS.hvoid blinkTask_main(xTask task_, xTaskParm parm_) {int ledState DEREF_TASKPARM(int, parm_);if(ledState) {digitalWrite(LED_BUILTIN, HIGH);Serial.println(LED colosed);ledState 0;} else {digitalWrite(LED_BUILTIN, LOW);Serial.println(LED open);ledState 1;}DEREF_TASKPARM(int, parm_) ledState;return; }void setup() {xTask blink;int ledState;Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);//初始化系统if(ERROR(xSystemInit())) {xSystemHalt();//停止HeliOS}//创建一个任务传入任务指针 task、任务名称 PRINTTSK、任务函数 taskPrint_main 和任务函数参数if(ERROR(xTaskCreate(blink, (const xByte *) BLINKTSK, blinkTask_main, ledState))) {xSystemHalt();}//将任务置于“等待”状态。if(ERROR(xTaskWait(blink))) {xSystemHalt();} //同步扫描来更改任务计时器的时间间隔周期。任务被调度执行的间隔时间if(ERROR(xTaskChangePeriod(blink, 1000))) {xSystemHalt();}//启动HeliOS调度程序if(ERROR(xTaskStartScheduler())) {xSystemHalt();}xSystemHalt(); }void loop() {}以上代码上传到328PB上传测试结果 - 测试例程代码二 运行两个占用不同时间的任务函数 /*UNCRUSTIFY-OFF*/ /*** file Coop.ino* author Manny Peterson mannyheliosproj.org* brief An example Arduino sketch* version 0.4.1* date 2023-03-19* * copyright* HeliOS Embedded Operating System Copyright (C) 2020-2023 HeliOS Project licenseheliosproj.org* * SPDX-License-Identifier: GPL-2.0-or-later* * */ /*UNCRUSTIFY-ON*/ #include Arduino.h #include HeliOS.hvoid taskShort_main(xTask task_, xTaskParm parm_) {/* Arduinos delay() is only used here to demonstrate HeliOS functionality and* must not be used in a real application built on HeliOS. */delay(500);Serial.print(S);digitalWrite(LED_BUILTIN, LOW); }void taskLong_main(xTask task_, xTaskParm parm_) {/* Arduinos delay() is only used here to demonstrate HeliOS functionality and* must not be used in a real application built on HeliOS. */delay(1000);Serial.println(L);digitalWrite(LED_BUILTIN, HIGH); }void setup() {xTask shortTask;xTask longTask;Serial.begin(9600);pinMode(LED_BUILTIN, OUTPUT);if(ERROR(xSystemInit())) {xSystemHalt();}if(ERROR(xTaskCreate(shortTask, (const xByte *) SHORTTSK, taskShort_main, null))) {xSystemHalt();}if(ERROR(xTaskCreate(longTask, (const xByte *) LONGTSK , taskLong_main, null))) {xSystemHalt();}if(ERROR(xTaskResume(shortTask))) {xSystemHalt();}if(ERROR(xTaskResume(longTask))) {xSystemHalt();}if(ERROR(xTaskStartScheduler())) {xSystemHalt();}xSystemHalt(); }void loop() {}- 测试例程代码三 查询系统和任务信息 /*UNCRUSTIFY-OFF*/ /*** file GetInfo.ino* author Manny Peterson mannyheliosproj.org* brief An example Arduino sketch* version 0.4.1* date 2023-03-19* * copyright* HeliOS Embedded Operating System Copyright (C) 2020-2023 HeliOS Project licenseheliosproj.org* * SPDX-License-Identifier: GPL-2.0-or-later* * */ /*UNCRUSTIFY-ON*/ #include Arduino.h #include HeliOS.hvoid taskPrint_main(xTask task_, xTaskParm parm_) {String str;xTaskInfo tinfo;xSystemInfo sinfo;//用于获取关于单个任务的信息。提供了任务的状态和名称以及任务的运行时统计信息。if(OK(xTaskGetTaskInfo(task_, tinfo))) {str taskPrint_main(): id ;str tinfo-id;str , name ;str xByte2String(CONFIG_TASK_NAME_BYTES, tinfo-name);str , state ;str tinfo-state;str , ltime ;str tinfo-lastRunTime;str , ttime ;str tinfo-totalRunTime;Serial.println(str);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//释放堆内存if(ERROR(xMemFree(tinfo))) {xSystemHalt();}}//获取系统信息名称、版本和任务的数量if(OK(xSystemGetSystemInfo(sinfo))) {str taskPrint_main(): ;str xByte2String(OS_PRODUCT_NAME_SIZE, sinfo-productName);str ;str sinfo-majorVersion;str .;str sinfo-minorVersion;str .;str sinfo-patchVersion;str has ;str sinfo-numberOfTasks;str task.;Serial.println(str);if(ERROR(xMemFree(sinfo))) {xSystemHalt();}} }void setup() {xTask task;Serial.begin(9600);pinMode(LED_BUILTIN, OUTPUT);if(ERROR(xSystemInit())) {xSystemHalt();}if(ERROR(xTaskCreate(task, (const xByte *) PRINTTSK, taskPrint_main, null))) {xSystemHalt();}if(ERROR(xTaskWait(task))) {xSystemHalt();}if(ERROR(xTaskChangePeriod(task, 1000))) {xSystemHalt();}if(ERROR(xTaskStartScheduler())) {xSystemHalt();}xSystemHalt(); }void loop() {}Keil MDK以 ARM Cortex-MMCU移植HeliOS的使用 这里以常见的stm32f103为例基于STM32CubeMX生成必要的工程代码作为基础。来实现对HeliOS系统的移植使用。 STM32移植HeliOS使用步骤 使用STM32CubeMX创建工程。修改默认时基由于HeliOS需要使用到滴答定时器作为时基所以这里换成一个没有使用到的基本定时器。 NVIC修改取消默认滴答定时器中断回调代码生成的勾选由于HeliOS原驱动代码中已经包含相关代码。 其他的外设可以按需配置即可。 移植部分 将HeliOS原项目下载下来拷贝项目中src文件夹到自己所创建的项目文件夹中。 将源文件.c添加到工程中 将头文件.h路径添加到工程目录中 添加宏CMSIS_ARCH_CORTEXM 修改头文件port.h: #elif defined(CMSIS_ARCH_CORTEXM)// #include stm32f429xx.h#include stm32f1xx_hal.h//mcu型号头文件#define DISABLE_INTERRUPTS() __disable_irq()#define ENABLE_INTERRUPTS() __enable_irq()// #define SYSTEM_CORE_CLOCK_FREQUENCY 0xF42400u /* 16000000u */#define SYSTEM_CORE_CLOCK_FREQUENCY 0x44AA200u /* 72000000u 修改主频*/#define SYSTEM_CORE_CLOCK_PRESCALER 0x3E8u /* 1000u 分频系数*/main.c添加必要的HeliOS.h头文件创建任务。 /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include stdio.h #include HeliOS.h /* USER CODE END Includes */创建任务: /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ void blinkTask_main(xTask task_, xTaskParm parm_) {int ledState DEREF_TASKPARM(int, parm_);if(ledState) {HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);printf(LED colosed.\r\n);ledState 0;} else {HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);printf(LED open.\r\n);ledState 1;}DEREF_TASKPARM(int, parm_) ledState;return; } /* USER CODE END 0 */main函数 int main(void) {/* USER CODE BEGIN 1 */xTask blink;GPIO_PinState ledState;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */ if(ERROR(xSystemInit())) {xSystemHalt();}if(ERROR(xTaskCreate(blink, (const xByte *) BLINKTSK, blinkTask_main, ledState))) {xSystemHalt();}if(ERROR(xTaskWait(blink))) {xSystemHalt();}if(ERROR(xTaskChangePeriod(blink, 1000))) {xSystemHalt();}if(ERROR(xTaskStartScheduler())) {xSystemHalt();}xSystemHalt();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }驱动代码效果和上面的Arduino代码差不多。 移植后的工程测试源码 通过网盘分享的文件HeliOS_Temp.rar 链接: https://pan.baidu.com/s/1PTqbM2gSwFqDfamEW_w-tA?pwdpmdm 提取码: pmdm
http://www.w-s-a.com/news/896895/

相关文章:

  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告
  • 深圳做商城网站视觉品牌网站建设
  • 永康电子商务网站建设弹幕网站怎么做
  • 百川网站企业做网站要注意哪些
  • 球迷类的网站如何做网站建设需要哪些素材
  • 请问有重庆有做网站吗电子政务系统网站建设的基本过程
  • 建设银行管方网站官网最新版cmsv6
  • 网站开发工程师需要会写什么深圳网站(建设信科网络)
  • 台州网站搭建网站建设需求计划
  • 网站app免费下载软件大全大连百度推广哪家好
  • 网站建设的面试要求iis做的网站手机怎么访问
  • 定州市住房保障和城乡建设局网站上海网站建设排行
  • 网站发帖百度收录网站改版后不收录
  • 昆明建设局网站号码网站开发 浏览器兼容性
  • 湖北专业网站建设大全室内设计联盟app下载
  • 网站建设的意义和作用江苏城市建设档案馆网站