蛋骗鸡~
码龄4年
关注
提问 私信
  • 博客:36,994
    36,994
    总访问量
  • 12
    原创
  • 306,848
    排名
  • 86
    粉丝
  • 0
    铁粉

个人简介:没有天分,只能努力

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

hgfjv的博客

查看详细资料
个人成就
  • 获得101次点赞
  • 内容获得27次评论
  • 获得423次收藏
  • 代码片获得1,659次分享
  • 博客总排名306,848名
创作历程
  • 7篇
    2024年
  • 1篇
    2023年
  • 4篇
    2022年
成就勋章
TA的专栏
  • 笔记
兴趣领域 设置
  • 人工智能
    集成学习
创作活动更多

『技术文档』写作方法征文挑战赛

在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它是知识传承的载体,是团队协作的桥梁,更是产品成功的幕后英雄。然而,打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼?是否纠结于文档结构与内容的完美融合?无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

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

rt-thread队列使用

线程读写消息队列时,如果读写不成功,可以即刻返回错误,也可以阻塞。消息是一种遵循先进先出的原则,比如装酒的漏斗,先倒进去的先流出来,是一个道理的。哪个线程先放数据,那么其他线程在读的时候,一定是先读到最早放入的那个数据,看下面的示意图就明白了。 多个线程都想写队列,但是队列已经满了,这些线程可以进入阻塞状态:它们都在等待队列有空间。 多个线程都想读队列,但是队列已经空了,这些线程可以进入阻塞状态:它们都在等待队列有数据。 在指定的时间内,别的线程或者中断服务程序写了队列,会把它唤醒。
原创
发布博客 2024.05.09 ·
509 阅读 ·
3 点赞 ·
0 评论 ·
8 收藏

rt-thread的邮箱理解与举例使用

向邮箱发送数据,如果满了那你就得等(挂起或者超时等待,时间一到就返回 - RT_ETIMEOUT并挂起等待着),等邮箱有空余空间了就会唤醒线程去存。邮箱的创建也比较简单,邮箱名,邮箱的数量。注意这里说的4个字节说的是每个每封邮件的大小,邮箱的数量指邮箱里面有多少封这样的邮件。第三个是先进先出等待,如果谁先被挂起,唤醒的时候就先唤醒谁,老生常谈了。邮箱也有静态和动态之分,这里用动态。前面是邮箱的对象,是给你区分用的是哪个邮箱的,接收邮箱也需要它,这样才能确保我给这个邮箱发,你从这个邮箱获取,形成对应关系。
原创
发布博客 2024.05.08 ·
1273 阅读 ·
5 点赞 ·
0 评论 ·
4 收藏

rt-thread互斥量介绍与使用例子

举个例子,现在有三个优先级不同的线程,高线程(H)、中线程(M)、低线程(L),如果L线程现在正享有信号量且信号量的值为1,L线程执行过程中延时让出CPU资源,理应H线程抢占去执行,但是没有信号量资源可用了只能挂起等待有信号量能用再唤醒,这时候有可能M线程被唤醒就去抢占L了。H线程最高优先级不能得到及时响应,这是我们不允许的。加上互斥锁后,H在等待L释放互斥量时时,L的优先级会被提升到和H一样,这样M就无法去抢占L了,H也能在L释放互斥量第一时间没被唤醒,这就是优先级继承和防止优先级反转混乱。
原创
发布博客 2024.05.07 ·
433 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

rt-thread事件集的介绍与使用示例

2.1 创建事件比较简单,rt_event_create()第一个参数是事件名,第二个是线程的属性,RT_IPC_FLAG_FIFO就代表当前线程如果接收不到事件就会一直等待,当有事件来的时候就第一个唤醒的是最早在等待的线程,先进先出。一个线程和多个事件的关系可设置为:其中任意一个事件唤醒 线程,或几个事件都到达后唤醒线程,多个事件集合可以用一个32bit无符号整型变量来表示,变量的每一位代表一个事件,线程通过"逻辑与"或"逻辑或"将一个或多个事件关联起来,形成事件组合。跟信号量、线程创建都是一个套路的。
原创
发布博客 2024.05.05 ·
718 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

