基于尚硅谷FreeRTOS视频笔记——13—HAL库和RTOS时钟源问题

目录

一般情况

问题

修改后的情况

可以在stm32中开启RTOS

动手实操后感悟

第一个问题点

第二个问题点


RTOS的时钟源就是系统定时器中断,通俗来说就是系统定时器每中断一次,就扫描一次RTOS,查看RTOS中有没有任务的切换。

但是,系统存在一个HAL_Delay()函数,就是使用的系统定时器中断来执行的函数。

当我们在RTOS中,使用了HAL_Delay()函数,就会造成程序的卡死。

一般情况

如图

默认情况下,系统时钟是基于系统滴答定时器,并且优先级为1,相对较高。这样,在程序运行时,就不会被其他任务所打断。

问题

但是,在FreeRTOS也同样为系统systick来进行中断时**,为保证不影响stm32程序中的程序运行** ,会强制将systick设置为最低优先级,也就是15。这样,就会导致我们在RTOS中,使用了HAL_Delay()函数,就会造成程序的卡死的问题。

于是为了保证程序正常运行,我们一般将系统时间来源设置为其他定时器来提供。比如TIM7

修改后的情况

并将中断优先级设置为较高的 1.

需要设置为高优先级的原因

可以在stm32中开启RTOS

(这样配置的版本不是最新版本)

这样,就可以看到系统systick被强制设置为低优先级

如果不将系统时钟源更改

动手实操后感悟


自己实验后的感悟

我自己用的是蓝桥杯板子来做的实验,遇到的第一个问题就是不了解G431的代码怎么移植,还好遇到了一个博主,他有认真教我们怎么移植

STM32G431RBT6移植FreeRTOS_stm32g431 freertos-CSDN博客

第一个问题点

在我们进行移植时,在HAL中修改基本时钟源时,如果你手动移植了FreeRTOS时,不用打开FreeRTOS。

打开后程序会出现好多问题

第二个问题点

在我们RTOS移植的过程之中,我们将会找不到关于G431的程序文件,如果在不看链接中的内容时,将大可能配置不出,太多不熟悉的点了。

相关推荐
L@ncor8 小时前
第五章 基于低代码平台的智能体搭建 · 学习笔记(Coze / Dify / FastGPT / n8n)
笔记·学习·低代码·agent·prompt工程
知潮网8 小时前
被嫌弃的五仁月饼,一吨千元在养猪场翻了身
笔记
2601_960631238 小时前
中药前处理及提取的工艺环节与技术要点
笔记
2601_965384268 小时前
口腔黏膜清洁中的几何约束与流体动力学边界层问题分析
经验分享·笔记
一米阳光86619 小时前
软考高级【信息系统项目管理师】高项重要考点(9)组织 助你顺利上岸!
笔记·职场发展·软考·高项·信息系统项目管理师·高级职称
白杨尚青10 小时前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
Chen—LSN10 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表
Chen—LSN10 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
Lintongzg11 小时前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
LuminousCPP11 小时前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象