自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux时间设置获取总结

linux时间获取、设置总结

2023-07-20 10:06:33 184

原创 POSIX Timer API 的使用

POSIX Timer API 使用

2023-03-22 11:12:53 363

原创 追踪malloc/free的使用

debug技术

2023-03-08 13:22:34 461

原创 C语言union内嵌struct

c语言数据结构的小知识点

2023-02-22 09:40:44 679

原创 没有getopt.h怎么办?自己添加一个!

没有getopt怎么办?自己添加一个!

2023-01-30 11:02:21 449

原创 linux环境读写串口

在linux环境读写串口文件的示例代码

2022-09-22 10:45:00 762

原创 调试RGB屏幕的过程记录

调试RGB屏幕的过程记录屏幕出现印子的可能原因屏幕出现印子的可能原因硬件接线接触不良。pclk 极性不对。

2022-04-28 10:20:11 271

原创 makefile

SRCDIRS :=. src INCDIRS :=.CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))CPLUSPLUSFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.cpp))SFILES :=$(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))#------------------------...

2022-04-25 17:54:00 1104

原创 【无标题】

线程池的实现#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <assert.h>#include <stdio.h>#include <string.h>#include <signal.h>#include <errno.h>#define DEFAULT_TIME 10 /*10s检测一次*

2022-03-21 20:34:21 114 1

原创 使用python模拟人类世界的财富变化情况

说明:开始的时候,每个人有startMoney的钱,然后每经过一天就要支出10元,同时有可能从别人那里收到10元,经过一定的天数后,统计财富的流动情况。import osimport sysimport randomimport numpy as npimport matplotlib.pyplot as pltdef wealthDistributionSim(personNUm,timeInday,startMoney=100,allowMinus=False): #print("P

2022-03-21 20:06:42 839

原创 linux 解析命令行参数的例子

linux 解析命令行参数的例子下面是一个把文件转数组的小程序#include "stdio.h"#include <string.h>#include <sys/stat.h>#include <stdlib.h>#include <getopt.h>#include <errno.h>#include "string.h"#include "stdint.h"#include "fcntl.h"#include "unis

2022-03-18 17:00:46 313

原创 使用Qemu模拟arm开发板

使用Qemu模拟arm开发板环境:ubuntu181.安装qemusudo apt-get install zlib1g-dev libglib2.0-0 libglib2.0-dev qemu安装完后在shell输入 qemu 按tab键如果出现自动补齐就证明成功安装2.安装交叉编译链环境sudo apt-get install gcc-arm-linux-gnueabi 验证安装dpkg -l gcc-arm-linux-gnueabi 可以看到安装结果为user@ubun

2022-03-07 09:21:03 3280

原创 buntu 设置共享文件夹

ubuntu 设置共享文件夹1. 修改/etc/samba/smb.confsudo vim /etc/samba/smb.conf[user] path=/home/user/Documents writable=yes valid users=user available=yes browseable=yes guest ok = no添加samba账户 sudo smbpasswd -a user上面的user是用户名,根据实际情况填

2022-03-07 09:09:50 500

原创 基于c++11的消息队列

#ifndef _MSG_QUEUE_H#define _MSG_QUEUE_H#include <mutex>#include <condition_variable>#include <list>template<typename T>class MsgQueue{public: MsgQueue() {}; T* pop(void) { T* r = nullptr; std::unique_lock<std::mute

2021-12-07 16:51:08 633

原创 MTK按键处理函数

MTK按键处理函数在文件中plutommi\Framework\EventHandling\EventsSrc\KeyBrd.c,找到exec_key_handler()这个函数,该函数里面的(*curr_func_ptr)(); 即为当前按键回调的执行代码。如果不是上面的函数话,可以在同文件的static mmi_ret mmi_key_hdlr_proc(mmi_frm_key_evt_struct *evt)函数里面找(*curr_func_ptr)();...

2021-11-23 10:44:33 124

原创 MTK按键处理函数

MTK按键处理函数在文件中plutommi\Framework\EventHandling\EventsSrc\KeyBrd.c,找到exec_key_handler()这个函数,该函数里面的(*curr_func_ptr)(); 即为当前按键回调的执行代码。

2021-11-23 09:21:04 248

原创 MTK修改按键

MTK修改按键的步骤打开custom\drv\Drv_Tool\DrvGen.exe,选择工程对应的dws文件,然后点击Edit。打开后如图:在上面的tab中,选择KEYPAD Setting.KEYPAD Setting.选择界面如图如图,可以看出MTK上的键盘是矩阵键盘。看项目的原理图文件,确定那些按键是有效的。从原理图上找到实际按键用到的行和列。然后根据按键所在的行和列进行设置。这里设置的是device key code.点击行与列的交点,修改按键值。可以使用现有的选择项,也可以新增按

2021-11-03 14:33:06 957

原创 2021-11-02

