自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (8)
  • 收藏
  • 关注

原创 STM32之串口重定向printf函数和scanf函数

在进行STM32开发时,需要将日志打印出来,直接使用C语言的库函数printf是不起作用的,此时就需要我们将串口重定向printf函数。首先我们需要在keil集成开发环境中勾选STM32官方的微库,如下图所示: 然后就是重写fputc函数,使之定向到制定的串口中去。代码如下:#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (opti

2017-09-09 11:48:50 7740

转载 CPU、MCU、MPU及DSP的区别和介绍

CPU、MCU、MPU及DSP的区别CPU(Central Processing Unit,中央处理器)发展出来三个分枝,一个是DSP(Digital Signal Processing/Processor,数字信号处理),另外两个是MCU(Micro Control Unit,微控制器单元)和MPU(Micro Processor Unit,微处理器单元)。MCU集成了片上外围器件;MPU不带外围

2017-07-24 13:53:26 22112

原创 数据结构——双向链表(C语言实现)

/*************************************************************************> File Name: link_list.c> Author: Andy001847> Mail: [email protected]> Created Time: 2014年10月25日 星期六 11时51分34秒******

2016-04-26 19:00:39 907

原创 Unix C (九)

进程间通信————IPC(Inter Process Communication)1、Unix/Linux系统基于多进程,进程和进程之间经常做数据的交互,这种技术称为进程间通信。2、进程间通信的方式:1)文件2)信号3)管道(最古老的IPC之一,目前较少使用)4)共享内存5)消息队列6)信号量集7)网络编程(socket)...其中共享内存、消息队列和信

2020-09-22 17:37:35 609

原创 ESP32开发环境搭建(Windows平台)

ESP32开发环境搭建之——hello_world一、所需工具由于项目要用ESP32模块进行开发,折腾了下集成开发环境,现将过程记录下来,以便需要的人使用。其中需要的有交叉编译工具,esp-idf示例代码以及C/C++版的eclipse。交叉编译工具MSYS32:https://dl.espressif.com/dl/esp32_win32_msys2_environment_a...

2018-03-31 15:42:22 6607 4

转载 Segger RTT的使用——调试技巧

RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都有这个软件哦。用RTT可以从目标MCU上输出信息的同时也可以非常高速的向应用程序发送信息,并且不影响MCU的实时性。其实现原理就是J-link与MCU共享内存,具体实现细节感兴趣的读者可以自己去查阅下资料,本文以应用为主。RTT的工作框图如下图

2018-02-02 18:03:56 5427

原创 STM32F030C8T6串口接收不定长数据

usart.c文件代码。#include "usart.h"#include "gpio.h"UART_HandleTypeDef huart1;/* USART1 init function */void MX_USART1_UART_Init(void){ huart1.Instance = USART1; huart1.Init.BaudRate = 115

2018-01-24 14:35:20 3907 1

原创 STM8L15x系列DAC的使用

在项目中偶尔会使用DA转换器,我使用的MCU是STM8L151G6U6。我是用的是PB4作为DA输出管脚,查阅该芯片的Reference manual手册可知,PB4是属于DAC_OUT1,即DAC通道一。 再查阅PB4输入输出控制,PB4对应的是开关15。 下面是我用软件触发模式使用的DAC配置代码。 dac.h头文件代码如下:#ifndef __DAC_H__#define __

2017-11-29 10:30:54 4032

原创 STM32之SPI驱动外部Flash

MCU为STM32F030C8T6,Nor Flash为IS25LQ010B。spi.h源代码#ifndef __spi_H#define __spi_H#ifdef __cplusplusextern "C" {#endif/* Includes ------------------------------------------------------------------*/#inc

2017-09-22 12:02:00 2114

原创 STM32平台下的TM1812驱动

TM1812芯片的特性如下: 数据传输参数及时序: 在上图中一个串联了三个TM1812芯片,每个芯片控制四盏灯,每盏灯有R,G,B三种颜色,每种颜色有256(0xFF)阶灰度可调,及每个颜色用一个字节控制。发送完全部LED灯的数据后,发送RESET信号进行LED显示以及重新接收数据。下面是我在STM32F030C8T6中的驱动,时钟频率48MHz。 tm1812.h的代码:#i

2017-09-14 09:27:24 6129 8

转载 Keil用fromelf工具生成bin文件

fromelf –bin –output “@P.bin” “#L” @P,就是取工程名 Project407,不要后缀. [email protected]在指定路径下生成bin文件. @P:在工程的根目录下生成文件. 工程名和链接文件名是不一样的. 工程名:建立工程时候取得名字. 链接文件名:自己随时可更改的.如下图.

2017-09-07 10:25:06 7644

转载 Makefile简易教程

Makefile简介在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现。在大多数情况下,我们主要用它来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库

2017-09-01 15:56:56 399

转载 I2C协议的理解

一、协议分析先想想两个陌生人是怎么进行沟通的,为了显得更有主次关系,选取老板和新员工进行沟通的场景,老板一般占有主动权,而且手中有新员工的基本信息,比如姓名,年龄,性别等。沟通开始:老板:“XXX,欢迎你加入我们公司,为公司注入新的血液!”伸出握手姿势 —— 主握手新员工:“承蒙厚爱,有幸加入我们公司,我觉得是一种光荣!”握手 —— 握手成

2017-07-28 10:15:01 871

转载 Windows10有线网卡无法上网的解决办法

昨晚刚下班打开自己的台式机,发现上不了网,用“疑难解答”诊断显示“以太网适配器的驱动程序可能出现问题”,故而卸载网卡驱动,用其他笔记本重新下载对应驱动程序。下载了很多个驱动版本,怎么重装都没有效果。折腾了一夜,还是没有任何结果。第二天醒来,用手机再次找寻,便找到了解决办法,很是感谢笔者。原来只需将microsoft网络客户端,qos数据包计划程序,microsoft网络的文件盒打印机共享,链路层拓扑

2017-07-01 11:40:35 13800

转载 J-Link v8固件丢失修复

0.开始前准备工具1.SAM-BA v2.12.exe 用于烧写固件 下载地址:http://download.csdn.net/detail/hzt12345hf/9457629新版本的SAM-BA(例如sam-ba v2.9)不能正确连接JLink,所以还是用了这个版本2.JLink v8固件 下载地址:http://download.csdn.net/detail/hzt12345hf/945

2017-05-25 18:57:53 2486

转载 什么是达夫设备(Duff's Device)

在看《你必须知道的496个C语言问题》一书中,提到”达夫设备”这个东西,主要是下面的代码:register n = (count + 7) / 8; /* count > 0 assumed */switch (count % 8){ case 0: do { *to = *from++; case 7:

2017-03-10 09:24:26 782

原创 C语言字符串的处理

字符串的处理: 1、C程序员定义字符串的方式有三种: 1) 字符串字面值:”abc” 2) 字符数组:char buf[50]; 3) 字符指针:char *str;2、数组可以看成常指针(不可以改变地址,只能初始化)。某些时候和指针有区别(比如使用sizeof的时候)。 3、memset函数可以清理字符数组,包括变长数组。4、实例:/*

2017-02-17 09:34:23 849

转载 延时函数sleep和delay的区别

在VC中使用带上头文件#include <windows.h>注意: 在VC中Sleep中的第一个英文字符为大写的”S” 在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep. Sleep函数的一般形式: Sleep(unisgned long); 其中,Sleep()里面的单

2017-02-16 09:32:17 14432

原创 USART配置成SPI实例代码

在工作中第一次遇到可以将串口当做SPI使用的情况,下面是我在ATSAM4SD16B芯片中书写的将USART配置成SPI使用的代码。// Include files#include "component_usart.h"#include "sam4sd16b.h"#include "assert.h"#include "sam_gpio.h"#include "sysclk.h"#defin

2017-02-08 15:49:06 1895 1

原创 普通GPIO模拟SPI通信协议(软件SPI)

在工作中偶尔会遇到SPI不够用的情况,而我们又要去使用SPI通信协议,此时就需要我们自己去模拟SPI通信协议。我们知道SPI通信协议有四种模式,它们分别如下所示: 下面是我基于ATSAM4SD16B芯片在Atmel Studio上用普通GPIO模拟的SPI通信协议的代码:#include "ioport.h"#include "pio.h"#include "delay.h"#inclu

2016-12-29 09:46:02 25718 3

原创 Log打印技巧(C语言实现)

在实际开发中我们经常要通过打印Log来调试程序,经常会用到打印函数,这里我书写了个宏,做到有选择的打印log。发话不多说,直接贴代码,希望对各位同人有所启发。/*File : log.cBreif : Define a macro to optition print logDate : 2016-12-16Author: Andy*/#include <stdio.h>/* Defin

2016-12-16 14:29:16 5970 5

转载 推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别

最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)G

