自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (9)
  • 收藏
  • 关注

原创 ChatGPT带我做四轴飞行器和自平衡小车

使用ChatGPT做四轴飞行器和自平衡小车

2023-07-08 21:44:45 1319 1

原创 歌曲简谱转换为频率、时长数组

歌曲简谱转换为频率、时长数组。

2023-04-14 19:49:35 865 1

原创 openai api访问不了解决方案

2、python3.x版本在开了代理的情况下会运行报错,请降低urllib3模块的版本即可,pip install urllib3==1.25.11。1、参考博文:https://blog.csdn.net/qq_40134903/article/details/129332764。

2023-03-25 13:23:08 3770

原创 SPL06_001气压计驱动例程

SPL06_001气压计驱动例程

2022-08-25 22:05:36 2515 6

原创 C++单层状态机实现示例

C++单层状态机实现示例

2022-08-23 17:33:43 400

原创 动态规划——背包问题(C语言)

问题:现有四个物品,小偷背包总容量为8,怎么可以偷得价值最多的物品?物品编号:1 2 3 4物品重量:2 3 4 5物品价值:3 4 5 8记f(k, w):当背包容量为w,现有k件物品可以偷,所能得到的最大价值。#include <stdio.h>int f[5][9] = {0};int w[5] = {0, 2, 3, 4, 5}; /* 物品重量 */int v[5] = {0, 3, 4, 5, 8}; /* 物品价值 */ int main (void){

2021-11-07 20:37:04 1754

原创 《野火RT-Thread内核实现与应用开发实战》笔记10. 内存管理