PADS VX24安装记录以管理员权限运行Mentor Graphics PADS Standard Plus VX.2.4\PADSVX.2.4_mib.exe,安装即可。等待安装完成安装完成后,用记事本修改Mentor Graphics PADS Standard Plus VX.2.4\EFA\run.bat,修改PADS正确的安装目录。然后运行Mentor Graphics PADS Standard Plus VX.2.4\EFA\run.bat,等待破解完成。破解完成后回生成一个名为

2021-11-02 11:45:03 1068

原创 Linux 根据进程名字获取进程号PID

Linux 根据进程名字获取PID#!/bin/shPID=$(ps | grep "name" | grep -v grep | awk '{print $1}')echo "PID=" $PID

2021-10-25 13:56:07 1103

原创 RVCT安装步骤

RVCT安装步骤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入1.先把rvds.dat里面的网卡MAC地址需要修改成安装时提示的网卡MAC地址一样;2.选择1.RVDS_3_1 (I)\s

2021-10-13 13:18:43 1162

原创 lvgl 屏幕切换动画测试

#include "lvgl.h"#include "stdio.h"#include "stdlib.h"#include "time.h"#if LV_VERSION_CHECK(8,0,0)lv_obj_t * create_page_1(const char *text);lv_obj_t *o1,*o2;static void lv_event_cb_1(lv_event_t * e);#define LV_COLOR_BLUE lv_color_make(0x00,0xBF

2021-09-30 16:21:09 3731

原创 memcpy的实现

这个函数是标准C库里面的一个函数,挺简单的。面试的有人问,下面是一个简单的实现。void my_memcpy(void *_des,const void *_src ,int len){ if(!_des || !_src || len ==0){//非法条件检查 return ; } char *src = (char *)_src; char *des =(char *)_des; if(des<src ||des >=(src+l

2020-12-20 20:23:20 302

原创 双向链表基础

类型定义#ifndef __DOUBLE_LINKLIST_#define __DOUBLE_LINKLIST_#include <stdbool.h>typedef struct _linklistNode{ struct _linklistNode *prev,*next; void *dataPtr;}linklistNode ;typedef struct{ struct _linklistNode *head; int nodenum

2020-12-11 14:33:36 111

原创 socket通信示例

TCP通信示例server.c#include <head.h>void sys_error(const char *e){ perror(e); exit(1);}void fn(char *p);int main(int argc ,char** argv){ int serversocket = socket(AF_INET,SOCK_STREAM,0); if(serversocket ==-1){ sys_error

2020-12-10 16:14:55 113

原创 linux下使用命名管道实现的聊天室

linux下使用IPC实现的聊天室做这个纯粹是为了联系命名管道的使用,先来看看效果图吧!从图里面看,实现聊天室的基本功能,如消息收发,用户离开提醒。

2020-12-09 16:42:06 392

原创 linux匿名管道特性探究

linux匿名管道特性探究1.匿名管道是IPC方式之一。它最大的优点就是使用简单。本质上是一个伪文件。总结,匿名管代具有以下特性:伪文件管道中的数据智能读取一次。数据在管道中智能单向流动。局限性:自己写不能自己读。数据不能反复读。半双工通信只有有血缘关系之间的进程才能使用。读写特性:读管道: 1. 管道有数据,read返回实际读到的字节数。 2. 管道无数据: 1)无写端,read返回0 (类似读到文件尾) 2)有写端,read阻塞等待。 写管道:

2020-12-07 09:57:38 125

原创 Linux命名管道特性总结

Linux管道特性总结话不多说,直接总结管道的特性吧!1.必须同时有读端和写端。假如只有一边,那么open()函数将会阻塞。2.在写入时,如果没有读端,写入方将会受到SIGPIPE信号。3.默认情况下,读取和写入均是阻塞的。下面用代码实测:...

2020-12-06 12:44:45 393

原创 Makefile编译大型工程

Makefile编译大型工程1.Makefile 简介看到这篇文章相信你对Makefile已经有所了解,因此就跳过这部分。2.工程组织大型工程一般是模块化的,一般是不同的模块被放在不同的文件夹下,在编译时对不同的模块进行编译。本文就...

2020-11-16 10:55:11 1135

原创 C语言计算结构体成员偏移量

C语言计算结构体成员偏移量在一些面试题中见到了类似的题目,现在进行总结。(这个正式冷门的知识点,正常开发中几乎没有遇到过)描述:对于几个结构体,求其成员的地址相对于整个结构体成员的偏移量。方法:(int)(&((struct Test*)0)->member));struct Test是结构体类型,member就是结构体的成员。下面是测试代码。v#include <stdio.h>#include <stdlib.h>#include <st

2020-11-14 20:28:34 1005

原创 一个简单地makefile示例

