自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 STM32重定向printf到串口

重定向printf到串口首先改写fputc()和fgetc()函数//重定向c库printf函数到串口int fputc(int ch, FILE *f){ //发送一个字节 USART_SendData(DEBUG_USART, (uint8_t)ch); //等待发送完成 while(USART_GetFlagStatus(DEBUG_USART,USART_FLAG_TXE) == RESET); return ch;}//重定向c库scanf

2020-12-05 14:25:08 241

原创 ARM Linux GPIO API操作函数

GPIO API函数说明1.GPIO申请int gpio_request(unsigned gpio, const char *label);获得并占有 GPIO 的使用权,由参数 gpio 指定具体 port,非空的lables指针有助于诊断,主要是告诉内核这地址被占用了,当其它地方调用同一地址的gpio_request就会报告错误,该地址已被申请。2.释放GPIOvoid gpio_free(unsigned gpio)释放 GPIO 的使用权,由gpio 指定具体 port。例如gpi

2020-11-26 10:36:11 296

原创 数组可以这样用,灵活存储,读取,删除数据

循环数组存储数据#include <stdio.h>#include <stdlib.h>#include <string.h>#define LIST_LEN 20#define WRITE_LEN 25#define READ_LEN 20#define PRINT_LIST 0#define PRINT_WRITE 1#define PRINT_READ 2typedef unsigned char u8;

2020-11-21 15:31:40 123

原创 用数组做循环链表,存储读取比较方便

数组循环链表#include <stdio.h>#include <stdlib.h>#include <string.h>#define LIST_LEN 10#define WRITE_LEN 25#define READ_LEN 20#define PRINT_LIST 0#define PRINT_WRITE 1#define PRINT_READ 2typedef unsigned char u8;ty

2020-11-21 10:58:29 288

原创 C单向循环链表存储数据

单向循环链表#include <stdio.h>#include <stdlib.h>typedef struct SinglyCycleList{ int data; struct SinglyCycleList *next;}Node,*pNode;//创建链表void CreateSinglyCycleList(pNode *head){ (*head) = (pNode)malloc(sizeof(Node)); if((*

2020-11-20 12:49:42 157

原创 C语言单向链表学会很容易

单向链表#include <stdio.h>#include <stdlib.h>typedef struct SinglyList{ int data; struct SinglyList *next;}Node,*pNode;//创建链表void CreateSinglyList(pNode *head){ (*head) = (pNode)malloc(sizeof(Node)); if((*head) == NULL)

2020-11-20 11:05:25 80

原创 C语言设计双向循环链表

双向循环链表#include <stdio.h>#include <stdlib.h>typedef struct D_CircularList{ struct D_CircularList *prev; struct D_CircularList *next; int data;}Node,*pNode;pNode CreateNewNode(int data){ pNode newnode = (pNode)malloc(size

2020-11-19 18:15:16 89

原创 C语言双向链表,特别实用

C语言双向链表操作#include <stdio.h>#include <stdlib.h>#define TRUE 1;#define FALSE 0;typedef struct DuLNode{ struct DuLNode *prior, *next; int data;}DuLNode, *DuLinklist;//尾插法创建双向链表void CreateTailList(DuLinklist *L, int n){//创建大小长度为

2020-11-19 14:34:25 172

原创 Ubuntu16.04安装open-vm-tool后复制粘贴失效

解决办法:sudo apt-get install open-vm-tools-desktop然后重启VM,就可以失效复制粘贴了

2020-05-14 09:53:06 1335

原创 Ubuntu 16.04 /mnt/hgfs/下不显示共享文件夹的处理办法

一、解决不显示共享文件夹1.apt-get install open-vm-tools2.vmhgfs-fuse .host:/ /mnt/hgfs但重启之后会失效,需要重新执行vmhgfs-fuse .host:/ /mnt/hgfs二、解决重启后共享文件夹失效#vi /etc/fstab:在最后添加一行: .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0以后重启都会自动挂载。...

2020-05-14 09:29:43 1587

原创 C语言指针的使用

1.指向变量(1) int num = 5;int *a=&num :表示一个指向int型变量的指针,指向的是变量num的地址单元示例代码:#include <stdio.h>#include <stdlib.h>int main(){ int num = 5; int *p = &num; printf("*p = ...

2020-05-04 17:54:12 237

转载 cmake和CMakeLists.txt的学习

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows V...

2020-04-07 15:22:29 269

原创 ssh 软件无法远程登录ubuntu16.04(root 账户)

1.安装SSH服务sudo apt-get install ssh2. 启动ssh服务后,SSH客户端登录root账户出现 “algorithm negotiation failed” 的错误,解决办法:1)修改sshd的配置文件 /etc/ssh/sshd_config在文件末尾添加:Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ct...

2020-04-07 09:58:38 157

转载 ESP32 快速入门(四): CMake 以及分解 esp-idf 中的 hello_world 工程结构

一. CMake 简介CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的 makefile 或者 project 文件,能测试编译器所支持的 C++ 特性,类似 UNIX 下的 automake。二. CMake 示例及语法以下是我选取的 CMake 代码示例:[cpp] view plain copy#project na...

2020-04-03 15:56:57 2898

原创 解决Ubuntu重启后VMware Tools失效问题

用这个补丁来安装VMware Toolsapt-get install dkms linux-headers-$(uname -r) build-essential psmiscgit clone https://github.com/rasa/vmware-tools-patches.gitcd vmware-tools-patches然后选择“安装/重新安装VMware Tools”...

2020-04-03 14:43:24 2319 1

原创 Linux设备驱动之并发与竞态

并发的定义并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(RaceConditions)。例如,对于globalmem设备,假设一个执行单元A对其写入3000个字符“a”,而另一个执行单元B对其写入4000个“b”,第三个执行单元C读取globalmem的所有字符。如果执行单元A、B的写...

2020-03-24 10:02:13 82

原创 并发控制中的completion

作用:用于一个执行单元等待另一个执行单元执行完某事,解决某些同步问题,提供一种比信号量更好的同步机制。1. 定义completion结构体struct completion my_completion; //定义类型为completion 的结构体my_completion 2.初始化completioninit_completion(&my_completion);re...

2020-03-20 15:36:11 415

原创 Linux设备驱动之互斥锁

Linux设备驱动之互斥锁定义:解决互斥问题的基本手段,互斥体是进程级的,用于多个进程之间对资源的互斥,虽然也是在内核中,但是该内核执行路径是以进程的身份,代表进程来争夺资源的。如果竞争失败,会发生进程上下文切换,当前进程进入睡眠状态,CPU将运行其他进程。鉴于进程上下文切换的开销也很大,因此,只有当进程占用资源时间较长时,用互斥体才是较好的选择。初始化:struct mutex my_m...

2020-03-20 11:28:10 562

空空如也

空空如也

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

TA关注的人

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