自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(409)
  • 资源 (19)
  • 论坛 (1)

原创 RT-Thread线程

1. 线程创建线程的创建可以使用rt_thread_create()函数,原型如下:rt_thread_t rt_thread_create(const char *name, void (*entry)(void *parameter), void *paramet

2018-02-05 16:40:07 813

原创 RT-Thread初探

试验平台:正点原子探索者STM32F407开发板一、RT-Thread介绍RT-Thread是由国内开发者主导开发的一款开源嵌入式实时操作系统,它包含:操作系统内核、TCP/IP协议栈、文件系统、libc接口,图形引擎等等。RT-Thread官网:https://www.rt-thread.org/代码地址:https://github.com/RT-Thread/rt-thread二、RT-Th...

2018-02-01 16:55:53 5990

原创 libopencm3库的使用

libopencm3是开源的cortex-m系列单片机的固件库,支持stm32、atmel、nxp等等系列单片机。在Linux下编译需要交叉编译器gcc,从这里下载:https://launchpad.net/gcc-arm-embedded/+download,下载编译好的Linux下的版本就可以了。解压缩,设置环境变量,使用arm-none-eabi-gcc -v命令测试一下设

2017-11-10 17:32:49 2945

原创 第九篇 蓝牙配对

不管是经典蓝牙也好,还是BLE也好,配对方式都有四种,分别是:1. Numeric Comparison2. Just Works3. Out of Band4. Passkey Entry而ble_app_template这个工程默认是采用的Just Works这种配对方式,这种方式是不需要配对码的,也就是直连的。而这里我们要改成使用动态密码方式进行配对,也就是P

2017-11-02 14:05:01 681

原创 第八篇 uCGUI的移植

uCGUI版本:v3.98屏:OLED前面显示字符串我们自己定义了一个字库,uCGUI中肯定也是有字库支持的,这里的移植目标也是调用GUI_DispString()函数后能正确显示出字符,这里不会将uCGUI的所有功能添加进工程中,所以还是以显示字符为前提。首先将uCGUI中的Start/GUI和Start/Config两个目录拷贝到项目中。然后将Sampl

2017-09-21 16:51:21 3480 1

原创 第七篇 OLED屏

OLED即Organic Light-Emitting Diode,相比LCD的屏,LCD屏需要背光,而OLED不需要,因为它本身就是发光的。开发板上的屏使用的驱动IC是SSD1306,支持并口、I2C和SPI等接口,可以根据自身需要进行灵活的配置。具体是使用的哪种接口,是通过芯片BS0、BS1、BS2三个引脚来控制的,如图所示:另外,我拿到的屏是配置成四线SPI接口的,而不是

2017-09-15 18:29:07 2117 3

原创 第六篇 蜂鸣器和app_timer

开发板上的蜂鸣器是有源的,所以控制上相对比较简单,要让蜂鸣器出声,只需要把控制gpio口拉高就可了。什么时候关闭蜂鸣器呢?有两种办法,一是在打开蜂鸣器之后加上一段延时,然后再关闭蜂鸣器。二是使用timer,加延时不好的地方在于蜂鸣器发声之后cpu就不能做其他工作了,在有些情况下会影响用户体验,所以呢,这里需要使用timer来控制。在蓝牙样板程序中已经有app_timer的初始化,对

2017-09-12 11:11:23 1308

原创 第五篇 按键

实际上在蓝牙样板程序中已经包含了按键部分的初始化,我们只需要根据自己的板子做很少的配置工作,buttons_init()函数如下:static void buttons_init(void){ // Note: Array must be static because a pointer to it will be saved in the Button handler //

2017-09-11 16:32:37 319

原创 第四篇 串口通信

在单片机程序开发中除了单步调试外,最有效的调试方法算是打印调试了,所以这里先把串口功能调试好,也方便以后的调试开发。nRF51822带有一个UART接口,但是没有固定的TX、RX引脚,是可以任意配置到不同的IO引脚上,这也为硬件上连线提供了方便。Ok,我们在蓝牙样板程序中增加UART功能。首先是串口初始化,串口初始化可以使用simple_uart.c提供的simple_ua

2017-08-27 18:17:11 1427

原创 第三篇 蓝牙工程样例模板

如何使用nRF8122来开发蓝牙应用呢?实际上在安装了Keil的nRF8122软件支持包之后,在Keil目录下,有蓝牙开发的模板示例程序,目录为:C:\Keil\ARM\Device\Nordic\nrf51822\Board\nrf6310\s110\ble_app_template这个程序是Nordic为蓝牙开发者提供的一个模板程序,这个程序是能够直接编译成功的。先Down

2017-08-25 09:03:40 1136

原创 第二篇 点亮led灯

在上一篇,开发环境建立好了,那么接下来开发一个简单的应用,点亮一个led灯。首先新建一个工程,Device选择nRF51822_xxAA。工程建立好之后,接下来编写一个main.c来点亮led灯,代码如下:#include #include #define LED_INDEX 16void init_led(void){ nrf_gpio_cfg_output(LED

2017-08-22 11:40:30 1204

原创 第一篇 开发环境的建立

开发环境:Windows7 + 青云蓝牙开发套件nRF51822是由挪威Nordic公司推出的低功耗蓝牙解决方案,基于Cortex M0内核,开发环境使用的是Keil软件。那么首先是安装Keil,光盘中给了一个4.7的Keil版本,直接安装就可以了。然后是需要破解,使用keygen生成一个License ID然后添加进去就可以了。官方提供的Keil软件并不支持nRF

2017-08-22 11:34:02 383

原创 Linux driver oops异常的处理

如果Linux驱动里面出现了oops异常,这种情况如何快速定位到底什么原因引起的呢,需要对驱动debug。例如:#include #include static int __init hello_init(void){ int *p = NULL; *p = 0; return 0;}static void __exit hello_exit(void){}mo

2017-04-07 16:27:05 2197

原创 C++引用

一. C++中的引用引用(reference)实际上是为对象定义了一个别名,主要用作函数的形参。引用通过在变量名前加上"&"符号来定义。例如:int ival = 1024;int &refVal = ival; // ok: refVal refers to ivalint &refVal2; // error: a reference must be initia

2016-11-30 17:16:38 294

原创 Android权限问题

SELinux是什么?即Security-Enhanced Linux,是由美国国家安全局(NSA)发起,基于Linux开发的一个安全增强系统,旨在提高系统的安全性。而SEAndroid基于SELinux,在Android5.0上被正式启用。SELinux有3种操作模式,分别是Disabled、Permissive、Enforcing,在android中可以通过输入adb命令get

2016-11-18 16:28:53 1655 1

原创 mtk平台充电器检测

平台:mt6735 5.1首先来看BAT_thread()。void BAT_thread(void){ static kal_bool battery_meter_initilized = KAL_FALSE; if (battery_meter_initilized == KAL_FALSE) { battery_meter_initial(); /* move from b

2016-11-04 16:34:33 5779 4

原创 mtk电池温度检测

平台:mt6735+mt6328 Android版本:Android5.1手机里面电池通常有4个引脚,即电池的+、-极,ID引脚、NTC引脚。id引脚用来识别电池的类型,例如是锂电池还是镍氢电池,不过现在手机上基本用的都是锂电池了。而NTC引脚主要用来测量电池温度的,还可以用来检测手机有没有按上电池,那么这里就来说明这两个功能。1. 电池检测在mt6735+mt6328平台方案

2016-10-14 18:29:55 7495

原创 ALSA lib调用实例

1. Display Some PCM Types and Formats#include int main() { int val; printf("ALSA library version: %s\n", SND_LIB_VERSION_STR); printf("\nPCM stream types:\n"); for (val = 0; val

2016-09-22 10:31:55 2480

原创 ubuntu 12.04安装alsa-lib、alsa-utils

1. alsa-lib./configuresudo make install注意:默认是安装到/usr/这个目录下面,但是我测试多了多次,安装了alsa-lib之后,系统就没有声音了,也没有找到是什么原因。不得已,先安装到其他目录试试:./configure --prefix=$HOME/alsa-lib/make && make install2. alsa-u

2016-09-11 12:42:21 4961 1

原创 wav音频文件格式解析

wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,想对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些。文件格式如图所示:解析代码如下:#include #include #include struct WAV_Format { uint32_t ChunkID; /* "RIFF" */ uint32_t ChunkSize

2016-09-11 09:07:56 14380 3

原创 Linux Completion

内核版本:Linux-4.5在Linux驱动程序中,有时需要等待一个事件的完成,就需要用到completion机制,需要包含头文件completion类型定义如下:struct completion { unsigned int done; wait_queue_head_t wait;};说明completion使用等待队列来实现的。可以使用宏DECLARE_C

2016-08-04 15:22:23 541

原创 SPI协议

参考:https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bushttps://en.wikipedia.org/wiki/Serial_Peripheral_Interface_BusSPI(Serial Peripheral Interface)是一种用于短距离的同步串行通信协议,由Motorola开发。SPI通常

2016-07-18 11:58:39 1576

原创 mtk camera加载流程

平台:mt6735从imgsensor_drv.cpp中的impSearchSensor()函数说起。MINT32ImgSensorDrv::impSearchSensor(pfExIdChk pExIdChkCbf){ MUINT32 SensorEnum = (MUINT32) DUAL_CAMERA_MAIN_SENSOR; MUINT32 i,id[KDIMGS

2016-07-04 12:06:45 5412

原创 Linux wakelock与autosleep

内核版本:Linux-4.5. wakelockLinux kernel在3.4及以后的版本中加入了wakelock机制,作用同之前的Android内核一样:1. 为应用层提供接口来创建、释放wakelock2. 在driver中,同样也可以创建、释放wakelock3. 当所有的wakelock都释放掉之后,系统可以自动进入低功耗状态,由autosleep来实现

2016-06-21 11:41:51 2975

原创 Line Disciplines

在Linux tty子系统中,Line Disciplines处在底层驱动与上层应用的之间,先来看一个例子:#include #include #include #include static int my_ldisc_tty_open(struct tty_struct *tty){ printk("%s\n", __func__); if (tty->ops->write

2016-05-29 19:51:03 868

原创 关于i2c_register_board_info()函数

i2c_register_board_info()函数用于往__i2c_board_list这条链表添加一条i2c设备信息,在i2c adapter注册的时候,会扫描__i2c_board_list链表,然后调用i2c_new_device()函数来注册i2c设备,注意,要先于i2c adapter注册之前就添加好i2c设备信息,否则会出现调用了i2c_register_board_info()函

2016-04-30 22:13:14 7525

原创 关于i2c_smbus系列函数

内核版本:linux-4.5i2c_smbus系列函数有:s32 i2c_smbus_read_byte(const struct i2c_client *client);s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value);s32 i2c_smbus_read_byte_data(const struc

2016-03-24 12:41:03 20085 5

原创 mini2440 i2c设备支持

内核版本:linux-2.6.32.2 实验平台:mini24401. 添加主控设备支持i2c主控制器也是一个设备,只是在内核被虚拟成了一个平台设备,平台设备在内核中已经被定义了,定义在plat-s3c/dev-i2c0.c中:static struct resource s3c_i2c_resource[] = { [0] = { .start = S3C_PA_IIC,

2016-03-22 22:41:24 1464

原创 关于dev_set_drvdata()和dev_get_drvdata()

内核版本:Linux-4.5dev_set_drvdata()和dev_get_drvdata()代码如下:static inline void *dev_get_drvdata(const struct device *dev){ return dev->driver_data;}static inline void dev_set_drvdata(struct device

2016-03-18 15:08:46 7608

原创 rust

根据百度百科的解释:Rust是Mozilla开发的注重安全、性能和并发性的编程语言。rust官网:https://www.rust-lang.org/1. 安装从官网下载安装包,我这里下载的安装包名字是:rust-1.6.0-x86_64-unknown-linux-gnu.tar.gz然后解压,进入rust目录,根据README提示,执行sudo ./install.sh命令

2016-03-02 14:42:56 716

原创 mongodb

mongodb官网:https://www.mongodb.org1. 安装可以在官网下载安装包,下载完成之后,解压,然后将bin目录中的所有文件都拷贝到/usr/local/bin目录下。2. 启动mongodbmongodb默认将/data/db作为数据库的存储路径,所以首先需要创建这个目录:sudo mkdir -p /data/db然后使用sudo mo

2016-03-02 13:51:29 501

原创 libpq简单示例

libpq是什么呢?英文原话是:libpq is the C application programmer’s interface to PostgreSQL,原来是postgresql的c语言应用程序接口,postgresql的官网是:http://www.postgresql.org/。1. postgresql安装在ubuntu下,使用下面的命令(12.04)来安装:sudo

2016-03-01 14:36:55 4126

原创 vala

根据百度百科的解释,vala是一种新的、为GNOME开发者提供的具有现代化编程语言功能的一种编程语言。1. 安装在ubuntu下安装很简单,使用命令sudo apt-get install valac-0.16(12.04版本),测试valac编译器的版本号,可以输入valac --version命令。2. HelloWorld程序class Demo.HelloWorld :

2016-02-29 17:08:45 1773

原创 stm8 clock

stm8时钟源有4种:1. 16MHz的高速内部时钟源HSI2. 1到16MHz的高速外部时钟源HSE3. 32.768KHz的低速外部时钟源4. 38KHz的低速内部时钟源这4种时钟源都可以作为系统时钟,大家也可以用示波器量一下59引脚,看输出的的时钟频率是否正确,在量之前需要做如下设置:void main(void){ GPIO_Init(GPIOC, GPIO_P

2016-02-25 14:01:03 1449

原创 stm8 rtc时钟

stm8 rtc时钟可以使用内部低频时钟源,或者外部低速32768Hz时钟源,关于rtc部分代码如下:#include #include void init_rtc(void){ RTC_InitTypeDef RTC_InitStr; RTC_TimeTypeDef RTC_TimeStr; RTC_DateTypeDef RTC_DateStr;#if 1 /* LSI *

2016-02-17 17:21:59 11696 1

原创 关于c使用assert

assert宏原型定义在中,原型如下:void assert(scalar expression);其中作用是如果表达式为false,首先向stderr打印一条错误信息,然后使用abort()函数来终止程序的运行,例如:char *strcpy(char *dest, const char *src){ char *tmp = dest; assert(dest != NULL);

2016-01-29 13:54:46 641

原创 nmealib代码分析

从之前的samples/parse/main.c开始。以其中的一条GPGGA语句为例。nmeaINFO结构汇总的是gps数据信息,里面包括utc时间、定位状态、质量因子、经纬度、速度、方向等信息,之所以说是汇总,那是因为这里是对所有的nmea语句进行解析,然后将相应的数据赋值到该结构中,而不仅仅是其中的一条nmea语句,因为一条nmea语句不可能包括所有的gps信息。nme

2016-01-18 10:01:41 2693

原创 GPS nmealib

nmealib是基于nmea协议的一个开源库,不仅可以解析nmea语句,还可以产生nmea语句,测试代码如下:#include #include int main(void){ const char *buff[] = { "$GPGSV,2,2,07,29,28,104,36,31,56,324,12,32,38,293,15*4E\r\n", "$GPGLL,3110.856

2016-01-14 17:45:34 2032

转载 c printf

原文链接:http://www.cplusplus.com/reference/cstdio/printf/functionprintfint printf ( const char * format, ... );Print formatted data to stdoutWrites the C string pointed by f

2016-01-05 16:52:20 561

原创 object-c ubuntu下开发环境搭建

1. 安装gnustep和gobjcsudo apt-get install gnustep gnustep-devel gobjc2. 示例代码#import int main (int argc, const char * argv[]){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

2016-01-04 14:21:11 1219

J-Flash s3c2440的配置文件

用于J-Link J-Flash的2440配置文件,可用于mini2440 micro2440等开发板。

2014-07-05

led.tar.gz

sdcc使用Makefile的led工程实例

2014-01-13

sdcc-3.3.0-i386-unknown-linux2.5.tar.bz2

sdccc Linux x86二进制包。

2014-01-02

USB应用开发技术大全完整版PDF+随书源码

华清远见出版 真正完整版——全书与随书源码 本书系统地介绍了新型USB总线接口的协议、工作原理以及驱动程序设计,并以大量篇幅全面、详细地介绍了各种应用场合下的USB设计实例。 全书分为4篇,共24章:第1章~第8章为第1篇,介绍USB总线接口的协议、设备配置方式以及工作原理;第9章~第11章为第2篇,介绍USB驱动程序的设计,包括使用DriverStudio进行驱动程序设计和使用通用USB驱动程序;第12章~第22章为第3篇,通过11个例子详细介绍在不同的应用场合下USB接口设备的设计,包括了完整的电路图和程序;第4篇包括第23章和第24章,介绍Cypress的EZ-USB芯片的寄存器及其应用,以及USB控制函数,(这部分内容对于前面各个实例的学习和读者日后的设计工作都有很大的参考价值。 本书内容全面、结构紧凑、实例丰富。对于USB接口的初学者,通过学习本书可以快速入门。本书对具有一定开发经验的设计人员也有很好的参考价值。

2012-11-22

intel MCS51 MICROCONTROLLER FAMILY USER'S MANUAL

Intel 8051编程手册,对学习51的很有帮助

2012-11-17

u-boot nor flash驱动

u-boot的完整nor flash驱动,nor flash型号为sst39vf1601。

2012-06-01

编程修养-陈皓

讲述编程中需要注意的问题,如何提高自己的编程技术,自己编写的代码更稳定、易读、规范、易维护、专业。

2012-05-19

ARM汇编手册

arm汇编手册,对arm汇编学习很有帮组

2011-12-31

鸟哥的Linux私房菜 基础学习篇(第三版)

Linux入门书籍,注意是最新的第三版,高清的

2011-12-20

TDS1000B系列用户手册

TDS1000B系列 数字存储示波器 用户手册

2011-12-16

ARM Architecture Reference Manual

本手册介绍符合 ARMv4 和 ARMv5 标准的处理器的指令集、内存模型和程序员模型,这类处理器包括: * ARM7 * ARM9 * ARM10 * StrongARM * Intel XScale * Marvell Feroceon 产品系列 本手册还介绍最初的 ARMv6 体系结构版本。Thumb-2 或 TrustZone 安全扩展的内容不包含在本手册中。

2011-12-05

64-ia-32-architectures-software-developer

Intel处理器软件开发参考手册,对于理解Intel体系架构,以及汇编程序编程都有帮助

2011-12-02

人月神话20周年纪念版

人月神话20周年纪念版中文版pdf,软件开发人员必看书籍

2011-11-30

Linux汇编教程

Linux下AT&T语法汇编教程,讲AT&T语法汇编比较少,讲的好的就更少了

2011-11-29

AT&T语法汇编教程

Linux下AT&T语法汇编程序教程,将AT&T语法书比较少,好的书就更少了

2011-11-28

深入理解计算机系统

以程序员角度理解计算机系统知识,适用于那些想要写出更快、更可靠程序的程序员。

2011-11-28

QT编程艺术

QT编程艺术,个人觉得比较好的QT编程书籍

2011-11-20

ubox gps协议

本文档是ubox gps协议的详细介绍,在于对nmea语句的了解。

2016-01-18

hx8389b datasheet

hx8389b datasheet,方便做mipi开发的朋友们。

2015-01-05

mcgrady_tracy的留言板

发表于 2020-01-02 最后回复 2020-01-02

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