@@庆
码龄1年
关注
提问 私信
  • 博客:39,630
    39,630
    总访问量
  • 36
    原创
  • 23,557
    排名
  • 709
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:励志成为一个硬件小白 stm32内容来源江协科技 FreeRTOS内容来源韦东山老师(如有侵权私信删除)

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:山西省
  • 加入CSDN时间: 2023-08-24
博客简介:

2302_79504723的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    326
    当月
    60
个人成就
  • 获得952次点赞
  • 内容获得3次评论
  • 获得560次收藏
  • 代码片获得165次分享
创作历程
  • 36篇
    2024年
TA的专栏
  • C语言学习
    2篇
  • stm32(标准库)
    19篇
兴趣领域 设置
  • 嵌入式
    单片机stm3251单片机proteusmcu物联网嵌入式硬件iot嵌入式实时数据库rtdbs
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

任务中断的两套API函数(改进FormISR的实时性)资源管理_互斥操作的本质(解决DH11经常出错的问题)

为什么需要两套 API在任务函数中,我们可以调用各类 API 函数,比如队列操作函数:xQueueSendToBack。但是在 ISR 中使用这个函数会导致问题,应该使用另一个函数:xQueueSendToBackFromISR,它的函数名含有后缀"FromISR",表示"从 ISR 中给队列发送数据"。FreeRTOS中很多API函数都有两套:一套在任务中使用,另一套在ISR中使用。后者的函数名含有"FromISR"后缀。为什么要引入两套API函数?⚫很多API。
原创
发布博客 前天 15:52 ·
808 阅读 ·
21 点赞 ·
0 评论 ·
16 收藏

任务通知的本质(任务通知车辆运行) 软件定时器的本质(增加游戏音效)

所谓"任务通知",你可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。使用队列、信号量、事件组时,我们都要事先创建对应的结构体,双方通过中间的结构体通信。
原创
发布博客 2024.11.22 ·
1222 阅读 ·
30 点赞 ·
0 评论 ·
19 收藏

事件组(本质,车辆协同,改进姿态控制)

事件组的概念事件组可以简单地认为就是一个整数:⚫的每一位表示一个事件⚫每一位事件的含义由程序员决定,比如:Bit0表示用来串口是否就绪,Bit1表示按键是否被按下⚫这些位,值为1表示事件发生了,值为0表示事件没发生⚫一个或多个任务、ISR都可以去写这些位;一个或多个任务、ISR都可以去读这些位⚫ 可以等待某一位、某些位中的任意一个,也可以等待多位高八位用来表示是与关系还是或关系低八位用来表示是哪个任务的开启。
原创
发布博客 2024.11.11 ·
832 阅读 ·
19 点赞 ·
0 评论 ·
15 收藏

信号量本质 信号量实验(控制车辆运行,优先级反转)互斥量

前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示,比如:⚫卖家:做好了1个包子!做好了2个包子!做好了3个包子!⚫买家:买了1个包子,包子数量减1⚫这个停车位我占了,停车位减1⚫我开车走了,停车位加1在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存信号量的特性信号量的常规操作信号量这个名字很恰当:⚫信号:起通知作用⚫。
原创
发布博客 2024.11.02 ·
1084 阅读 ·
25 点赞 ·
0 评论 ·
22 收藏

FreeRTOS 队列实验改进程序框架 分发数据给多个任务

假设有 2 个输入设备:红外遥控器、旋转编码器,它们的驱动程序应该专注于“产生硬件数据”,不应该跟“业务有任何联系”。比如:红外遥控器驱动程序里,它只应该把键值记录下来、写入某个队列,它不应该把键值转换为游戏的控制键。在红外遥控器的驱动程序里,不应该有游戏相关的代码,这样,切换使用场景时,这个驱动程序还可以继续使用。把红外遥控器的按键转换为游戏的控制键,应该在游戏的任务里实现。要支持多个输入设备时,我们需要实现一个“InputTask”,它读取各个设备的队列,得到数据后再分别转换为游戏的控制键。
原创
发布博客 2024.11.01 ·
917 阅读 ·
21 点赞 ·
0 评论 ·
25 收藏

FreeRTOS 数据传输方法(环形buffer,队列的本质)队列实验—多设备玩游戏

环形buffer的本质就是一个循环队列,但是有一些不同。
原创
发布博客 2024.10.30 ·
1103 阅读 ·
22 点赞 ·
0 评论 ·
27 收藏

FreeRTOS同步互斥与通信(有缺陷的同步示例,有缺陷的互斥示例)

同步主要关注操作的顺序和条件,确保各线程按预期顺序执行。互斥关注资源的独占访问,确保同一时间只有一个线程可以操作共享资源。这两者结合使用,可以有效地管理多线程环境中的资源访问和执行顺序,从而提高程序的稳定性和性能。一句话理解同步与互斥:我等你用完厕所,我再用厕所。什么叫同步?就是:哎哎哎,我正在用厕所,你等会。什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来。同步与互斥经常放在一起讲,是因为它们之的关系很大,互斥操作可以使用同步来实现。我等你用完厕所,我再用厕所。这不就是用。
原创
发布博客 2024.10.25 ·
1337 阅读 ·
45 点赞 ·
0 评论 ·
11 收藏

FreeRTOS任务状态_改进播放控制 任务管理与调度 空闲任务及其钩子函数 两个Delay函数

