织梦生成网站地图郑州市建设路第二小学网站

张小明 2026/3/13 4:37:28
织梦生成网站地图,郑州市建设路第二小学网站,成华区网站建设,网站建设管理制度九不准在上位机上熟悉FreeRTOS API——环境配置 前言 我知道一些朋友初入RTOS的时候#xff0c;都是直接怼着单片机进行学习的#xff0c;笔者非常赞同这种方式#xff0c;毕竟RTOS最后是用在咱们的单片机上的#xff0c;复杂一些的嵌入式设备甚至可能要使用裁剪后的Linux。不过都是直接怼着单片机进行学习的笔者非常赞同这种方式毕竟RTOS最后是用在咱们的单片机上的复杂一些的嵌入式设备甚至可能要使用裁剪后的Linux。不过将单片机的一些特性跟RTOS的独有的概念混在一起有时候会有一些累。笔者学习的时候就有感触。笔者前段时间翻FreeRTOS的官网上就看到了在上位机模拟API的项目值得一提的是——它实际上是背靠了Linux System API / Win32 System API的因此这里模拟的RTOS实在是不Real Time但是对于新手熟知什么是任务内存管理信号量队列等内容是再合适不过的我相信大家学C语言都是从上位机开始的。这就是这篇博客的出发点。本篇博客的方案是使用CMake来管理我们的项目至少看着干净由于是CMake所以构建就跟平台无关了不管打算是WindowsWSL还是Linux的某一个发行版比如说咱们的Ubuntu都可以直接用起来。从拿到RTOS的源码开始Git用起来gitclone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodulesPS注意要用--recurse-submodules拉取内核源码和其它依赖否则编译会找不到头文件。这就是拉东西要拉全除非有doc告诉你不用拿。建立工程结构随便找一个文件夹我们的项目是这样的把搞下来的RTOS源码下的FreeRTOS目录这个目录下面就有Source等文件夹的放到我们的项目中freertos-posix-demo/ ├── FreeRTOS/ # 官方源码这就是纯粹的RTOS库不要动 ├── app/ # 你自己的 FreeRTOS 代码 │ ├── main.c │ └── FreeRTOSConfig.h ├── CMakeLists.txt # 顶层 CMake 构建文件 └── README.md编写 CMakeLists.txt这是一个最简版的CMakeLists.txt让你能在 Linux/WSL 上构建如果是Windows的朋友请参考官方文档自己修改下面的CMake。cmake_minimum_required(VERSION 3.10) project(freertos_posix_demo C) # 设置 FreeRTOS 源码路径 set(FREERTOS_ROOT ${CMAKE_SOURCE_DIR}/FreeRTOS) # 包含路径 include_directories( ${FREERTOS_ROOT}/Source/include ${FREERTOS_ROOT}/Source/portable/ThirdParty/GCC/Posix # Windows的主要改这里 ${FREERTOS_ROOT}/Source/portable/ThirdParty/GCC/Posix/utils # Windows的主要改这里 ${CMAKE_SOURCE_DIR}/app ) # Source 文件列表 file(GLOB FREERTOS_KERNEL_SRCS ${FREERTOS_ROOT}/Source/*.c ) file(GLOB FREERTOS_PORT_SRCS ${FREERTOS_ROOT}/Source/portable/ThirdParty/GCC/Posix/port.c # Windows的主要改这里 ${FREERTOS_ROOT}/Source/portable/ThirdParty/GCC/Posix/utils/*.c # Windows的主要改这里 ) # 应用层代码 file(GLOB APP_SRCS ${CMAKE_SOURCE_DIR}/app/*.c) add_executable(freertos_demo ${FREERTOS_KERNEL_SRCS} ${FREERTOS_PORT_SRCS} ${APP_SRCS} ) # pthread 和时间库 target_link_libraries(freertos_demo pthread) # Windows的主要改这里, 我记得好像可以不用加这个 CMake 列出 FreeRTOS 内核源码、POSIX portable 层和你的应用层。其中FreeRTOSConfig.h放在app/目录下内核文件从 FreeRTOS 主源码引用最终生成freertos_demo可执行文件FreeRTOSConfig.hRTOS项目需要FreeRTOSConfig.h才能跑起来在app/FreeRTOSConfig.h#ifndefFREERTOS_CONFIG_H#defineFREERTOS_CONFIG_H/*----------------------------------------------------------- * 应用相关配置 *----------------------------------------------------------*//* Cortex-M3 内核 */#defineconfigCPU_CLOCK_HZ((unsignedlong)72000000)/* RTOS Tick 频率1ms */#defineconfigTICK_RATE_HZ((TickType_t)1000)/* 最大任务优先级0 ~ 4 */#defineconfigMAX_PRIORITIES(5)/* 最小任务栈大小单位word不是字节 */#defineconfigMINIMAL_STACK_SIZE((uint16_t)128)/* FreeRTOS 堆大小字节 */#defineconfigTOTAL_HEAP_SIZE((size_t)(10*1024))/* 任务名最大长度 */#defineconfigMAX_TASK_NAME_LEN(16)/* 使用抢占式调度 */#defineconfigUSE_PREEMPTION1/* 使用时间片轮转 */#defineconfigUSE_TIME_SLICING1/* 空闲任务钩子 */#defineconfigUSE_IDLE_HOOK0/* Tick 钩子 */#defineconfigUSE_TICK_HOOK0/* 启用 16 位 TickSTM32F1 内存吃紧可用 1 */#defineconfigUSE_16_BIT_TICKS0/*----------------------------------------------------------- * 同步与通信机制 *----------------------------------------------------------*//* 互斥量一定要开教学和实战必用 */#defineconfigUSE_MUTEXES1/* 递归互斥量 */#defineconfigUSE_RECURSIVE_MUTEXES1/* 计数信号量 */#defineconfigUSE_COUNTING_SEMAPHORES1/* 任务通知强烈推荐性能最好 */#defineconfigUSE_TASK_NOTIFICATIONS1/* 队列注册调试用 */#defineconfigQUEUE_REGISTRY_SIZE8/*----------------------------------------------------------- * 软件定时器可选但建议打开 *----------------------------------------------------------*/#defineconfigUSE_TIMERS1#defineconfigTIMER_TASK_PRIORITY(2)#defineconfigTIMER_QUEUE_LENGTH5#defineconfigTIMER_TASK_STACK_DEPTH(256)/*----------------------------------------------------------- * 中断相关配置STM32F103 关键部分 *----------------------------------------------------------*//* STM32F103 NVIC 优先级位数 */#defineconfigPRIO_BITS4/* 最低中断优先级 */#defineconfigLIBRARY_LOWEST_INTERRUPT_PRIORITY15/* 允许调用 FreeRTOS API 的最高中断优先级 */#defineconfigLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY5/* 转换为 Cortex-M 内核可识别格式 */#defineconfigKERNEL_INTERRUPT_PRIORITY\(configLIBRARY_LOWEST_INTERRUPT_PRIORITY(8-configPRIO_BITS))#defineconfigMAX_SYSCALL_INTERRUPT_PRIORITY\(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY(8-configPRIO_BITS))/*----------------------------------------------------------- * 断言 *----------------------------------------------------------*/#includeassert.h#defineconfigASSERT(x)\if((x)0)\{\taskDISABLE_INTERRUPTS();\for(;;);\}/*----------------------------------------------------------- * 调试与统计教学强烈推荐 *----------------------------------------------------------*//* 启用运行时间统计 */#defineconfigGENERATE_RUN_TIME_STATS1/* 运行时间计数器配置需提供实现 */#defineconfigUSE_TRACE_FACILITY1#defineconfigUSE_STATS_FORMATTING_FUNCTIONS1/*----------------------------------------------------------- * API 包含控制建议全开 *----------------------------------------------------------*/#defineINCLUDE_vTaskPrioritySet1#defineINCLUDE_uxTaskPriorityGet1#defineINCLUDE_vTaskDelete1#defineINCLUDE_vTaskSuspend1#defineINCLUDE_vTaskDelay1#defineINCLUDE_vTaskDelayUntil1#defineINCLUDE_xTaskGetSchedulerState1#defineINCLUDE_xTaskGetCurrentTaskHandle1#defineINCLUDE_xTaskGetIdleTaskHandle1#defineINCLUDE_xTimerGetTimerDaemonTaskHandle1#endif/* FREERTOS_CONFIG_H */这是一个最基本的配置你可根据教学需要调整。示例的 main.c在app/main.c#includeFreeRTOS.h#includetask.h#includestdio.hvoidTask1(void*pv){for(;;){printf(Task1 running\n);vTaskDelay(pdMS_TO_TICKS(1000));}}intmain(void){xTaskCreate(Task1,t1,configMINIMAL_STACK_SIZE,NULL,1,NULL);vTaskStartScheduler();return0;}这个例子每秒打印一次任务信息用于演示调度器工作。构建与运行mkdirbuildcdbuild cmake..make./freertos_demo运行会输出你任务的打印内容。OK这样就搞定了
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

