- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 STM32G473VET6 在 Keil MDK 下手动移植 FreeRTOS 指南
详细介绍如何在 Keil MDK 环境下将 FreeRTOS 手动移植到 STM32G473VET6 微控制器上。内容涵盖工程创建、获取源码、文件组织、移植层适配、测试任务编写以及编译调试等步骤。
2025-02-27 10:18:33
1231
原创 FreeRTOS基础知识学习指南
以下内容涵盖FreeRTOS的核心概念,包括任务管理、调度、中断、互斥量与信号量、队列和内存管理等主题。每部分提供基本原理说明,并辅以简要的代码示例帮助理解。
2025-02-26 14:55:42
1039
原创 LabVIEW编程基础教学(二)--数据类型
掌握LabVIEW的基本数据类型是学习LabVIEW编程的第一步。不同的数据类型适用于不同的应用场景,你需要根据具体的需求来选择适合的类型。希望通过上面的讲解,你对LabVIEW的基础数据类型有了更清晰的认识。如果你对某一类型或概念有更多问题,欢迎继续提问!
2024-11-10 16:45:08
1769
原创 LabVIEW编程基础教学(一)--介绍
LabVIEW 的编程原理基于数据流编程模型,与传统的命令式编程语言有显著区别。通过图形化的方式编程,使得程序结构直观易懂,特别适合于处理并行任务、实时数据采集和控制。LabVIEW 的模块化设计、事件驱动机制、并行执行和强大的硬件接口能力使得它在自动化测试、仪器控制、数据处理等领域得到了广泛应用。
2024-11-10 16:33:32
1019
原创 STM32 基于HAL库和STM32cubeIDE的应用教程 (三)--串口的使用
在 STM32 中,UART(通用异步收发传输)是一种常用的串行通信接口,用于与其他设备(如传感器、计算机、其他微控制器等)进行数据交换。STM32 提供了丰富的 HAL 庂来配置和使用 UART 接口,本文将详细介绍如何使用 STM32 HAL 库进行 UART 编程。
2024-11-07 17:06:11
740
原创 STM32 基于HAL库和STM32cubeIDE的应用教程 (二)--GPIO的使用
在 STM32 中,GPIO(通用输入输出)是与外部硬件接口进行交互的主要方式之一。STM32 HAL 库提供了简洁的接口来配置和控制 GPIO 引脚。下面是使用 STM32 HAL 库进行 GPIO 操作的详细教程。
2024-11-07 16:26:57
1246
原创 STM32 基于HAL库和STM32cubeIDE的应用教程(一)--安装环境
使用 STM32CubeIDE 进行调试,您可以设置断点、查看寄存器和变量,帮助诊断问题。STM32 HAL 库封装了很多底层操作,您可以直接使用 HAL 库提供的函数。.c等文件中,您可以看到由 STM32CubeMX 生成的外设驱动代码。在 STM32CubeIDE 中,打开生成的代码,可以开始编写应用代码。中,您可以看到由 STM32CubeMX 自动生成的初始化代码。STM32 HAL 库的官方文档和示例代码都可以在。中找到,提供了全面的 API 参考。
2024-11-07 16:14:58
962
原创 STM32 Freertos下 HAL库的HAL_Delay和osDelay的区别
具体来说,当调用HAL_Delay()函数时,会先读取当前SysTick的计数器值,然后等待指定的时间,直到SysTick的计数器值减少了相应的值,才会退出延时状态,继续执行下一条指令。综上,OsDelay()和HAL_Delay()都是用于延时的函数,但osDelay()是FreeRTOS提供的,基于任务调度器实现,适用于调用任务中的延时;而HAL_Delay()是HAL库提供的,适用于主程序中的延时,使用了单片机的SysTick定时器。在STM32 FreeRTOS下,使用HAL库时,
2024-09-05 15:12:41
994
原创 ZYNQ使用petalinux方式移植linux
经Vivado综合,实现后,在Vivado中导出硬件,输出PetaLinux所需要的硬件描述文件 输出的文件就在。这个文件夹下,这个文件夹下。
2024-09-05 14:37:04
1363
1
原创 C语言 CRC16/MODBUS校验查表法
*循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)**是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。由于本函数易于用二进制的电脑硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。
2024-05-09 14:41:44
2124
1
原创 Linux C语言 判断一个线程是否存在
pthread_tryjoin_np函数尝试等待指定线程的结束,如果线程存在则会返回,并且可以通过返回值来判断线程是否存在。pthread_kill函数是一个用于给指定线程发送信号的函数,如果线程存在,则函数返回0;可以通过传入线程的pthread_t类型的标识符(threadId)来调用这个函数,函数返回1表示线程存在,返回0表示线程不存在,返回-1表示发生错误。同样地,通过传入线程的pthread_t类型的标识符(threadId)来调用这个函数,函数返回1表示线程存在,返回0表示线程不存在。
2024-05-09 14:27:03
777
原创 STM32基于HAL库的实时操作系统FreeRtOS开发----链表的应用
freertos中对链表设定为双向链表,这是对数据结构中链表的深度理解,以及需要一定的C语言的代码能力。
2024-05-08 14:49:07
847
原创 STM32基于CubeMX与HAL库的I2C应用
应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接受了该字节(就是说当已经接收完第八位信号的时候,也就是已经完整接收一个字节了,就要开始把SDA数据线下拉了);串行外围设备接口,是一种高速全双工的通信总线,是由 Phiilps 公司开发的。首先主机会产生一个起始信号,开始数据的传输。然后主机向从机发送地址位和读写位0(因为要确定哪个从机以及做什么操作),应答成功后,就会开始发送数据,从机会根据接收到的数据返回有效应答或者无效应答,直到主机产生停止信号,就表示这段传输结束了。
2024-02-08 23:32:40
2611
原创 STM32基于CubeMX与HAL库的SPI应用
在时钟信号控制下,主机将要发送的数据写到数据缓存区(Memory),缓存区经过8位移位寄存器,移位寄存器通过MOSI信号线将数据一位一位的移到从机,从机将MISO接口收到的数据经过移位寄存器一位一位的移到数据缓存区(Memory)。同时从机也将自己移位寄存器数据通过MOSI发送给主机,两个移位寄存器数据完成交互,读写同时进行。SPI接口是Motorola 首先提出的全双工三线/四线同步串行外围接口,采用主从模式(Master Slave)架构。,接着主机开始与被选中的从设备进行SPI通讯。
2024-02-06 15:06:28
1863
原创 STM32基于HAL库和STM32CubeMX的实时操作系统FreeRtOS开发
在 FreeRTOS 中, 使用的数据类型虽然都是标准 C 里面的数据类型,但是针对不同的处理器,对标准 C 的数据类型又进行了重定义,给它们取了一个新的名字, 比如 char 重新定义了一个名字 portCHAR, 这里面的 port 表示接口的意思,就是 FreeRTOS 要移植到这些处理器上需要这些接口文件来把它们连接在一起。相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。当一个紧急的事件在中断被标记之后,如果事件对应的任务的优先级足够高,就会立马得到响应。
2024-01-31 17:22:35
2507
原创 Linux下 cJSON安装及使用
一、JSON简介JSON是一种轻量级的数据交换格式,可读性强、编写简单。键值对组合编写规则,键名使用双引号包裹,冒号:分隔符后面紧跟着数值,有两种常用的数据类型是对象和数组。对象:使用花括号{}包裹起来的内容,数据结构{"key1": "value1", "key2":"value2" ......},key为对象的属性,value为对象的值。 数值:使用中括号[]包裹起来的内容,数据结构{"key": ["value1", "value2", "value3" ......]}。下...
2022-02-15 09:09:49
3196
1
原创 Linux下 C语言实现消息队列
消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。可以解决两个进程的读写速度不同(处理数据速度不同),系统耦合等问题,而且消息队列里的消息哪怕进程崩溃了也不会消失。最简单的消息内存的使用流程①ftok函数生成键值②msgget函数创建消息队列③msgsnd函数往消息队列发送消息④msgrcv函数从消息队列读取消息⑤msgctl函数进行删除消息队列一个消息数据应该由以下...
2022-01-24 09:23:32
5324
原创 Linux C语言对图片进行Base64编码
一、编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。以下为Base64编码表:码值 ...
2022-01-21 09:15:03
827
原创 Ubuntu 20.04 C语言libcurl的安装以及接口的使用方法
安装libcurlsudo apt-get install libcurl4-openssl-dev头文件目录:/usr/include/curl库文件目录:/usr/lib/x86_64-linux-gnu/libcurl.so.4根据自己需求安装,包含openssl 是为了支持https全局初始化 应用程序在使用libcurl之前,必须先初始化libcurl。libcurl只需初始化一次。可以使用以下语句进行初始化:curl_global_init();...
2022-01-19 16:14:46
6925
3
原创 Qt 读写配置文件(.ini)
.INIINI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。INI文件是Initialization File的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。INI文件被用来对操作系统或特定程序初始化或进行参数设置。文件格式节(section
2022-01-18 09:43:14
3695
原创 QT 将Base64编码解码为图片,并显示图片。
//Base64编码转图片 //gBase64是存放base64编码的QStringQSize picSize(600,400);gBase64Image.loadFromData(QByteArray::fromBase64(lBase64Str.toLatin1()));QPixmap scaledPixmap = gBase64Image.scaled(picSize, Qt::KeepAspectRatio);//Base64MapLable是QLable控件Base64MapLa.
2022-01-17 15:48:07
1811
原创 QT 关于Mysql驱动的安装
由于Mysql商业化,Qt取消了默认的Mysql数据库驱动,但保留了Mysql驱动源码。本人的源码在E:\Qt\5.14.0\Src\qtbase\src\plugins\sqldrivers\mysql下。使用qtcreator打开mysql.pro文件。然后修改mysql.pro,增加如下两个语句://该路径是mysql的头文件路径INCLUDEPATH += "D:\mysql-8.0.27-winx64\include"//这是MySQL的库文件路径LIBS += "D:\m
2022-01-14 10:32:14
876
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人