2016-12-16 14:00:39 991

转载 防止头文件被重复包含的两种方式#pragma once 与 #ifdef 的区别

当一个项目比较大时,往往都是分文件,这时候有可能不小心把同一个头文件 包含多次,或者头文件嵌套包含,比如: a.h 中包含 b.h : #include “b.h” b.h 中包含 a.h: #include “a.h” 而main.c 中使用其中头文件: #include “a.h” int main() { return 0;} 编译上面的例子,会出现如下错误:

2016-11-20 13:51:33 2422

转载 void在C语言中特殊使用

在C语言中,在定义函数时,加在函数名前的“void”表示该函数没有返回值,调用时直接书写函数名和参数即可。  但是有些函数明明在定义的时候不是void型,却在调用时可能会在前面加上void,这表示程序并不关心调用该函数后的返回值是什么,即告诉静态代码检测工具不要去处理此处该函数的返回值。比如函数strcpy,我们直接用“strcpy(des_str, src_str);”这样的形式来用。“(voi

2016-11-17 13:53:55 2532

原创 ISO15693类型的命令解析以及防碰撞过程

一、介绍 本博文介绍了符合ISO15693标准的标签类型的检测以及防碰撞过程。二、协议简介 (2.1)ISO15693介绍了三种模式,它们之间的关系如下所示: (2.2)请求命令格式: SOF Flags Command Code Parameters Data CRC EOF 帧开始 标识 命令代码 参数

2016-06-21 15:03:58 19397 1

原创 双向链表实现的消息队列

// include head file#include <stdio.h>#include <stdint.h>#include <stdlib.h>#include <string.h>#include <vld.h> /* This head file could be omit, it used for check whether memory leak. You must be

2016-04-26 18:26:32 1159

原创 ISO14443 Type B类型卡的防碰撞过程以及命令解析

一、介绍 本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 Type B协议检测匹配的PICC(Polling For Proximity Cards)命令以及防碰撞过程(Anticollision Proccess)。二、命令2.1 REQB和WUPB2.1.1 概要 REQB命令和WUPB命令是PCD用来检测PICC是否在无限射频场(RF

2016-04-24 23:07:38 32501 4

原创 ISO14443 Type A类型卡的防碰撞过程以及命令解析

一、介绍 本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 Type A协议检测匹配的PICC(Polling For Proximity Cards)命令以及防碰撞过程(Anticollision Proccess)。二、命令1 REQA和 WUQA1.1 命令概要 REQA命令和WUPA命令是PCD用来检测Type A类型卡是否在无线射频

2016-04-24 02:42:59 44724 10

原创 如何将多个bin文件合成一个bin文件?(二)

一、所需软件 J-flash ARM二、所需合成文件 1)Bootload.hex(Bootload.bin) 2)Application.hex(Application.bin)三、步骤 打开J-flash ARM软件,将要合成的第一个文件Bootload.hex拖到J-flash ARM中,接着点击File,打开Merge data file…找到第二个要

2016-03-10 10:20:01 4500

原创 如何将多个bin文件合成一个bin文件?(一)

如何将多个bin文件合成一个bin文件?一、使用到的软件 WinHex二、所用文件 Bootload.bin Application.bin三、生成目标文件 Target.bin四、步骤 1)新建目标文件target.bin,此时文件大小为0. 2)使用WinHex软件打开Target.bin、Bootload.bin和Applicatio

2016-03-08 16:03:11 7896

转载 射频识别技术——数据编码

射频识别技术中的调制方法一般使用调幅(AM),也就是将有用信号调制在载波的幅度上传送出去。这里的“有用信号”指用高低电平表示的数据“0”或“1”。那么如何用高低电平表示数据“0”或“1”呢?最简单的办法就是用高电平表示“1”,用低电平表示“0”,这种代码叫全宽码,如下图所示: 这种编码方式存在的最大缺陷就是数据容易失步。上图的数据我们看的很清楚,但是想想如果发送方连续发送100个“0”或1

2015-09-07 10:59:14 4914

转载 无线射频技术总结

无线射频技术总结正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作。但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突。1.面向比特的防冲突机制 ISO14443A中使用这种防冲突机制,其原理是基于卡片有一个全球唯一的序列号。比如Mifare1卡,每张卡片有一个全球唯一的32位二进制序列号。显而易见,卡号的每一位上不是“1”就

2015-09-07 10:48:25 2338

转载 ISO / IEC 14443 Type-B initialization and anticollision

Type-B initialization and anticollisionType-B proximity cards use a ‘dynamic slotted ALOHA procedure’ for selection. In this procedure, cards within the working range of a terminal transmit their da

2015-07-06 18:13:41 1927

原创 Unix C (十一)

线程  1、理论和原理  1)主流的操作系统都是支持多进程的,每个进程的内部可以启动多线程完成代码的并行;每个线程的内部可以无限启动多线程。  2)线程是轻量级的,不拥有自己独立的内存空间,共享所在进程的相关资源(代码区/全局区/堆/文件状态/共享资源),线程拥有的只是一个独立的栈空间。  3)进程是重量级的,必须拥有自己独立的内存空间。  4)计算机执行代码必备CPU/内存,

