
STM32
文章平均质量分 94
LEODWL
To Do Something More and Fun......
展开
-
FreeRTOS的学习(十四)——PendSV异常
本文将从任务切换的角度出发,学习PendSV异常的相关概念。原创 2022-10-03 19:55:36 · 1465 阅读 · 0 评论 -
FreeRTOS的学习(十三)——任务创建
本文将分析阐述FreeRTOS的任务创建过程(以动态申请内存为例),并给出通用的步骤过程。原创 2022-09-06 23:06:54 · 925 阅读 · 0 评论 -
FreeRTOS的学习(十二)——任务调度器的开启
本文将分析阐述FreeRTOS的任务是如何开始调度。关于任务调度的内容由于涉及了很多底层的东西,所以相对晦涩难懂,尤其是很多的汇编语言以及地址,寄存器等等,记忆起来非常混乱。目前打算优先梳理逻辑过程,暂时忽视细节内容。...原创 2022-08-16 10:49:38 · 1113 阅读 · 0 评论 -
高精度DAC功能板
DAC8563是TI的低功耗、电压输出、双通道、16位数据转换器(DAC)。其包括一个2.5V,4ppm/℃内部基准,提供2.5V或者5V的满量程输出电压范围。内部基准具有 ±5mV 的初始精度,并且可以提供或吸收高达VREFIN/VREFOUT 引脚为 20 mA。这些器件是单调的,可提供出色的线性度并最大限度地减少不需要的代码间瞬态电压(毛刺)。它们使用以高达 50 MHz 的时钟速率运行的多功能三线串行接口。该接口与标准 SPI、QSPI、Microwire 和数字信号处理器 (DSP) 等接口兼容。原创 2022-07-07 11:09:33 · 7219 阅读 · 5 评论 -
FreeRTOS的学习(十一)——任务通知
FreeRTOS可以使用任务通知(Task Notifictions)这个功能来代替信号量、消息队列、事件标志组等。原创 2022-06-13 21:17:28 · 1555 阅读 · 1 评论 -
FreeRTOS的学习(十)——事件标志组
FreeRTOS可以使用信号量来同步任务,但是信号量的方法只能与单个的事件或任务进行同步。有时候某个任务可能会需要与多个事件或任务进行同步,此时信号量就无能为力了。FreeRTOS 为此提供了一个可选的解决方法,那就是事件标志组。.........原创 2022-06-13 16:17:52 · 1945 阅读 · 0 评论 -
FreeRTOS的学习(九)——软件定时器
FreeRTOS 提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。原创 2022-06-10 14:52:56 · 1158 阅读 · 0 评论 -
FreeRTOS的学习(八)——4.互斥信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-30 15:01:07 · 1652 阅读 · 0 评论 -
FreeRTOS的学习(八)——3.优先级翻转问题
前面提到了二值信号量的概念,但是在多个不同优先级的任务想要同时Take和Give二值信号量时,往往会因为被占用的问题,使得高优先级任务的执行顺序与低优先级任务一样。这种情况被称为优先级翻转,优先级翻转在可剥夺内核中是非常常见的,在实时系统中不允许出现这种现象,这样会破坏任务的预期顺序,可能会导致严重的后果。......原创 2022-05-30 09:47:12 · 815 阅读 · 0 评论 -
FreeRTOS的学习(八)——2.计数型信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-23 16:13:37 · 920 阅读 · 0 评论 -
FreeRTOS的学习(八)——1.二值信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-23 11:21:59 · 1748 阅读 · 0 评论 -
FreeRTOS的学习(七)——3.队列出队源码分析
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-22 21:09:34 · 1528 阅读 · 0 评论 -
FreeRTOS的学习(七)——2.队列入队源码分析
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-16 21:06:30 · 1264 阅读 · 0 评论 -
FreeRTOS的学习(七)——1.队列概念
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-13 22:17:51 · 1561 阅读 · 0 评论 -
温故知新(四)——GPIO模式详解
GPIO全称是general purpose input output,即通用输入输出端口,可以用作输入也可以做输出。GPIO端口可以通过程序配置成输入或者输出。以STM32为例,大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口)。一个引脚,可以作为IO口,同时也可以作为复用功能的外设引脚。原创 2022-05-09 10:15:57 · 3137 阅读 · 0 评论 -
FreeRTOS的学习(六)——系统时钟
本节介绍的是系统时钟,也就是FreeRTOS的时钟节拍是怎么来的,并且会介绍定时器中断的函数内部实现。原创 2022-05-06 21:03:28 · 11048 阅读 · 0 评论 -
FreeRTOS的学习(五)——系统延时
在前面的学习过程中大概了解了FreeRTOS的每个任务可以相互独立的编程,通过系统定时中断进行任务级别的切换。其中延时函数vTaskDelay()作为FreeRTOS的延时函数,其也具有任务切换的功能,即延时函数会将当前任务放入阻塞态等待延时时间结束,然后重新将该任务放入就绪态,按优先级运行。freeRTOS的系统延时又分为两种模式:一种是相对模式,容易由于任务主体时间影响而导致任务执行的时间太长。另一种是绝对模式,绝对模式可以很好的解决相对模式的问题,因为其延时时间是一个周期值,即任务周期运行的时间,原创 2022-05-04 00:49:39 · 7230 阅读 · 0 评论 -
宏定义函数与普通函数的区别
可以在前面的系列文章中看到,FreeRTOS 的 头文件中定义了大量的宏定义函数。单单从形式看宏定义的函数和普通函数并无太大的区别,但事实上两者还是有很大不同。原创 2022-04-18 16:55:46 · 3758 阅读 · 0 评论 -
FreeRTOS的学习(四)——列表
最近因为疫情,已经在家一个星期多了,由于状态不佳,也是在最近重新拾起了FreeRTOS的学习,学习的过程着实路长且艰 ,不过待到多年后回首,一定会感谢自己现在的付出。话不多说,这几天学了FreeRTOS的列表的组成和一些操作机制,对于数据结构(本科的时候学过,当时学的贼认真的一门课,虽然最后考试也才92,不过没到三年就忘的差不多了^-^)的内容需要重新学习,这个过程也是相对难熬的……...原创 2022-04-18 16:40:43 · 1778 阅读 · 0 评论 -
温故知新(一)——基于 RTOS 的软件开发理论
目录前言1 RTOS的特点2 任务设计2.1 任务的特性2.2 任务划分的方法2.2.1 设备依赖性任务2.2.2 关键任务2.2.3 紧迫任务2.2.4 数据处理任务2.2.5 触发条件相同的任务2.2.6 运行周期相同的任务2.2.7 顺序操作任务2.3 任务的可调度性分析2.4 任务类型2.4.1 单次执行的任务2.4.2 周期性执行的任务2.4.3 事件触发执行的任务2.5 任务优先级3 公共函数的设计3.1 互斥调用3.2 可重入设计3.3 运行效率4 中断服务程序的设计4.1 中断优先级4.2转载 2022-04-06 19:34:09 · 1518 阅读 · 0 评论 -
FreeRTOS的学习(三)——中断机制
FreeRTOS的任务优先级在之前已经进行了比较详尽的讨论,对此也有了一个清晰的认知。然而FreeRTOS的优先级始终是针对其本身的任务而言的,那么与STM32的内核的中断控制优先级之间是有什么联系嘛?还是有其他的一些方式将FreeRTOS与STM32的中断进行融合呢?...原创 2022-03-30 17:22:01 · 10791 阅读 · 2 评论 -
FreeRTOS的学习(二)——任务优先级问题
今天开始学了FreeRTOS的配置文件,也就是系列文章(一)里的FreeRTOSConfig,h,系统学习了里面的配置选项的含义。一、可使用的最大优先级这是我今天看完配置文件后存在的一个主要的疑惑,为什么设置的最大是32个优先级,虽然一般十来个优先级就足够使用了,因为多个任务能共用一个优先级,但是依旧让我存在一些疑惑:最大优先级能不能更多?有什么限制条件?二、寻找问题通过查询配置的宏configMAX_PRIO...原创 2022-03-23 15:13:40 · 6759 阅读 · 2 评论 -
FreeRTOS的学习(一)——STM32上的移植问题
最近完成了论文方面的任务,要逐步开始迈向技术学习的新阶段了,接下来准备学习一下操作系统。以前没有对这东西多感冒,因为自己基于arm写的代码都是在中断里的,基本上两个中断基本就解决了项目所需。但是随着产品化的想法逐渐深入,对于目标的实现也不仅仅是完成目标本身了,需要加入更多的可视界面以及交互功能。那么如何在多个功能中能够进行可靠的任务调度切换呢,RTOS就逐步进入了我的视野。选择FreeRTOS的来优先学习的原因也很简单,目前其市场占有率很高,其次是相对内容比较简单,没有复杂的东西。今天花了点时间把移植的过原创 2022-03-21 13:48:09 · 2650 阅读 · 0 评论 -
stm32f103c8使用stm32f103RC的库函数该做的事情
第一步,更换启动文件:将startup_stm32f10x_hd.s换成startup_stm32f10x_md.s。第二步,打开魔术棒,修改Device,改成stm32f103c8。如下图所示。第三步,更换全局宏定义,在下图Define的部分换成STM32F10X_MD,USE_STDPERIPH_DRIVER第四步,打开下图的右边的Settings,之后打开FlashDownload,删除原来的设备尺寸为256K的Flash,点击Add添加尺寸为128K的Flash。完成以上步骤应该就没原创 2020-09-17 19:47:23 · 2198 阅读 · 0 评论