百度 网站地图怎么做昆明著名网站建设

亲测!这些口碑好的机油专业又好用引言机油对于汽车发动机的重要性不言而喻,它就像发动机的“血液”,起到润滑、冷却、清洁等关键作用。在市场上众多的机油品牌和型号中,如何选择一款适合自己车辆的优质机油呢?今天&…

张小明 2026/3/5 5:34:44 网站建设

企业网站建设应遵守的原则养生馆室内设计

Windows 11极致性能优化秘诀:告别卡顿的全方位解决方案 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化和…

张小明 2026/3/5 5:34:36 网站建设

漯河装修公司网站建设新的网站建设一般多少钱

Windows系统依赖组件一键修复终极指南:快速解决软件运行难题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C运行库是Windows系统中至关重要…

张小明 2026/3/5 5:34:34 网站建设

公司做网站需要注意些什么问题wordpress邮箱汉化插件

前言 第一部分 盈利思维与运营基础 第1章 抖音电商盈利思维 1.1 盈亏平衡点分析:C一年半实战复盘 1.2 抖音电商的四种盈利模式及适用场景 1.3 IT思维做运营:数据驱动、系统思考、敏捷迭代 1.4 构建运营的“安全区”与“加速器”:与平台共生 第2章 抖音电商全景认知 …

张小明 2026/3/5 5:34:41 网站建设

重庆网上商城网站建设公司建筑人才网官方网站入口

第一章:AI项目部署困境的根源剖析在AI技术迅猛发展的背景下,大量模型在实验室环境中表现出色,却难以在生产系统中稳定运行。这种“研发-部署”断层已成为制约AI商业化的关键瓶颈。其背后并非单一因素所致,而是由技术、流程与组织结…

张小明 2026/3/5 5:34:42 网站建设

石桥铺网站建设公司中国经济排名世界第几

第一章:Open-AutoGLM内存优化的核心挑战在大规模语言模型(LLM)推理场景中,Open-AutoGLM 作为一款自动化代码生成与理解系统,面临严峻的内存管理挑战。随着模型参数量级的提升,显存占用急剧上升,…

张小明 2026/3/5 5:34:40 网站建设