东莞网站建设价格价格seo关键词优化

张小明 2025/12/25 12:14:21
东莞网站建设价格价格,seo关键词优化,建站行业乱象完整版,wordpress 3.5.2系列文章目录 文章目录 系列文章目录前言一、开发环境准备1. 硬件选择2. 软件工具(1) STM32CubeMX(2) Keil MDK-ARM(3) ST-Link驱动 二、使用STM32CubeMX配置FreeRTOS1. 新建项目2. 配置时钟和外设(1) 配置RCC#xff08;时钟#xff09;(2) 配置SYS#xff08;系统#xf…系列文章目录文章目录系列文章目录前言一、开发环境准备1. 硬件选择2. 软件工具(1) STM32CubeMX(2) Keil MDK-ARM(3) ST-Link驱动二、使用STM32CubeMX配置FreeRTOS1. 新建项目2. 配置时钟和外设(1) 配置RCC时钟(2) 配置SYS系统(3) 配置GPIOLED引脚3. 开启FreeRTOS组件三、FreeRTOS第一个任务创建1. 任务的基本概念2. 配置任务参数3. 生成代码四、编写LED闪烁任务代码1. 打开Keil MDK项目2. 编写任务函数3. 任务函数编写规范五、下载与运行1. 编译项目2. 下载到开发板3. 观察运行效果六、代码解析1. main.c中的FreeRTOS初始化流程2. 任务创建与调度分析七、实践任务八、总结前言上一篇文章中我们了解了FreeRTOS的基本概念和优势相信很多朋友已经跃跃欲试想亲手搭建FreeRTOS环境并运行第一个程序了。今天我们就来手把手教大家如何从0开始搭建FreeRTOS开发环境并创建第一个任务——让开发板上的LED灯闪烁起来一、开发环境准备1. 硬件选择为了方便学习和演示我们推荐使用以下硬件主控芯片STM32F103C8T6一款非常经典的Cortex-M3内核芯片资源适中价格便宜开发板最小系统板核心板带USB转串口功能辅助工具USB数据线用于供电、下载和串口通信当然如果你有其他STM32系列的开发板如F4系列、F7系列或者ESP32、NXP等其他品牌的开发板也完全可以使用操作步骤基本类似。2. 软件工具我们需要安装以下软件(1) STM32CubeMXSTM32CubeMX是ST公司官方推出的一款图形化配置工具可以帮助我们快速配置STM32芯片的各种外设和中间件包括FreeRTOS。下载地址ST官网STM32CubeMX下载页安装步骤下载后双击安装按照提示完成即可。需要注意的是安装过程中会要求安装Java运行环境JRE如果你的电脑上还没有安装JRE需要先安装JRE。(2) Keil MDK-ARMKeil MDK是一款专业的ARM嵌入式开发工具用于编写、编译和下载代码。下载地址Keil官网下载页安装步骤下载后双击安装按照提示完成即可。需要注意的是Keil MDK需要注册可以申请免费的4KB代码限制版本足够我们学习使用。(3) ST-Link驱动用于将代码下载到STM32开发板上。下载地址ST官网ST-Link驱动下载页安装步骤下载后解压运行安装程序即可。二、使用STM32CubeMX配置FreeRTOS1. 新建项目打开STM32CubeMX软件点击Access to MCU Selector访问MCU选择器。在搜索框中输入STM32F103C8T6然后在搜索结果中选择该芯片点击Start Project开始项目。2. 配置时钟和外设(1) 配置RCC时钟点击左侧System Core系统核心→ “RCC”。在右侧High Speed Clock (HSE)“高速时钟选项中选择Crystal/Ceramic Resonator”晶体/陶瓷谐振器。(2) 配置SYS系统点击左侧System Core系统核心→ “SYS”。在右侧Debug调试选项中选择Serial Wire串口线这样我们才能使用ST-Link进行调试和下载。(3) 配置GPIOLED引脚点击左侧System Core系统核心→ “GPIO”。在右侧芯片引脚图中找到并点击PC13引脚STM32F103C8T6最小系统板上的LED通常连接在PC13引脚上。在弹出的配置窗口中选择GPIO_OutputGPIO输出模式。在下方User Label用户标签中输入LED方便后续代码中引用。3. 开启FreeRTOS组件点击左侧Middleware中间件→ “FreeRTOS”。在右侧Mode模式选项中选择CMSIS_V1如果你的CubeMX版本较新也可以选择CMSIS_V2两者使用方法类似。点击Tasks and Queues任务和队列标签页然后点击Add添加按钮添加一个新任务。三、FreeRTOS第一个任务创建1. 任务的基本概念在FreeRTOS中任务是操作系统调度的基本单位每个任务都有自己的堆栈和任务控制块TCB。简单来说一个任务就是一个无限循环的函数例如voidTaskFunction(void*pvParameters){while(1){// 任务代码}}2. 配置任务参数在STM32CubeMX中我们可以通过图形化界面来配置任务的参数Task Name任务名称输入Task_LED。Priority优先级选择osPriorityLow在cube中配置每个任务优先级时还是只能选择7种优先级由低到高分别是osPriorityIdle空闲任务osPriorityLowosPriorityBelowNormalosPriorityNormalosPriorityAboveNormalosPriorityHighosPriorityRealtime 。。Stack Size堆栈大小输入128单位为字即128×4512字节足够我们的LED闪烁任务使用。Entry Function入口函数自动生成为StartTask_LED我们可以在这个函数中编写任务代码。Code Generation Option代码生成选项保持默认即可。配置完成后点击OK按钮保存。3. 生成代码点击右上角Project Manager项目管理器标签页。在Project Name项目名称中输入FreeRTOS_LED。在Project Location项目位置中选择一个合适的文件夹。在Toolchain/IDE工具链/IDE中选择MDK-ARM。点击Code Generator代码生成器标签页勾选Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral为每个外设生成一对.c/.h文件。最后点击右上角GENERATE CODE生成代码按钮生成Keil MDK项目。四、编写LED闪烁任务代码1. 打开Keil MDK项目代码生成完成后点击Open Project打开项目按钮或者在项目文件夹中找到FreeRTOS_LED.uvprojx文件双击打开。2. 编写任务函数在Keil MDK中展开Application/User/core文件夹找到并双击打开freertos.c文件。在该文件中我们可以找到自动生成的任务入口函数StartTask_LED/* USER CODE BEGIN Header_StartTask_LED *//** * brief Function implementing the Task_LED thread. * param argument: Not used * retval None *//* USER CODE END Header_StartTask_LED */voidStartTask_LED(voidconst*argument){/* USER CODE BEGIN StartTask_LED *//* Infinite loop */for(;;){HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);// 翻转LED引脚电平osDelay(1000);// 延时1秒}/* USER CODE END StartTask_LED */}我们需要在/* USER CODE BEGIN StartTask_LED/“和”/USER CODE END StartTask_LED */之间编写任务代码。上面的代码已经实现了LED闪烁功能HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin)翻转LED引脚的电平状态osDelay(1000)FreeRTOS的延时函数延时1000个时钟节拍默认1ms/节拍即延时1秒3. 任务函数编写规范在编写FreeRTOS任务函数时需要注意以下几点任务函数应该是一个无限循环不能返回任务函数内部应该有适当的延时让其他任务有机会执行任务函数的参数是一个void指针可以用来传递参数任务函数的命名应该清晰表明任务的功能五、下载与运行1. 编译项目在Keil MDK中点击左上角Rebuild重新编译按钮或者按下快捷键F7。等待编译完成如果没有错误下方Build Output编译输出窗口会显示0 Error(s), 0 Warning(s).。2. 下载到开发板将ST-Link调试器连接到开发板上然后将ST-Link的USB端连接到电脑。在Keil MDK中点击左上角Download下载按钮或者按下快捷键F8。等待下载完成下方Build Output编译输出窗口会显示Download completed successfully.。3. 观察运行效果下载完成后开发板上的LED灯应该开始闪烁大约每隔1秒闪烁一次亮1秒灭1秒。如果LED没有闪烁可以检查一下接线是否正确或者重新检查配置和代码。rtos的led六、代码解析1. main.c中的FreeRTOS初始化流程让我们来看一下main.c文件中的代码了解FreeRTOS的初始化流程intmain(void){/* USER CODE BEGIN 1 *//* 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();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Call init function for freertos objects (in freertos.c) */MX_FreeRTOS_Init();/* Start scheduler */osKernelStart();/* We should never get here as control is now taken by the scheduler *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}主要流程如下HAL_Init()初始化HAL库SystemClock_Config()配置系统时钟MX_GPIO_Init()初始化GPIO外设包括LED引脚MX_FreeRTOS_Init()初始化FreeRTOS对象包括创建我们的LED任务osKernelStart()启动FreeRTOS调度器2. 任务创建与调度分析在freertos.c文件中我们可以找到MX_FreeRTOS_Init()函数其中包含了任务创建的代码/* Init FreeRTOS */voidMX_FreeRTOS_Init(void){/* Create the thread(s) *//* definition and creation of Task_LED */osThreadDef(Task_LED,StartTask_LED,osPriorityNormal,0,128);Task_LEDHandleosThreadCreate(osThread(Task_LED),NULL);}这里使用了CMSIS-RTOS的API函数来创建任务osThreadDef()定义一个任务参数包括任务名称、任务入口函数、优先级、实例数和堆栈大小osThreadCreate()创建任务并返回任务句柄任务创建完成后调用osKernelStart()启动调度器FreeRTOS就会开始调度任务执行。我们的LED任务会每隔1秒翻转一次LED引脚的电平实现闪烁效果。七、实践任务为了加深大家对FreeRTOS任务优先级的理解我们可以做一个小实验在STM32CubeMX中再创建一个任务Task_LED2优先级设置为2比Task_LED的优先级1高。在Task_LED2的任务函数中同样实现LED闪烁功能但延时时间改为500毫秒。生成代码并下载到开发板观察LED的闪烁频率有什么变化。思考为什么会出现这样的变化这说明了FreeRTOS的什么调度特性八、总结通过本文的学习我们成功完成了以下内容搭建了FreeRTOS的开发环境STM32CubeMX Keil MDK配置了STM32F103C8T6的时钟、外设和FreeRTOS组件创建了第一个FreeRTOS任务实现了LED闪烁功能下载并运行了程序观察到了预期的效果解析了FreeRTOS的初始化流程和任务调度机制下一篇文章我们将深入学习FreeRTOS的任务管理包括任务的状态转换、优先级设置和调度策略等内容。敬请期待互动时间你在搭建FreeRTOS环境时遇到过哪些问题欢迎在评论区留言分享我们一起讨论解决如果这篇文章对你有帮助记得点赞、转发哦
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

