- 博客(64)
- 收藏
- 关注
原创 堆栈(栈)的实现
链表栈#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct linkstack{ data_t data; struct linkstack *next;}linkstack_t;linkstack_t *creat_linkstack(){ linkstack_t *head; head = malloc(sizeof(linkstack_t)); head->
2022-02-14 06:50:08
362
原创 队列queue的实现
顺序表实现##list.c#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct list{ data_t *data; //保存数据的空间 int size; //容器能保存的元素个数 int last; //保存最后一个有效元素的下标}list_t;/*返回创建好的 空顺序表 的地址*/list_t *creat_list(int size){ list_t *
2022-02-14 06:47:33
317
原创 顺序表实现案例
范例1## list.c#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct list{ int size; //容器能保存的元素个数 int last; //保存最后一个有效元素的下标 data_t data[0]; //不定长数组名 必须放于 结构体的最后一个成员}list_t;/*返回创建好的 空顺序表 的地址*/list_t *creat_list(int
2022-02-14 06:36:05
485
原创 冒泡,快排和树
冒泡#include <stdio.h>#include <stdlib.h>int data[] = {3,8,2,9,1,5,7,6,4}; //3,2,8,1,5,7,6,4,9int maopao(int data[],int size){ int i,j; int temp; for(j = 0;j < size - 1;j ++){ for(i = 0;i < size - 1 - j;i ++){ if(data[i]
2022-02-14 06:21:20
96
原创 单向链表及双向链表
链表#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct linknode{ data_t data; struct linknode *next;}link_t;link_t *creat_link(){ link_t *head; head = malloc(sizeof(link_t)); head->next = NULL; return head;
2022-02-14 06:11:44
466
原创 linux网络编程
网络基本知识:TCP协议分成了两个不同的协议TCP:用来检测网络传输中差错的TCP:面向连接的数据流传输服务 可靠 适合网络状况不是很好的场合UDP:面向无连接的传输协议 不可靠,但是实时性更好,适合网络状况佳的场合socket套接字:socket是一种特殊的IO接口,也是一种文件描述符。不仅能实现本地不同进程之间的通信,而且通过网络能够在不同主机进程之间进行通信分类:流式套接字SOCK_STREAM 应用TCP通信数据报套接字SOCK_DGRAM 应用U
2022-02-11 00:27:12
1308
原创 linux shell
1、shell是一个命令行解释器,能够使用户和操作系统进行交互。命令格式(通常包括三部分,选项和参数是可选项):命令 选项 参数连续按下两次TAB键用于命令补齐,按下一次TAB键用于文件名补齐。2、shell通配符和特殊字符'*‘表示匹配任意长度的字符串,’?'表示匹配一个长度的字符管道(|):将第一个命令的输出作为第二个命令的输入,,使用管道可以将一些命令联合起来使用,得到单个命令无法实现的效果。 eg:ls /usr/bin |wc -W输入/输出重定向:改变shell命令的输入输出
2022-02-11 00:25:50
758
原创 C语言(二)
1、sizeof(fun)=1sizeof(&fun)=4 fun为函数名解释:函数名其实是一个符号表,占用一个字节,虽然函数名可以当做函数的入口地址,当做一个指针,但是并不能像指针那样占用4个字节,当取地址的时候,确定是4个字节2、存储类型auto:默认情况下,所有的变量都是autoregister:表示变量是存放在CPU寄存器中,而不是存放在内存里面,因此不能用&符号取内存地址extern:声明变量或者函数是来自外部的文件static:修饰局部变量:作用域为定义该局
2022-02-11 00:25:09
888
原创 IO与静态库动态库
一、文件IO1、什么是系统调用(文件IO)(1)用户空间进程访问内核的接口,使用内核提供 的各种功能(2)极大提高了系统的安全性和用户程序的可移植性(因为操作系统大多是多任务的,直接访问硬件会出问题)2、什么是库函数(标准IO)(1)库函数是为了实现某个功能而封装起来的API集合(用户编程接口)(2)提供统一的编程接口,更加便于应用程序的移植系统调用和库函数的区别************系统调用发生在内核空间,如果用户空间的一般应用程序使用系统调用来进行文件操作,会有用户空间切换到内核空间的
2022-02-11 00:24:10
404
原创 进程与线程
一、进程、线程特点及其关系1、多任务处理多任务处理指用户可以在同一时间内运行多个应用程序,每个应用程序称为一个任务。事实上,单核处理器同一时刻只能执行一个任务,每个任务创建时被分配时间片(几十到上百毫秒),操作系统会在当前任务的时间片用完时,调度其他任务,由于任务会频繁第切换执行,因此给用户多个任务同时运行的错觉。2、进程(1)基本概念程序是一段静态的代码,而进程是程序的一次动态执行过程,它是操作系统进行资源分配和调度的最小单元。一次任务的执行可以激发多个进程。(2)主要特性a、并发性系统中
2022-02-11 00:22:39
193
原创 C语言(一)
一、C语言背景简介1、GCC编译流程预处理 :-E -->.i文件 预处理只是做头文件的展开,宏替换,条件编译选项的判断,注释删除等工作,不会报任何错误编译:-S -->.s文件 检查代码是否有语法错误,无误后翻译成汇编语言汇编:-c -->.o文件 将汇编文件翻译成二进制机器代码链接:链接函数库,生成可执行文件这里有个点就是在预处理阶段.H文件只是包含了大量的函数声明,而没有函数的实现,这些函数的实现都被封装进函数库里
2022-02-11 00:19:41
968
原创 设计模式及编程技巧
前言为了提高自己的编程水平,优化自己的代码设计,粗略翻了《Head+First设计模式》这本经典之作(以后有时间再细读)。可惜的是设计模式一般是面向对象编程时用到的技巧,但是我现在主要是C编程,只能借鉴其思想了,毕竟万物皆对象,C也不例外。1.软件设计致力于提高“可复用”,“可维护”,“可扩展”2.变化的部分和不变的部分要抽离分开(封装变化的部分)3.针对接口编程,而不是实现编程核心是:...
2019-09-26 20:21:44
208
原创 回忆:一家芯片公司的面试经历
七月初的时候面试了本地的一家芯片公司,虽然没进去但是收获良多,整体感受芯片行业面试,无论是笔试题还是面试题问的都比较偏底层。面试里面C语言试题有几道题是关于内存操作的,当时答得不太好,这里回忆一下,写一个测试代码,验证下strcpy(p,str)代码一:不给p动态申请内存解析:p是一个指针,当不给它申请内存时,使用strcpy给它赋值,运行结果是段错误。代码二:给p申请内存空间解...
2019-08-22 19:02:50
2276
原创 字符串的解析与拼接(C语言实现)
简介最近大半年在搞一个基于NB的物联网项目,里面涉及到NB模组到移动ONENET平台的接入,整个过程需要不断发送AT指令到NB,从返回信息里解析相关参数再放入到下一条指令里面,这里以onenet平台下发数据介绍下字符串的处理方法如图,当平台下发数据123时,mcu收到字符串+MIPLWRITE: 0,18960,3200,0,5750,2,3,313233,0,0,按照接入协议,我需要在10...
2019-08-22 17:12:14
1476
原创 GIT使用简易流程
前言之前写过一个文章记录了GIT的常用命令,结果重新去看文档学习GIT使用的时候发现一俩懵逼,所以这次重新梳理一下。GIT是目前应用最广泛的分布式版本管理系统,可以脱网单机使用,而GITHUB则可以认为是网上开源代码托管平台,可以与GIT无缝对接。windows平台使用流程安装GIT,并设置去官网下载GIT,然后并安装,点击开始菜单Git Bash,出现如下窗口,则代表安装成功安装成...
2019-07-24 10:41:44
227
原创 个人成长书单
python基础《 python从入门到实践》《python基础教程》进阶《Python Cookbook》《流畅的python》应用《python3网络爬虫开发实战》《python深度学习》c语言基础 《C深度剖析》《C与指针》进阶 《C专家编程》《C语言接口与实现》《C陷阱与缺陷》《编程珠玑》通识 《深入理解计算机系统(原书第3版)》《程序员的自我修养》《Head Fir...
2019-07-15 16:31:24
364
原创 真相了,你真的了解串口通信格式吗?
前言最近在一个项目中要用到串口实现不定长数据的接收,查资料一般有两种方式,一个是串口DMA+IDLE中断,另一个是加定时器,可惜我用的华大半导体HCF030芯片,不支持串口IDLE中断,那么只能考虑加定时器这种方式了。这就牵扯到定时多久的问题,到这里,我有两个疑惑的地方,一是传送一个字节到底是传送几个bit,二是我传送多个字节的时候,中间有没有时间间隔,所以最好用示波器看一下。你眼中的串口格式...
2019-06-25 16:08:39
1026
原创 如何用示波器调试波形
序无论是做嵌入式硬件工程师,还是做嵌入式软件工程师,示波器的使用都可以算是必备技能了,因为我们在做一些牵扯到时序的项目时,遇到一些问题,看是看不出来的,用示波器抓波形往往更直观一些。恰好手头一个项目用到了SN74HC164PWRG4 串转并8位输出移位寄存器,这里以此为例讲下如何调试波形。74HC164简介1.管脚图图1是该芯片管脚图,A,B是与非门输入端,Qa~Qh是8位并行输出端,CL...
2019-03-15 22:05:20
7251
2
原创 通信协议之USB
前言USB也是当前应用比较广泛的设备,本文将挑重点对其做一些概要性的介绍,更详细的了解可以去网上找《圈圈带你学USB》这本书,属于介绍USB的经典之作。USB分类1按协议分Usb1.1 :usb1.1是标准的USB规范,高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps,b/s位传输速度,bps位传输速率。USB2.0:由USB规范1.1规范演变而来,传输速率达到了48...
2019-03-10 13:34:30
2083
原创 应用四 CUBEMX生成CUSTOMHID
之前这半个月的时间在搞USB自定义HID双向通信,刚开始用的是官方CUBEMX例程,但是后来遇到问题不得不自己生成USB工程代码,参考了网上的一些文档,发现还是存在一些问题导致无法枚举成功,所以这里写一个文档详细记下整个流程,供自己以后参考。所用CubeMx版本为4.16,采用芯片是stm32f373RCT6,下面是整个流程一、新建一个工程二、选择芯片具体型号如果是网上买的板子或者自己画...
2019-03-10 10:57:42
1325
1
原创 应用三 便携式甲醛检测仪(下)--- HT1622
前言在上篇文章中,着重介绍了基于I2C接口的温湿度传感器SHT30的用法,本篇文章着重介绍HX1622液晶驱动的用法。HT162x 系列是由 HOLTEK 公司开发的支持多种显示方式的 LCD 驱动芯片,内部 RAM 直接映射到相对应的 LCD 显示单元。支持串行通信方式。...
2019-03-10 00:49:09
2376
2
原创 RS485通讯介绍(附批量测试思路)
前言做嵌入式开发的无论软件还是硬件,应该经常听见这样一个概念“485协议”,但是呢,去查资料又发现好多人说“485要跑modbus协议”,姑且不论modbus是什么,协议上跑协议,有点晕。到底是怎么回事呢,请往下看。485通讯标准485是电气特性规定为2线,半双工,多点通信的的标准,它的电气特性和RS232不太一样,用缆线两端的电压差值来表示传递信号,RS485仅仅规定那个了接收端和发送端的...
2019-03-09 20:41:14
18766
原创 应用三 便携式甲醛检测仪(上)--SHT30
简介本项目是工作中做的一个便携式手持检测仪项目,集成了自家公司的HCHO,TVOC传感器,买的sht30温湿度传感器,基本功能是能通过集成的传感器检测温湿度信息,空气中甲醛含量,TVOC含量,能通过厂家定制的段码屏显示这些信息和电池电量,能通过按键控制屏幕亮度,短按亮度变暗,长按关闭屏幕。基本功能框图如下:本文将分模块对相应功能进行介绍。SHT30温湿度介绍SHT30是I2C接口的高精度...
2019-03-06 23:48:00
1605
3
原创 I2C协议知识点小结
简介I2C通信是飞利浦公司发明的一种通信协议I2C总线通信时:起始信号、结束信号、应答信号起始信号:当时钟线为高电平,数据线有高到低跳变时产生了起始信号结束信号:当时钟线为高电平,数据线由低到高电平跳变产生结束信号每次传输数据一定是8位,在第九位一定是一个应答位。应答信号:时钟线保证高电平,这期间数据线被拉低。在第九个时钟周期如果主机接收到0说明从机正常接收了数据。I2C数据的传输...
2019-03-05 22:05:34
392
原创 Bluetooth Low Energy协议介绍(下)
前言在上篇文章中,对BLE协议做了基本的介绍,分为三层,这一篇,咱们就对每一层的协议做个详细的分析,从而对整个ble协议有个把握。Controllerphysical layer任何一个通信系统,首先要确定的就是通信介质(物理通道,Physical Channel),BLE也不例外。在BLE协议中,“通信介质”的定义是由Physical Layer(其它通信协议也类似)负责。Physic...
2019-03-02 16:47:17
945
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人