1. 静态内存管理结构体struct rt_mempool{ struct rt_object parent; /**< 继承自 ipc_object 类 */ void *start_address; /**< 内存池起始地址 */ rt_size_t size; /**< 内存池的大小 */ rt_size_t block_s

2021-10-18 22:34:42 180

原创 《野火RT-Thread内核实现与应用开发实战》笔记9. 信号量,互斥量,事件

1. 信号量(Semaphore)结构体struct rt_semaphore{ struct rt_ipc_object parent; /**< 继承自 ipc_object 类 */ rt_uint16_t value; /**< 信号量的值,最大为 65535 */};typedef struct rt_semaphore *rt_sem_t;常用函数/** * This function

2021-10-16 22:40:17 143

原创 《野火RT-Thread内核实现与应用开发实战》笔记8. 消息队列

1. 基本概念队列又称消息队列,是一种常用于线程间通信的数据结构,队列可以在线程与线程间、中断和线程间传送信息,实现了线程接收来自其他线程或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在线程自己的空间。线程能够从队列里面读取消息,当队列中的消息是空时,挂起读取线程,用户还可以指定挂起的线程时间 timeout;当队列中有新消息时,挂起的读取线程被唤醒并处理新消息,消息队列是一种异步的通信方式。通过消息队列服务,线程或中断服务例程可以将一条或多条消息放入消息队列中。同样,一个或多个线程可

2021-10-16 18:15:17 294

原创 《野火RT-Thread内核实现与应用开发实战》笔记7. 支持时间片

1. 前期回顾前面的实验中,每个优先级下面只有一个线程,系统调度是根据优先级来切换线程,当同一优先级下有多个线程时,系统又是如何进行调度的呢?同一个优先级下有两个或两个以上线程的时候,线程支持时间片功能,即我们可以指定线程持续运行一次的时间,单位为 tick。 假如有两个线程分别为线程 2 和线程 3,他们的优先级都为 3,线程 2 的时间片为 2,线程 3 的时间片为 3。当执行到优先级为 3 的线程时,会先执行线程 2,直到线程 2 的时间片耗完,然后再执行线程 3 。2. 核心知识点线程控

2021-10-16 18:13:09 134

原创 《野火RT-Thread内核实现与应用开发实战》笔记6. 定时器的实现

1. 前期回顾在本章之前,为了实现线程的阻塞延时,在线程控制块中内置了一个延时变量remaining_tick。每当线程需要延时的时候,就初始化 remaining_tick 需要延时的时间, 然后将线程挂起,这里的挂起只是将线程在线程就绪优先级组中对应的位清 0,并不会将线程从线程优先级表(即就绪列表)中删除。 当每次时基中断(SysTick 中断) 来临时, 就扫描就绪列表中的每个线程的 remaining_tick, 如果 remaining_tick 大于 0 则递减一次,然后判断 remaini

2021-10-16 18:12:10 180

原创 《野火RT-Thread内核实现与应用开发实战》笔记5. 支持多优先级

1. 线程就绪优先级组简介线程就绪优先级组定义如下:rt_uint32_t rt_thread_ready_priority_group;从代码上看,线程就绪优先级组就是一个 32 位的整形数, 每一个位对应一个优先级。一个就绪优先级组最多只能表示 32 个优先级,如果优先级超过 32 个怎么办,则可以定义一个线程就绪优先级数组, 每一个数组成员都可以表示 32 个优先级,具体支持到少由系统的 RAM 的大小决定。线程就绪优先级组的每一个位对应一个优先级,位 0 对应优先级 0,位 1 对应

2021-10-16 18:10:43 201

原创 《野火RT-Thread内核实现与应用开发实战》笔记4. 空闲线程与阻塞延时的实现

为什么要实现空闲线程与阻塞延时?使用 RTOS 的很大优势就是榨干 CPU 的性能,永远不能让它闲着,线程如果需要延时也就不能再让 CPU 空等来实现延时的效果。 RTOS 中的延时叫阻塞延时,即线程需要延时的时候, 线程会放弃 CPU 的使用权, CPU 可以去干其它的事情,当线程延时时间到,重新获取 CPU 使用权, 线程继续运行,这样就充分地利用了 CPU 的资源,而不是干等着。如果没有其它线程可以运行, RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。 在RT-Th

2021-10-16 18:08:30 162

原创 《野火RT-Thread内核实现与应用开发实战》笔记3. RTT内核对象容器的实现

1. 什么是对象?对象类型枚举定义如下:enum rt_object_class_type { RT_Object_Class_Thread = 0, /* 对象是线程 */ RT_Object_Class_Semaphore, /* 对象是信号量 */ RT_Object_Class_Mutex, /* 对象是互斥量 */ RT_Object_Class_Event, /* 对象是事件 */ RT_Obj

2021-10-16 18:06:47 253

原创 《野火RT-Thread内核实现与应用开发实战》笔记2. 临界段的保护

临界段的保护在进入临界段之前,会先把中断关闭,退出临界段时再把中断打开。对于中断的操作,Cortex-M内核专门设置了一条CPS指令,有4种用法:CPSID I ; PRIMASK=1,关中断CPSIE I ; PRIMASK=0,开中断CPSID F ; FAULTMASK=1,关异常CPSIE F ; FAULTMASK=0,开异常关中断函数的汇编源码如下所示,该函数会先将PRIMASK寄存器的值保存在r0中,返回给调用者,然后再关闭中断。rt_hw_interrupt_disable

2021-10-16 18:04:15 189

原创 《野火RT-Thread内核实现与应用开发实战》笔记1. RT-Thread仿真工程

1. 重要数据结构介绍每个线程拥有一个独有的结构体:struct rt_thread { void *sp; /* 线程栈指针 */ void *entry; /* 线程入口地址 */ void *parameter; /* 线程形参 */ void *stack_addr; /* 线程栈起始地址 */ rt_uint32_t stack_size;

2021-10-16 18:01:42 433

原创 C语言实现1个字节Hex字符串转换为整型数据参考代码

C语言实现1个字节Hex字符串转换为整型数据参考代码:/** * \brief 將1Bytes Hex字符串轉換為整形 * * \param[in] str Hex字符串 * * \return 轉換後的整形數據 */unsigned char str_to_int (char *str){ unsigned char i; unsigned char ref[2]; /* 十位基准值,个位基准值 */ unsigned char width[2

2021-10-11 15:20:03 697

原创 【交叉编译】CMakeLists文件编写示例

1. 搭建测试文件结构新建test4文件夹,将test3文件夹中的libadd.so,add.h,main.c按如下结构放置于test4文件夹中:luo@luo-desktop:~/test4$ tree.├── add│ ├── include│ │ └── add.h│ └── lib│ └── libadd.so└── main.c2. 编写CMakeLists.txt文件新建CMakeLists.txt文件,源码如下:cmake_minimum_

2021-09-28 14:50:42 397

原创 【交叉编译】linux c文件生成so文件并调用示例

1. 搭建测试环境将add.c,add.h,main.c复制到test3文件夹中,文件列表如下:luo@luo-desktop:~/test3$ lsadd.c add.h main.c2. 交叉编译执行以下命令,交叉编译add.c文件为libadd.so文件:luo@luo-desktop:~/test3$ arm-linux-gnueabihf-gcc add.c -fPIC -shared -o libadd.soluo@luo-desktop:~/test3$ lsadd.c

2021-09-28 14:50:06 1993 1

原创 CMakeLists文件编写示例

1. 搭建测试文件结构新建test2文件夹,将test1文件夹中的libadd.so,add.h,main.c按如下结构放置于test2文件夹中:luo@luo-desktop:~/test2$ tree.├── add│ ├── include│ │ └── add.h│ └── lib│ └── libadd.so└── main.c2. 编写CMakeLists.txt文件新建CMakeLists.txt文件,源码如下:cmake_minimum_

2021-09-28 14:49:19 246

原创 linux c文件生成so文件并调用示例

1. 编写动态链接库的.c和.h源文件新建test1文件夹,在该文件夹下新建add.c文件,源码如下:int add(int a, int b){ return a+b;}新建add.h文件,源码如下:int add(int a, int b);文件列表如下:luo@luo-desktop:~/test1$ lsadd.c add.h2. 生成动态链接库文件执行以下命令生成libadd.so文件:luo@luo-desktop:~/test1$ gcc add.c -

2021-09-28 14:48:08 1834

原创 STC89C52RC I2C多字节读AT24C02问题

今天用51单片机驱动AT24C02,I2C是用I/O口模拟的,出现了个问题:I2C多字节读取24C02时,只有读出的第一个数正确,后面的都为0。找了一天终于定位到问题,问题在于我的__i2c_sendOneByte函数一开始没有把SDA拉高,因为I2C总线是“线与”关系,当主机将SDA拉低时,从机不能将SDA拉高,而我的I2C读函数应该将SDA的控制权交给从机,所以主机应该主动释放SDA(即将SD...

2020-02-12 20:46:35 1617 3

原创 VS2017新建和使用DLL(动态链接库)的方法

在网上搜了很多关于利用VS调用DLL的方法,自己尝试时还是不容易成功,原因总结有两点:1)教程不够详细;2)教程太古老,对于新版VS不适用。于是乎想自己写个详细,时髦点的教程,一是方便新学者快速上手,二是自己以后忘了方便查阅。一、利用VS2017新建DLL文件1、打开VS20172、新建一个DLL工程1)文件-》新建-》项目2)Visual C+±》Windows桌面-》动态链接库(...

2019-11-30 20:40:42 2277 1

原创 开关电源设计实例之Boost 篇

开关电源设计实例之Boost 篇一、设计要求设计一升压电路,输入电压 6.5 ~ 8.4V,输出电压 24V,最大功率60W,开关频率 50kHz。二、理论分析为使系统工作在电流断续模式(DCM)下,应当考虑最差情况:Ton 最大,也就是Vdc 最小,Ro最小(即输出功率最大)。1、求开关管 Q1 最大导通时间 Ton根据在一个周期 T 内,Q1 导通时 L1 上电流的增加量与Q1 ...

2019-08-10 17:04:51 6217

原创 PID控制算法的一点心得

一、位置式PID和增量式PID实际上是一样的,增量式PID优点更多,可以用位置式PID的系统也可以用增量式PID。二、积分系统先调P,然后调D,最后调I,比如温控系统、定位系统等 线性系统先调I, 然后调P,最后调D,比如速度控制系统,自动增益放大器等三、P改变系统的响应速度,太小容易产生静态误差,太大容易过冲和振荡 I 使系统更加稳定,减小静态误差 ...

2018-08-05 12:06:54 5266 1

基于 STM32F103C8T6 的测心跳血氧例程

内含基于 MAX30102 的测心跳血氧工程文件,MCU 是 STM32F103C8T6,亲测可用。

2019-01-15

周立功 AM824 光盘资料(全)

AM824BLE 开发平台主要用于 AW824BPT 蓝牙核心板的学习和开发,配套 AMetal 软件包,提供了各个外设的驱动程序、丰富的例程和详尽的资料,是工程师进行项目开发的首选。该平台也可用于教学、毕业设计及电子竞赛等.

2018-12-11

“串口调试助手”VB.net工程

自己写的串口调试助手,分享给大家一起学习~~~~~~~~~~~

2018-10-29

FPGA学习资料

内含《VHDL硬件描述语言与数字逻辑电路设计》、《VHDL语言100例详解 》、《深入浅出玩转fpga》,分享给大家~

2018-10-22

单电源供电集成运算放大器的电路及其应用

单电源供电运放电路设计是运放电路设计中的难点,本文档通过对几个常用单电源供电运放电路(同相、反向比例放大器,加法器,减法器,仪用放大器,一阶、二阶滤波器)的详细分析,从而熟悉并掌握单电源供电运放电路的设计

2018-10-22

实序列FFT算法的C语言实现

实序列FFT算法的C语言实现,文档写得非常详细,里面含有c程序代码及讲解,通俗易懂

2018-10-22

ADS1.2下载链接

是一个附有网盘下载链接的文档,里面没有安装教程(安装教程容易找,到处都是)分享给大家,绝对不骗人

2018-10-15

美观大方简历模板

绝对美观大方的简历模板,共有100多份,各类岗位应聘都适用

2018-10-15

温度控制系统

内含温控系统全套资料,非常详细,原创! 温控系统,上位机,下位机,程序

2018-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除