rt-thread信号量解释与举例使用

如果当前信号量的值是0,再有线程去申请,就会挂在在该链表上等待新的信号量数值,如果数值大于0,就会唤醒在该等待队列的线程,至于唤醒是优先级线程唤醒还是先进先出唤醒,要看创建线程时是设置的什么属性,举例子时我会注释出来。每个信号量对象都有一个信号量值和一个线程等待队列,信号量的值对应了信号量对象的实例数目、资源数目,假如信号量值为 5,则表示共有 5 个信号量实例(资源)可以被使用,当信号量实例数目为零时,再申请该信号量的线程就会被挂起在该信号量的等待队列上,等待可用的信号量实例(资源)。
原创
发布博客 2024.05.04 ·
786 阅读 ·
3 点赞 ·
0 评论 ·
10 收藏

rt-thread定时器介绍与使用

而 rt_tick 随着硬件定时器的触发一直在增长(每一次硬件定时器中断来临,rt_tick 变量会加 1) ,50个tick以后,rt_tick从20增长到70,与Timer1的timeout值相等,这时会触发与Timer1定时器相关联的超时函数,同时将Timer1从rt_timer_list链表上删除。rt_timer_create()参数依次是定时器的名,定时器的超时函数,定时器的超时函数的输入参数,定时时间,定时设置的属性。RT_TIMER_FLAG_HARD_TIMER表示是软件定时器。
原创
发布博客 2024.04.30 ·
1231 阅读 ·
11 点赞 ·
0 评论 ·
17 收藏

rt-thread线程的创建以及点灯

第二个是线程入口函数,填自定义函数的名字即可,因为函数名是地址,这是一个回调,线程创建成功就出触发回调函数执行。/*500tick */的作用就是延时时把CPU使用权给别的线程,不然你就一直循环执行在这,别的线程就不能执行了,这是我们不允许的。rtthread接口rt_thread_create()就是创建动态线程,返回值也是rt_thread_t,所以我们要用rt_thread_t类型去定义一个结构体指针接收rt_thread_create()的返回值,这样我们就可以通过这个指针去访问线程了。
原创
发布博客 2024.04.29 ·
629 阅读 ·
3 点赞 ·
0 评论 ·
9 收藏

STM32——最好的指针详解

同级指针才能赋值,比如说chara = 0x66;char *p;那p=a就不成立,你可以这样理解,变量a是零级指针,p是一级指针,再往后还有二级、三级指针,不同级指针不能赋值。但是p=&a就成立,因为&之后,就是地址了,地址就是指针。
原创
发布博客 2023.10.15 ·
3984 阅读 ·
8 点赞 ·
1 评论 ·
47 收藏

STM32F103C8T6----ADC+DMA+串口显示

ADC+DMA+串口显示
原创
发布博客 2022.08.28 ·
5360 阅读 ·
15 点赞 ·
0 评论 ·
80 收藏

STM32F103C8T6串口发送字符串与代码详细讲解说明

STM32串口发送字符串
原创
发布博客 2022.07.25 ·
6287 阅读 ·
14 点赞 ·
6 评论 ·
60 收藏

【STM32】数码管显示按键控制舵机转动的角度(二)

舵机控制
原创
发布博客 2022.07.03 ·
2872 阅读 ·
3 点赞 ·
14 评论 ·
24 收藏

STM32F103C8T6-----按键控制LED灯亮灭(一)

*通过RCC里面的APB2外设时钟控制函数打开GPIOX时钟;*通过GPIO_Init()函数自动读取结构体的值,然后自动把外设的各个参数配置好,我们只需要提前把结构体参数配置好即可;我比较喜欢模块化编程,这样下一次使用就不用再写了,直接复制粘贴到工程文件夹里,然后头文件声明就可以调用了。main.c:#include "stm32f10x.h" // Device header#include "LED.h" #include "Delay.h"
原创
发布博客 2022.01.15 ·
12745 阅读 ·
26 点赞 ·
8 评论 ·
155 收藏