课程网站建设特色黄骅贴吧的最新消息

Calibre阅读器终极指南:从新手到精通 【免费下载链接】calibre The official source code repository for the calibre ebook manager 项目地址: https://gitcode.com/gh_mirrors/ca/calibre Calibre阅读器是一款功能强大的开源电子书管理软件,为…

张小明 2025/12/25 12:12:19 网站建设

怎么做能上谷歌网站吗wordpress的页脚模板修改就出错

简介 本文介绍如何使用LangChain和FastAPI构建生产级工具增强型LLM Agent,实现token流式输出、代码执行和搜索能力。通过FastAPI异步能力和SSE实现低延迟流式传输,集成Python REPL、搜索API和PostgreSQL工具。这种Agent不仅能生成文本,还能使…

张小明 2025/12/25 12:10:17 网站建设

备案 网站名字河南网站建设外贸

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个bevfusion实战项目,包含完整的功能实现和部署方案。点击项目生成按钮,等待项目生成完整后预览效果 最近在研究自动驾驶领域的多传感器融合技术&…

张小明 2025/12/25 12:08:16 网站建设

织梦网站图片修改贵州新闻

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 Suno 创作《亲爱的你》歌词模式全流程制作 | 从零开始用Suno Ai | 第4篇 Suno 创作Rap音乐李白的《将进酒》 | 从零开始用Suno Ai | 第5篇 Suno用邓紫棋的声音唱《我不是真正的快乐》 |…

张小明 2025/12/25 12:06:15 网站建设

淘宝客可道cms网站建设建网站广州

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2025/12/25 12:04:12 网站建设

无锡高端网站建设咨询一建十个专业含金量排名

JSON Web Token (JWT) 是现代Web应用中广泛使用的身份验证机制,而JWT Tool正是测试和验证这些令牌安全性的强大工具。作为一款专为安全测试设计的Python工具,JWT Tool能够帮助开发者和安全研究人员全面评估JWT实现的安全性。在前100字内,我们…

张小明 2025/12/25 12:02:11 网站建设