在这个文章中我们简单的实现了任务的删除与创建 但是怎么才能实现任务的暂停与继续在我们执行任务时我们有任务的准备(ready)以及任务的运行(Running)同时也有任务阻塞(Blocked),以及任务的暂停如图空闲任务(Idle 任务)的作用之一:释放被删除的任务的内存。除了上述目的之外,为什么必须要有空闲任务?一个良好的程序,它的任务都是事件驱动的:平时大部分时间处于阻塞状态。有可能我们自己创建的所有任务都无法执行,但是调。
原创
发布博客 2024.10.24 ·
1235 阅读 ·
38 点赞 ·
0 评论 ·
24 收藏

FreeRTOS源码概述(内存管理,入口函数,数据类型和编程规范)创建任务(声光色影,使用任务参数)删除任务(使用遥控器控制音乐)

入口函数在 Core\Src\main.c 的 main 函数里,初始化了 FreeRTOS 环境、创建了任务,然后启动调度器。初始化FreeRTOS运行环境创建任务启动调度器这样就可以运行FreeRTOS内的代码任务数据类型和编程规范数据类型每个移植的版本都含有自己的头文件(其实就相当于对FreeRTOS代码进行规范),里面定义了2个数据类型:TickType_t◼FreeRTOS配置了一个周期性的时钟中断:◼每发生一次中断,中断次数累加,这被称为tick count。
原创
发布博客 2024.10.23 ·
1512 阅读 ·
42 点赞 ·
0 评论 ·
39 收藏

FreeRTOS基于汇编语言理解堆的概念,栈的概念(函数调用,局部变量,FreeRTOS如何使用栈)

在 ARM 系统中,栈和堆各自承担着重要的角色,栈用于快速管理局部数据,堆则用于处理动态数据。合理地使用这两种内存管理方式能够提高程序性能和稳定性。在 ARM 架构中,堆的分配和初始化过程中分配一个空的空间,有助于满足对齐要求、管理元数据、减少碎片化、提高安全性以及支持动态扩展。这些措施共同确保了内存管理的高效性和可靠性。
原创
发布博客 2024.10.22 ·
1109 阅读 ·
26 点赞 ·
0 评论 ·
19 收藏

FreeRTOS工程创建,创建多任务程序,基于汇编对ARM架构的简单理解

用途不同。
原创
发布博客 2024.10.21 ·
837 阅读 ·
23 点赞 ·
0 评论 ·
12 收藏

stm32四足机器人(标准库)

可以同时开启多个定时器的内部时钟配置,只需确保每个定时器都被正确初始化和配置即可。
原创
发布博客 2024.10.02 ·
1600 阅读 ·
24 点赞 ·
1 评论 ·
24 收藏

关于按键状态机解决Delay给程序带来的问题

IDLE,//按键按下PRESSED,//按键确定状态RELEASED//按键释放}KeyState;Key=1;
原创
发布博客 2024.10.01 ·
1109 阅读 ·
26 点赞 ·
0 评论 ·
7 收藏

C语言指针详解与应用(不断更新)

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针 定义一个指针变量:在定义指针时,它分配的字节大小是由计算机本身决定的,32位操作系统分配四个字节,64位操作系统分配8个字节。
原创
发布博客 2024.09.30 ·
1208 阅读 ·
36 点赞 ·
0 评论 ·
14 收藏

stm32 FLASH闪存(读写内部FLASH&读取芯片ID)

STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)(FLASH管理员)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途:利用程序存储器的剩余空间来保存掉电不丢失的用户数据通过在程序中编程(IAP),实现程序的自我更新在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG(stm32特有协议)、SWD协议(通用协议)或系统加载程序(Bootloader)下载程序。
原创
发布博客 2024.09.21 ·
1836 阅读 ·
42 点赞 ·
1 评论 ·
19 收藏

stm32 WDG看门狗(独立看门狗&窗口看门狗)

WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号STM32内置两个看门狗独立看门狗(IWDG):独立工作,对时间精度要求较低窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。
原创
发布博客 2024.09.20 ·
1032 阅读 ·
40 点赞 ·
0 评论 ·
18 收藏

stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)

PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间简介。
原创
发布博客 2024.09.19 ·
1609 阅读 ·
37 点赞 ·
0 评论 ·
13 收藏

stm32 Unix时间戳&BKP备份寄存器&RTC实时时钟(读写备份寄存器&实时时钟)

BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲存储RTC时钟校准寄存器用户数据存储容量:20字节(中容量和小容量)/ 84字节(大容量和互联型)RTC(Real Time Clock)实时时钟。
原创
发布博客 2024.09.18 ·
1091 阅读 ·
26 点赞 ·
0 评论 ·
23 收藏

stm32 SPI通信外设(硬件SPI读写W25Q64)

为了使STM32的GPIO口能够由硬件外设控制,并且满足外设对信号稳定性和驱动能力的需求,需要将GPIO口配置为复用推挽输出模式。这种配置不仅满足了外设的功能要求,还提供了引脚的多功能复用能力,使得系统设计更为灵活和高效。
原创
发布博客 2024.09.13 ·
1498 阅读 ·
31 点赞 ·
0 评论 ·
25 收藏

stm32 SPI通信协议&W25Q64(软件SPI读写W25Q64)

所有SPI设备的SCK、MOSI、MISO分别连在一起主机另外引出多条SS控制线,分别接到各从机的SS引脚输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入高位先行起始条件:SS从高电平切换到低电平 终止条件:SS从低电平切换到高电平向SS指定的设备,发送指令(0x06)向SS指定的设备,发送写指令(0x02), 随后在指定地址(Address[23:0])下,写入指定数据(Data)向SS指定的设备,发送读指令(0x03), 随后在指定地址(Address[23:0])下,读取从机数
原创
发布博客 2024.09.12 ·
1488 阅读 ·
44 点赞 ·
0 评论 ·
13 收藏
加载更多