- 博客(204)
- 资源 (24)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言实现设计模式—目录
文章目录单例模式命令模式策略模式命令模式+策略模式混合使用责任链模式(事件触发机制)订阅发布模式(订阅者/发布者)记录自己对设计模式的理解和使用。单例模式C语言-单例模式使用https://blog.csdn.net/Set_Mode/article/details/100591193命令模式C语言-命令模式使用策略模式C语言-策略模式使用命令模式+策略模式混合使用C语言-命令模式+策略模式混合使用责任链模式(事件触发机制)C语言-责任链模式订阅发布模式(订阅者/发布者)C语言-
2020-08-19 18:04:05
2448
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言实现设计模式-策略模式+命令模式组合使用
文章目录使用环境介绍使用策略模式使用命令模式使用环境介绍当主设备和从设备使用串口信息交互通讯,根据串口协议,实现对从设备的控制访问。使用情况1:当主设备发送板卡信息获取、读取数据命令时,希望获取从设备的数据信息,从设备应答操作。使用情况2:当主设备发送采集命令时,从设备收到但不进行回复,不应答操作。使用策略模式首先识别命令,对需要进行应答的命令进行判断,区分动作使用命令模式...
2020-08-02 11:19:50
3228
原创 【MA35D1】buildroot 编译使用经验
NuMicro® MA35D1系列为一颗异核同构的多核心微处理器,适用于高端 Edge IIoT Gateway。它是基于双核 64 位 Arm® Cortex-A35 内核,执行速度可达 800 MHz,并搭载一颗 180 MHz Arm Cortex-M4 内核。基于此高性能内核,MA35D1 系列有助于 Tiny AI/ML 边缘运算。
2024-09-02 21:39:01
1111
原创 【成功解决】多线程使用FFTW库导致的内存问题
使用FFTW库,然后应用程序使用存在多线程的情况下,会出现信号11 或者 信号6等一些内存问题。针对多线程FFTW的不可重入函数加入互斥锁保护。简单的说就是针对多线程使用的场景,有2种方案。因为很多函数接口都是不可重入的。
2023-10-26 09:13:18
2913
原创 关于 sprintf & snprintf 函数使用
文章目录sprintf & snprintf 函数使用使用 sprintf 的常见问题strncpy, strncat和snprintf的区别sprintf & snprintf 函数使用sprintf 函数使用在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致 sprintf 比 printf 有用得多sprin
2022-02-17 11:50:42
1120
原创 RTOS—文件打开、删除操作细节研究
文章目录RTOS—文件打开、删除操作环境描述操作1:尝试多次打开一个文件,观察现象结果操作2:尝试多次打开文件,未进行关闭操作进行删除文件操作3:尝试打开10次文件,关闭9次操作,进行删除文件RTOS—文件打开、删除操作环境描述RTOS:RT-Thread 操作系统File System: Yaffs2操作1:尝试多次打开一个文件,观察现象结果void file_unlink_test(void){#define RH_PATH "/rh1200/test/file.dat"#define
2021-12-30 15:19:11
592
原创 【设计模式项目实战】串口协议总线管理模型实现
文章目录功能模型的需求设计思路-UML模型关系图判断方法-是否触发,是否执行功能实现-模块介绍数据类型串口总线对象和接口模块设计串口协议对象和接口设计接口方法添加-数据驱动编程对外提供输出接口总结功能模型的需求设计一款支持多个串口协议模型管理,方便业务的扩展,尽可能的使得模块可以“高内聚低耦合”。设计思路-UML模型关系图将每一个协议的数据方法统一管理起来,采用“模糊对象”判断,即不对具体的协议判断进行判断,将协议对象抽象出来进行管理。判断方法-是否触发,是否执行第一步:检查是哪种协议触发,满
2021-12-18 23:46:23
2490
原创 关于-sscanf() 函数使用
文章目录linuxC - sscanf() 函数使用参数返回值举例linuxC - sscanf() 函数使用int sscanf(const char *str, const char *format, ...)参数参数str为要读取数据的字符串;format为用户指定的格式;… 为变量,用来保存读取到的数据返回值成功则返回参数数目,失败则返回-1,错误原因存于errno 中。sscanf()会将参数str 的字符串根据参数format(格式化字符串)来转换并格式化数据(格式化字符串
2021-12-05 11:36:16
2863
原创 关于 -access 检查用户对文件的权限
linux -access 检查用户对文件的权限函数功能access函数用于检查用户/进程对一个文件的权限情况,包括读、写、执行的权限。因为Linux内核是根据进程的有效用户ID和有效组ID来决定一个进程具有某个文件的访问权限。因此,在编写调整用户ID的程序时,在访问一个文件之前必须明确检查该用户是否拥有对此文件的访问权限。描述#include <unistd.h>int access(const char *pathname, int mode);pathname 是文件
2021-11-29 19:41:39
4906
原创 关于-open与fopen的区别
文章目录Linux--open与fopen的区别open()举例:fopen举例open和fopen的区别:来源适用范围文件IO层次总结Linux–open与fopen的区别open()#include <stdio.h>int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下:
2021-11-27 11:40:52
5314
原创 关于-alarm函数使用
linux-alarm函数[1] 引用头文件:#include <unistd.h>; [2] 函数标准式:unsigned int alarm(unsigned int seconds); [3] 功能与作用:alarm()函数的主要功能是设置信号传送闹钟,即用来设置信号SIGALRM在经过参数seconds秒数后发送给目前的进程。如果未设置信号SIGALARM的处理函数,那么alarm()默认处理终止进程。 [4] 函数返回值:如果在seconds秒内再次调用了alarm函数设
2021-11-23 20:01:48
1652
原创 关于-linux- pthread_attr_destroy 使用理解
linux - pthread_attr_destroy 使用问题:为何退出thread或者创建thread失败时,需要调用pthread_attr_destroy?pthread_t a_thread;res = pthread_create(&a_thread, &thread_attr, pfThreadMain, pArg);if (res != 0){ perror("Thread SendCmd creation failed"); return RET_ERR;
2021-11-23 15:11:50
10821
3
原创 关于-变长数组(柔性数组) 的使用
C语言变长数组(柔性数组) struct中uint8_t data[0]的用法零长度数组介绍typedef struct { cp_head_t header; uint8_t data[0];}__attribute__((packed)) cp_frame_t;首先对 0长度数组, 也叫柔性数组 :用途 : 长度为0的数组的主要用途是为了满足需要变长度的结构体用法 : 在一个结构体的最后, 申明一个长度为0的数组, 就可以使得这个结构体是可变长的. 对
2021-11-23 10:09:12
7942
原创 linux ssh 介绍
文章目录linux ssh 介绍ssh服务简介安装SSH服务Step1 安装openssh-serverStep2 启动SSH服务Step3 查看SSH状态linux ssh 介绍ssh服务简介SSH:Secure Shell (Protocol)SSH是一种网络安全解决方案(是一种协议,而不是一种产品):计算机每次发送数据时,SSH就会自动对数据进行加密,当数据到达目的地时,SSH会自动给信息解码;整个过程对外是透明的(会话加密 );SSH具有C/S体系结构;SSH特点:透明、公钥认证、保
2021-11-23 09:05:57
1747
原创 【新手入门】Gitlab的使用
Gitlab的使用svn与git对比.svngit分布式不是是在线阅读不支持不仅支持,而且可以在线编辑存储方式按文件按元数据完整性一般优离线工作日志都没法看完全没问题分支分支是一个完整的目录随意开辟无限个分支svn与git工作流程svn工作流程git工作流程从上图中可以看出,svn是集中式的,git是分布式的。仔细看图会发现其实git的工作模式下每个开发者(安装了git客户端)的电脑就等同于传统的一个svn服务器
2021-11-22 17:25:27
1882
原创 pb3-protobuf 格式-上传 网络信息内容
pb3-protobuf 格式-上传 网络信息内容message CollectorInfo{ string Code = 1; //采集器编码05600001、10000001 CollectorStyle Type = 2; //采集器类型RH560A、RH1000 BoardStyle BoardType = 3; //采集板类型 NetStyle NetType = 4;
2021-11-22 14:36:09
1287
原创 Python3 循环语句
Python3 循环语句本章节将为大家介绍 Python 循环语句的使用。Python 中的循环语句有 for 和 while。Python 循环语句的控制结构图如下所示while 循环Python 中 while 语句的一般形式:while 判断条件(condition): 执行语句(statements)……同样需要注意冒号和缩进。另外,在 Python 中没有 do…while 循环。num = 100sum = 0Counter = 1while Coun
2021-11-21 20:48:34
200
原创 Python3 函数
Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数
2021-11-21 20:47:25
102
原创 Python3 循环语句
Python3 循环语句本章节将为大家介绍 Python 循环语句的使用。Python 中的循环语句有 for 和 while。Python 循环语句的控制结构图如下所示while 循环Python 中 while 语句的一般形式:while 判断条件(condition): 执行语句(statements)……同样需要注意冒号和缩进。另外,在 Python 中没有 do…while 循环。num = 100sum = 0Counter = 1while Coun
2021-11-21 20:46:24
641
原创 Python3 条件控制
Python3 条件控制Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:if 语句Python中if语句的一般形式如下所示:if condition_1: statement_block_1elif condition_2: statement_block_2else: statement_block_3如果 “condition_1” 为 True 将执行 “st
2021-11-21 20:45:54
129
原创 Python基础语法
Python3 基础语法标识符第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。python保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有import keywordkeyword.kwlist['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
2021-11-21 20:38:36
123
原创 Python3 基础语法
文章目录Python3 基础语法标识符python保留字行与缩进数字(Number)类型字符串(String)print 输出Python3 基础语法标识符第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。python保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有import keywordkeyword.kwlist['False',
2021-11-21 20:33:49
107
原创 Python3 基本数据类型
Python3 基本数据类型Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。counter = 100 # 整型变量miles = 1000.0 # 浮点型变量name = "runoob" # 字符串print(counte
2021-11-21 20:30:44
3768
原创 【彻底弄懂】linux下的条件变量使用
linux下的条件变量使用条件变量条件变量是线程可用的另一种同步机制。条件变量用于自动阻塞线程,知道某个特定事件发生或某个条件满足为止,使用条件变量主要包括两个动作:一个线程等待某个条件满足而被阻塞;另一个线程中,条件满足时发出“信号”。条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量
2021-11-20 14:53:12
1994
原创 【彻底弄懂】linux中pthread_detach()的作用
文章目录linux中pthread_detach()解析linux中pthread_detach()解析使用pthread_create创建的线程有两种状态:joinable和unjoinable。默认是joinable 状态,可以通过这个api 来获取其状态pthread_attr_getdetachstate另外可以通过如下代码来设置为状态joinable 还是 unjoinablepthread_attr_t attr;pthread_attr_init(&attr);pthrea
2021-11-20 14:49:51
15198
原创 【新手入门】MQTT 协议开发入门
MQTT 协议开发入门[MQTT]是一个客户端-服务器发布/订阅消息传输协议. 它轻量,开放,简单, 并易于实现.这些特性,使它在许多情况下适合使用, 包括受限的环境中,如机器对机器(M2M)之间通信和物联网(IoT)环境中,需要体积小的代码和/或网络带宽是昂贵的。协议特点此协议运行于TCP/IP以上, 或在其他网络协议,提供有序、 无损、 双向网络连接. 它的功能包括:使用发布/订阅消息模式提供一个一对多的消息分发,解除了应用程序之间的耦合。对负载内容屏蔽的消息传输。有三种消息传递
2021-11-20 14:02:04
6291
原创 【读书笔记】UML+OOPC嵌入式C语言开发精讲-认识对象
文章目录认识对象自然界的对象( Natural Object)软件对象(Software Object)对象与函数对象与类构造器(Constructor)认识对象自然界的对象( Natural Object)对个人而言,所认识的东西,皆是“对象”(object)。一旦认识某样东西,就能说出其特点,并与别的对象进行比较。其特点包括:对象的特征或属性( Attribute)对象的行为( Behavior)了解东西的特征和行为,就表示对该事物有些认识和概念( Concepts)了。尽管有些东西并不
2021-02-28 22:30:16
553
2
原创 C语言输出正弦波形
文章目录int main(void){ int i; int ft = 5; /* 周期 hz */ int fs = (20*2.56); /* 采样频率*/ /* generate data */ uint32_t data_len = (4*1024); float *input_data = (float *)malloc(data_len * sizeof(float)); if (NULL == input_data) { printf("%s(
2020-09-15 17:08:06
4391
DS-000189-ICM-20948-v1_1_89_translate.pdf
2019-10-09
用C-语言实现面向对象编程.pdf
2019-08-13
嵌入式技术与应用丛书 汽车电子KEA系列微控制器 基于ARM Cortex-M0+内核 [王宜怀,李跃华著][电子工业出版社].pdf
2019-04-08
AnalogDevices.ADuCM36x_DFP.1.0.0.pack
2019-04-04
AD7124英文手册
2019-03-29
AD7124中文手册
2019-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人