SRCDIRS :=srcINCDIRS :=srcTARGET := sdkOUTPUT_DIR_NAME := objcross_complier :=complier :=$(cross_complier)gcccpp_complier:=$(cross_complier)g++LD :=$(cross_complier)ldOBJCOPY :=$(cross_complier)objcopyCFILES := $(foreach dir, $(SRCDIRS), $(wil

2020-11-03 15:55:01 126

原创 微信PC版多开的方法

在电脑上多开微信的方法一般地,如果直接点击微信的启动图标,只能打开一个新的登陆界面,或者是登陆后的主界面那么,要想多开微信,应该怎么办呢?事前准备1.退出虽有登陆的微信2.在任意位置,新建一个txt文件,把文件后缀名改为bat。比如,你新建的文件名是1.txt,那么应该把该文件名改为1.bat3.在改文件写入一下内容:@echo offstart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exestart /d "C:\Pro

2020-11-03 15:52:10 361

原创 C语言结构体内存对齐

C语言结构体内存对齐结构体是C语言常用的数据结构,它也是C语言支持的唯一一种聚合类型。在编译器为某个结构体分配的时候,原来相邻的的成员的内存却未必是相邻的。这是怎么回事呢?请往下看。观察一下下面的结构体:struct { char am1; short am2; int am3; short am4; int am5;}s1;很明显,该结构体有5个成员变量,那么结构体s1占用空间会是各个成员占用的空间之和吗?它们的内内存地址会是连续的吗?我们用一段程序看

2020-05-12 10:09:53 161

原创 数据结构基础:队列的实现

队列是程序开发中常用的结构。队列具有先进先出(FIFO的特点,在很多时候我们可以用队列来模拟一片缓冲区来实现数据的缓冲。下面是一个简单的队列实现。头文件#ifndef RINGFIFO_H_INCLUDED#define RINGFIFO_H_INCLUDED#ifdef __cplusplus extern "C" {#endiftypedef char DATATYPE;t...

2020-04-19 10:36:25 223

原创 数据结构基础:栈的实现

数据结构基础:栈的实现栈是程序中常见的数据结构,具有先进后出(LIFO)的特点。自己实现一个栈将会加深对于栈的理解。下面是一个简单的栈的实现。头文件my_stack.h···#ifndef MY_STACK_H_INCLUDED#define MY_STACK_H_INCLUDED#define STACK_INIT_SZIE (100)#define STACKINCREMENT...

2020-04-19 10:18:03 232

原创 Linux 线程等待

Linux 线程等待转载自https://www.xuebuyuan.com/2201259.html条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。一 pthread_cond_wait定义:函数原型:int pthr...

2020-03-18 17:48:23 614 1

原创 C文件拷贝实例

#include <string.h>//check if str1 is end with str2int endsWith(const char *str1,const char *str2){ if((!str1)||(!str2)||((strlen(str1))<strlen(str2))) return -1; char *p=str1...

2020-03-14 12:59:12 135

原创 单向链表的C语言实现

单向链表的C语言实现头文件C文件测试程序头文件#ifndef MYLINKLIST_H_INCLUDED#define MYLINKLIST_H_INCLUDED#include <stdint.h>#include <stdbool.h>typedef struct my_linklist{ int value; struct my_link...

2020-01-17 16:30:08 208

原创 瑞萨 R8C/1B常用模块

瑞萨 R8C/1B常用模块时钟定时器UART串口自定义打印函数看门狗短延时进入停止模式时钟初始化时钟void sysclk_cfg(void){#if SYSTEM_CLOCK==0 prc0 = 1; prc1 = 1; prc3 = 1; cm02 = 0; cm05 = 1; cm06 = 0; cm13 = 0; cm15 = 1; cm16 = 0; ...

2019-12-04 11:10:34 404

原创 SI4463 空中唤醒教程

SI4463 空中唤醒教程目录一 无线唤醒的原理二 LDC模式简介三 LDC模式详情四 相关API五 设置流程六 参考设置七 验证一 无线唤醒的原理要唤醒无线芯片,必须保证无线芯片在RX mode持续时间内能够检测到有效的数据包。如果发射机发送时间比休眠时间短,那么可能遇到接收机机在休眠而无法唤醒的情况。因此,为了能够保证唤醒无线芯片,发射机发射的时间要大于接收机的运行周期T...

2019-11-26 10:43:54 2543 2

原创 STM32 使用IO口模拟IIC读写AT24C128

STM32 使用IO口模拟IIC读写AT24C128AT24C128简介使用STM32的IO模拟IIC的时序头文件c文件AT24C128简介AT24C128,ATMEL公司出的EEPROM芯片,共有16,384 x 8bit,整个存储器共有256页,每页64BYTES.使用IIC协议。使用STM32的IO模拟IIC的时序头文件#ifndef EEPROM_H#define EEPRO...

2019-09-29 14:32:36 6329 1

sttoolset_pack41.exe

ST推出的适用于STM8的IDE,不过没有编译器,需要用户指定编译器,常用的有cosmicstm8。

2019-12-03

适用于Semtech公司的SX1262的demo程序,在这里与大家共享。。希望能够帮助大家尽快熟悉此芯片。

个人写的sx1262的源码,在这里与大家共享。。希望能够帮助大家尽快熟悉此芯片。

2019-09-24

Si446 X API DESCRIPTIONS 446x编程API详细说明

Si446 X API D ESCRIPTIONS This document provides API descriptions for the commands and properties used to control and configure the Si446x family. 旧版的API说明,比新版的网页版的要简洁一些。

2019-07-15

空空如也

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

TA关注的人

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