- 博客(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
319
原创 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
353
原创 数组可以这样用,灵活存储,读取,删除数据
循环数组存储数据#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
155
原创 用数组做循环链表,存储读取比较方便
数组循环链表#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
347
原创 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
203
原创 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
122
原创 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
132
原创 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
215
原创 Ubuntu16.04安装open-vm-tool后复制粘贴失效
解决办法:sudo apt-get install open-vm-tools-desktop然后重启VM,就可以失效复制粘贴了
2020-05-14 09:53:06
1403
原创 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
1691
原创 C语言指针的使用
1.指向变量(1) int num = 5;int *a=&num :表示一个指向int型变量的指针,指向的是变量num的地址单元示例代码:#include <stdio.h>#include <stdlib.h>int main(){ int num = 5; int *p = # printf("*p = ...
2020-05-04 17:54:12
297
转载 cmake和CMakeLists.txt的学习
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows V...
2020-04-07 15:22:29
527
原创 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
205
转载 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
3072
原创 解决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
2455
1
原创 Linux设备驱动之并发与竞态
并发的定义并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(RaceConditions)。例如,对于globalmem设备,假设一个执行单元A对其写入3000个字符“a”,而另一个执行单元B对其写入4000个“b”,第三个执行单元C读取globalmem的所有字符。如果执行单元A、B的写...
2020-03-24 10:02:13
106
原创 并发控制中的completion
作用:用于一个执行单元等待另一个执行单元执行完某事,解决某些同步问题,提供一种比信号量更好的同步机制。1. 定义completion结构体struct completion my_completion; //定义类型为completion 的结构体my_completion 2.初始化completioninit_completion(&my_completion);re...
2020-03-20 15:36:11
478
原创 Linux设备驱动之互斥锁
Linux设备驱动之互斥锁定义:解决互斥问题的基本手段,互斥体是进程级的,用于多个进程之间对资源的互斥,虽然也是在内核中,但是该内核执行路径是以进程的身份,代表进程来争夺资源的。如果竞争失败,会发生进程上下文切换,当前进程进入睡眠状态,CPU将运行其他进程。鉴于进程上下文切换的开销也很大,因此,只有当进程占用资源时间较长时,用互斥体才是较好的选择。初始化:struct mutex my_m...
2020-03-20 11:28:10
626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人