| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> FreeRTOS学习记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置) -> 正文阅读 |
|
[嵌入式]FreeRTOS学习记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置) |
第一步的记录,用永远的带头大哥“跑马灯”,来熟悉一下开发环境以及操作流程,同时了解下CubeMX下关于 FreeRTOS 的配置方法。 1、STM32CubeMX下配置第一个FreeRTOS工程话不多说,先跑起来,然后再来一步一步分析,使用STM32CubeMX生成工程(下面的步骤属于STM32CubeMX的基础使用,这里我们不会介绍软件如何使用,只给出相关的操作步骤截图): 问题1、为什么不能使用System tick 分析这里需要知道,使用了FreeRTOS以后,FreeRTOS 会强制使用systick作为自己的心跳,这个os_tick的优先级是最低的,他主要是处理OS任务调度,时间片查询等工作。 在图中这里设置的Timebase是HAL库所使用的基础时钟 hal_tick, 如果设置成也设置成systick,优先级最低,那么 当然我们也经常强调不要在中断中使用延时!不要在中断中使用延时!不要在中断中使用延时! HAL_Delay() 函数在库中是基于所选择的的Timebase时钟来源实现的: 4、调试串口选择 问题2、为什么选择CMSIS_v1 分析首先我们得明白,CMSIS是什么? Cortex微控制器软件接口标准(CMSIS)是独立于供应商的硬件抽象层,用于基于Arm Cortex处理器的微控制器。 CMSIS定义了通用工具接口,并提供一致的设备支持。 CMSIS软件接口简化了软件重用,CMSIS提供了到处理器和外围设备,实时操作系统以及中间件组件的接口。 ------ CMSIS是接口! 官方的文档有这么一段: 6、创建任务 这里我们选择生成Makefile,因为我说过要抛弃MDK的盗版开发环境,开源走起,所以在此之前需要配置好开发环境。
然后编译下载 ,可以观察到板子上的LED灯安装程序跑起来了,至此,我们的FreeRTOS就用起来了(好的开始,宣告学会了一半 = =!)。 2、STM32CubeMX中 FreeRTOS 的配置说明我们从Config parameters中一点一点来看 内核相关设置系统工作模式系统时钟节拍FreeRTOS的时钟Tick的频率,也就是FreeRTOS用到的定时中断的产生频率,这个频率越高则定时的精度越高。但是系统消负担越大, 配置最大优先级数量IDLE TASK所占的空间任务描述信息长度任务在空闲优先级中的行为互斥量和信号量队列和信号量的数量任务的 ‘tag’ 值版本兼容低功耗模式任务通知任务的TCB内存管理相关设置内存分配最大使用大小内存管理方案钩子函数相关设置时间统计和任务可视化调试协同程序软件定时器中断配置SysTick中断和PendSV中断的优先级LIBRARY_LOWEST_INTERRUPT_PRIORITY 此宏定义是用来配置 FreeRTOS中用到的SysTick中断和PendSV中断的优先级reeRTOSreeRTOS reeRTOSreeRTOS 用到 的 SysTSysT ick 中断和 PendSV 中断 的优先级。在 NVIC分组设置为4的情况下,此宏定义的范围就是 0-15 ,即专门配置抢占优先级。这里 即专门配置抢占优先级。这里 配置 为了 15,即 SysTick和 PendSV 都配配置为了最低优先级,实际项目中也建议配置为最低优先级。 FreeRTOS管理的最高优先级中断LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 此选项定义了受FreeRTOS管理的最高优先级中断。简单的说就是允许用户在这个中断服务程序里面调用FreeRTOS的API的最高优先级。设置NVIC的优先级分组为4的情况下(全部配置为抢占式优先级。又因为STM32的优先级设置仅使用CM内核8bit中的高4bit,即只能区分2^4 = 16种优先级。因此当优先级分组设置为4的时候可供用户选择抢占式优先级为0到15,共16个优先级,配置为0表示最高优先级,配置为15表示最低优先级,不存在子优先级。),此配置可以在抢占式优先级为1到15的中断里面调用FreeRTOS的API函数,抢占式优先级为0的中断里面是不允许调用的。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:35:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |