自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (9)
  • 收藏
  • 关注

原创 ASC0106硬件连接注意事项

SLSERT:不要动,工作在IIC方式。TP2(KYSEL):要通过高阻接地,否则工作在8键模式。

2017-07-29 17:33:11 406

原创 AB1601spi传输慢的问题

在使用spi传输数据时,如果使用终端方式,则很慢,主要是中断响应很慢,有100us多的延时,采用查询方式反而没这个问题。

2017-07-29 17:30:18 378

原创 AB1601串口之bugs

1.当对方使用错误的数据格式发送数据时,串口必死。2.上电时如果连接了对端的串口,串口1死,串口2导致复位重启。一般解决办法,串口延时打开,对端如果要关闭,则现将1601的串口关闭。在接指纹机的时候使用这种办法有点管用。

2017-07-29 17:27:29 290

原创 AB1601GPIO不支持较高频率的脉冲中断

当输入信号的周期比较小时,中断脚无法做出响应。测试代码如下:#include "ab1600.h"#include #include #include #include "ab_uart.h"#include "ab_clk.h"#include "Drv_gpio.h"#include "Drv_pinmux.h"//pio input/outpu

2017-07-29 17:22:25 462

原创 AB1601某些io口不支持较高频率信号的输入

实际项目中用到125K ID卡的数据采样,发现某些IO口不支持,实测结果如下://#define ID_RFIN_PIN PIO0//ok//#define ID_RFIN_PIN PIO1//ok//#define ID_RFIN_PIN PIO2//ok//#define ID_RFIN_PIN PIO3//error//#define ID_RFIN_PI

2017-07-29 17:19:07 375

原创 AB1601的波特率注意事项

要根据主机的工作频率进行选择,最高可以到3Mbps:

2017-07-29 17:15:30 669

原创 AB1601读触摸芯片ASC0106的IIC波形图

有点毛刺,但不影响逻辑。

2017-07-29 17:09:59 1037 3

原创 AB1601之iic驱动改造

由于项目中需要使用iic的当前位置读数据模式,但厂家sdk中并没有实现。那就只能自己动手了:I2C_STATUS_ENUM DRV_I2C_SetupForRead(I2C_BUS_CTRL_T * pI2cCtrl, void(*end_cb)(I2C_STATUS_ENUM)){while(DRV_I2C_IsBusy());DRV_I2C_Disable();DRV_I2

2017-07-29 17:00:49 518

转载 javascript读写json示例

JSON是一种简单的数据格式,比xml更轻巧,在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包,下面有个示例,大家可以参考下JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特

2017-07-27 14:11:56 1588

转载 javascript 和 jq 的调试 用console.log() 函数

对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断javascript程序的执行,从而造成副作用;而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑。用法:代码如下:window.console.log("Sample log");上述代码可以忽略wi

2017-07-27 11:58:02 1041

转载 JavaScript定时器原理及高级使用

JavaScript里面内置了两个定时器,一个是setTimeout()一个是setInterval()。下面将由浅入深来理解一下定时器的工作原理。使用方式:setTimeout()setTimeout 的语法非常简单,第一个参数为回调函数,第二个参数为延时的时间。函数返回一个数值类型的ID唯一标示符,此ID可以用作 clearTimeout 的参数来取消定时器:

2017-07-27 11:49:35 334

转载 javascript之数组操作

1、数组的创建var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值    要

2017-07-26 12:00:39 187

转载 ubuntu 12.04下apache 配置家目录地址

apache2 最在搞前端相关的东西,上一次也记录了 Linux 下 LAMP环境的搭建,现在记录一下如果改变 apache2 的家目录地址该怎么做,改那个配置文件修改配置文件 /etc/apache2/sites-available/default 1 80> 2 ServerAdmin webmaster@localhost 3 4 Do

2017-07-25 23:26:23 234

转载 Ubuntu 安装和修改Apache2端口

Ubuntu 安装和修改Apache2端口[日期:2013-05-15]来源:Linux社区  作者:sheismylife[字体:大 中 小]Linux系统:Ubuntu 13.04因为本机有Nginx,所以没有安装Apache2的需要。不过今天为了学习如何使用icinga,还是学一下apache2吧,以后熟悉了ic

2017-07-25 23:11:44 585

转载 ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程

最近,经理让我搭建一个服务器,我从网上找了一篇比较好的教程,按教程一步步执行感觉挺顺利,所以准备整理一下这个教程。尊重原版注明出处:http://news.2ky.cn/Linux/ubuntu-12.04-web-server.htm1.开始说明下面很多可能参照网上其中以为前辈的,但有所改进吧。这些设置可能会有所不同,你需要根据不同情况进行修改。安装apache2

2017-07-25 23:10:46 870

转载 STM32如何查找hardfault原因

STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法:发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将

2017-07-25 19:45:54 1327

转载 理解linux虚拟文件系统VFS - 概述

当前,除了Linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,比如reiserfs, xfs, Windows的vfat NTFS,网络文件系统nfs 以及flash 文件系统jffs2, yaffs/yaffs2 ubifs。linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。对于用户来说,这些文件系统几乎是透明的,在大部分情况下,用户通过libc

2017-07-24 18:07:59 777

转载 Linux内核Ramdisk(initrd)机制

摘要:对于Linux用户来说,Ramdisk并不陌生,可是为什么需要它呢?本文对Ramdisk在内核启动过程中的作用,以及它的内部机制进行深入介绍。标题initrd 和 initramfs在内核中的处理临时的根目录rootfs的挂载initrd的解压缩老式的initrd的处理cpio格式的initrd的处理initrd实例分析在早期的Linux系统中

2017-07-24 18:03:07 422

转载 linux驱动篇之 driver_register 过程分析(一)

linux驱动注册过程分析--driver_register(一)个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.csdn.net/richard_liujh/article/details/45825333kernel版本3.10.14driver_register顾名思义,是驱动程序的注册。但是很少是由我们写的驱动直接调用的,

2017-07-24 09:47:41 596

转载 linux驱动的入口函数module_init的加载和释放

就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include #include #include 其中,init.h 定义了驱动的初始化和退出相关的函数,kernel.h 定义了经常用到的函数原型及宏定义,module.h 定义了内核模块相关的函数、变量及宏。      几乎每个

2017-07-24 09:47:27 406

转载 linux驱动篇之 driver_register 过程分析(二)bus_add_driver

linux驱动篇之 driver_register 过程分析(二)个人笔记,欢迎转载,请注明出处,共同分享 共同进步 http://blog.csdn.net/richard_liujh/article/details/48245715kernel版本3.10.141.概述本篇主要围绕driver_register中的第二步bus

2017-07-24 09:46:54 438

转载 Linux Device和Driver注册过程,以及Probe的时机

Linux 2.6的设备驱动模型中,所有的device都是通过Bus相连。device_register() / driver_register()执行时通过枚举BUS上的Driver/Device来实现绑定,本文详解这一过程。这是整个LINUX设备驱动的基础,PLATFORM设备,I2C上的设备等诸设备的注册最终也是调用本文讲述的注册函数来实现的。 Linux Device的注册

2017-07-24 09:46:30 237

转载 Linux内核spin_lock与spin_lock_irq分析

在Linux内核中何时使用spin_lock,何时使用spin_lock_irqsave很容易混淆。首先看一下代码是如何实现的。spin_lock的调用关系     spin_lock             |           + ----->  raw_spin_lock |+------>  _raw_spin_lock

2017-07-24 09:46:11 355

转载 使用 Linux 系统调用的内核命令图解

http://www.ibm.com/developerworks/cn/linux/l-system-calls/使用 Linux 系统调用的内核命令

2017-07-24 09:45:53 225

转载 Linux中的中断处理

Linux中的中断处理http://www.uml.org.cn/embeded/201304021.asp 发布于2013-4-2 与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:in

2017-07-23 10:06:49 415

转载 对Linux内核中进程上下文和中断上下文的理解

内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的 级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运 行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制

2017-07-23 10:06:33 272

转载 Linux workqueue工作原理

1. 什么是workqueue       Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.      工作队列(workqueue)是另外一

2017-07-23 10:06:20 318

转载 kthread_work和kthread_worker机制

Kernel中提供的kthread_work和kthread_worker机制和经典的work_struct和workqueue_struct的关系有点类似.通过一个kthread_worker可以处理多个kthread_work,其实就是利用了工人在流水线上工作的形式.先来看看这两个数据结构的定义,它们定义在头文件include/linux/kthread.h(3.1版本)struct

2017-07-23 10:06:02 793

转载 kthread_run创建内核线程的原理

kthread_run是一个宏,用来创建一个进程,并且将其唤醒,其定义在头文件include/linux/kthread.h中.#define kthread_run(threadfn, data, namefmt, ...)               \({                                       \    struct task_struc

2017-07-23 10:05:34 698

转载 Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

我们知道,SPI数据传输可以有两种方式:同步方式和异步方式。所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回。而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成

2017-07-23 09:51:58 792

转载 Linux SPI总线和设备驱动架构之三:SPI控制器驱动

通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1.    申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等;2.    配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作;3.    向通用接口

2017-07-23 09:51:30 272

转载 Linux SPI总线和设备驱动架构之二:SPI通用接口层

通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了相应的数据结构,这些数据结构一部分是SPI设备、SPI协议驱动和SPI控制器的数据抽象,一部分是为了协助数据传输而定义的数据结构。另外,通用接口层还负责SPI系统与Linux设备模型相关的初始化工作。

2017-07-23 09:50:56 561

转载 Linux SPI总线和设备驱动架构之一:系统概述

SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线分别是:CS    片选信号SCK  时钟信号MISO  主设备的数据输入、从设备的数据输出脚MOSI  主设备的数据输出、从设备的数据输入脚因为在大多数情况下,CPU或SOC一侧

2017-07-23 09:50:17 265

转载 内核定时器的使用

内核定时器的使用LINUX内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1) 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何

2017-07-23 09:49:58 509

转载 driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)

内核版本:2.6.38-11-generic    内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算是明白一点了。    对于导出符号表,内核文档给出了三种解决方案,见尾部,现在忽略。    现在有两个模块,a模块导出函数myprint,b模块使用该函数,想象一下如果a

2017-07-22 17:11:01 651

转载 Linux下后缀名为ko、o、a、so、la的文件简述

/********************************************************************************************* author:conowen@大钟 * E-mail:conowen@hotmail.com * http://blog.csdn.net/conowen * 注:本文为原创,仅作为学习交流使用

2017-07-22 17:06:40 2929

转载 宏EXPORT_SYMBOL在内核中的作用

Module运行在kernel space,不能直接调用应用程序库,只能调用内核函数。EXPORT_SYMBOL的作用是把内核函数的符号导出,也就是将函数的入口地址导出。 Module在运行的时候会根据Kernel中的符号表(EXPORTSYMBOL的名字表)去找Symbol(根据内核函数loadmodule()中的_findsymbol),如果该Module无法找到sym

2017-07-22 17:04:51 515

转载 linux copy_from/to_user原理

转载地址:http://www.poluoluo.com/server/201107/138420.html在研究dahdi驱动的时候,见到了一些get_user,put_user的函数,不知道其来由,故而搜索了这篇文章,前面对Linux内存的框架描述不是很清晰,描述的有一点乱,如果没有刚性需求,建议不用怎么关注,倒不如直接看那几个图片。对我非常有用的地方就是几个函数的介绍,介绍的比较详细

2017-07-22 17:02:23 1383

转载 vmalloc 实现

内核版本:2.6.28linux如何利用伙伴系统,slab分配器分配内存,用这些方法得到的内存在物理地址上都是连续的, 然而,有些时候,每次请求内存时,系统都分配物理地址连续的内存块是不合适的,可以利用小块内存“连接”成大块可使用的内存.这在操作系统设计中也被称为 “内存拼接”,显然,内存拼接在需要较大内存,而内存访问相比之下不是很频繁的情况下是比较有效的.  在linux内核中用

2017-07-22 13:30:12 2415

转载 kmalloc/kfree,vmalloc/vfree函数用法和区别

kmalloc/kfree,vmalloc/vfree函数用法和区别1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。> 2>kamlloc函数原型:#includeVoid *kmalloc(

2017-07-22 13:25:52 363

VS2017-吉比特can分析仪二次开发

吉比特CAN分析仪二次开发软件小工具,基于VS2017-VC++平台,演示了CAN总线的数据收发,仅供参考。吉比特CAN分析仪二次开发软件小工具,基于VS2017-VC++平台,演示了CAN总线的数据收发,仅供参考。

2019-01-29

VS2017-VC++版本校验和计算小工具

基于VS2017 VC++平台的校验和计算小工具软件,目前支持异或,累加2中算法。

2019-01-14

VS2017-MFC-生成二维码小程序

VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。

2018-12-07

VS2017工程MFC子线程中更新控件的内容

VS2017工程,MFC子线程中更新控件的内容,采用消息机制来实现,简单易懂,非常方便新手的入门。

2018-12-06

VS2017-MFC子线程中更新控件的内容框架代码

VS2017工程,MFC子线程中更新控件的内容,采用全局函数的方法来实现,简单易懂,非常方便新手的入门。

2018-12-06

简单的画时钟程序源码

参考网上的的代码,进行了简化和修改,只使用了一个对话框界面,尽量使用少的函数调用。对新手来说具有一定的参考价值。

2018-12-02

VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码

VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。

2018-11-09

VS2017平台下最简洁的基于C语言开发的串口发送程序

VS2017平台下最简洁的基于C语言开发的串口发送程序测试代码,修改简单灵活,方便用于各种串口调试。VS2017平台下最简洁的基于C语言开发的串口发送程序测试代码,修改简单灵活,方便用于各种串口调试。

2018-11-09

aes加密解密测试代码

aes加密解密测试代码,ubuntu12 gcc下测试验证通过。 这个代码是ST17H26 SDK中的,来自网上开源代码,为了兼容多种平台,里面的宏定义分支很多。

2017-10-14

空空如也

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

TA关注的人

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