2014-12-29 22:13:28 621

转载 什么是达夫设备(Duff's Device)

在看《你必须知道的496个C语言问题》一书中,提到"达夫设备"这个东西,主要是下面的代码:register n = (count + 7) / 8; /\* count > 0 assumed \*/switch (count % 8){case 0: do { \*to = \*from++;case 7: \*to = \*from++;case

2014-12-27 11:36:16 804

原创 Unix C (十)

网络编程:  ip 地址 是网络中计算机的地址,和mac地址(网卡出厂地址/物理地址)联合 能够让网络找到计算机。用端口(port)定位一个进程。因此网络编程就是 ip+端口。  Unix系统中,几乎一切都可以看成文件。因此网络信息的交互就用文件的交互方式。  ip地址底层是整数,分为ipv4(4位ip)和ipv6(6位)。  对ip的描述方式一般使用点分十进制。4个或者6个 0-

2014-12-23 18:03:49 732

原创 Unix C (八)

信号(signal):1、信号是Unix/Linux系统中软件中断的最常用方式。2、中断就是中止当前正在执行的代码,转而执行其他代码。中断分为软件中断和硬件中断。常见信号中断:Ctrl+c段错误总线错误整数除0kill -9发送信号9子进程结束给父进程发信号信号的本质就是一个非负正数,Unix和Linux在信号上有区别。Unix是48个,Linux是64个,

2014-12-23 17:06:48 671

原创 Unix C (七)

进程: 1、程序和进程的区别。1)程序就是代码编译链接的成品(可执行程序)。程序是硬盘上的文件。2)进程就是运行在内存中的程序,一个程序可以启动多次,得到多个进程。3)CPU只能直接操作内存,不能直接操作硬盘,硬盘上的程序想要运行,程序必须先加载到内存中,变成进程。4)在日常生活中,为了跟客户交互,有时候也把进程成为程序。2、主流的操作系统都是多进程的,每个进程内部还可

2014-12-23 15:42:16 535

原创 Unix C (六)

文件锁:    1、当多个进程同时写一个文件时,有可能出现数据混乱,这个问题需要解决。解决方案:进程间的同步或文件锁。    2、文件锁就是当一个进程读写文件时,对其他进程进行读写的限制。    3、文件锁的结论:1)一个进程读,允许其他进程读,但不允许其他进程写。             2)一个进程写,其他进程既不能读也不能写。    4、文件锁是一个读写锁,包括读锁和写锁

2014-12-23 15:16:09 529

原创 Unix C (五)

系统调用  系统调用可以操作内核,是外部程序和内核层交互的接口,但不能过于频繁的调用,否则效率极低。   time命令可以查看用户层及其内核层的执行时间。 文件和目录  在Linux/Unix中,几乎一切都可以被看成文件。  因此,系统调用函数open/close/read/write/ioctl几乎可以通用。   在Unix的系统调用中,打开/创建一个文件会产生一个文件表

2014-12-23 11:58:40 520

ESP32使用手册

ESP32开发手册,包含各个API的使用介绍,有助于嵌入式软件开发工程师快速上手。

2018-09-12

Keil配色方案以及代码格式化

里面包含个人比较喜欢的Keil代码配色方案,以及代码自动格式化工具,具体怎么使用请看文档说明。

2018-09-05

MBI5153英文数据手册V1.00

该文档为MBI5153英文版数据手册,它的最后修订时间为2014年5月。MBI5153是一种SPWM控制的全彩RGB Led芯片,支持多灰度显示,详情见文档。

2017-09-20

MBI5153中文数据手册V1.00

该文档是MBI5153中文数据手册V1.00版本,它的最后修订时间为2014年3月。MBI5153是一种SPWM驱动的全彩RGB,16个恒流输出通道。详情见文档!

2017-09-20

MBI5153中英文数据手册 V1.00

该附件包含中文版和英文版的MBI5153文档,版本为V1.00,中文版最后修正时间为2014年3月,英文版最后修正时间为2014年5月。

2017-09-19

Vim中文手册(Vim v8.0)

该文档为Vim中文版使用手册,Vim版本为8.0,是那些使用Vim编辑器而又不想阅读英文程序员的福音。该文档包含Vim的所有介绍,所以内容比较丰富,总页数有3003页之多。

2017-09-15

健康用电脑

我们常常在电脑旁边一坐就是一整天,这里有一些健康知识,不多,但是很是收益。

2014-10-27

空空如也

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

TA关注的人

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