自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

li_qcxy的专栏

男儿立志出乡关,学不成名誓不还。埋骨何须桑梓地,人生何处不青山。

  • 博客(221)
  • 资源 (12)
  • 收藏
  • 关注

原创 DSP初探

之前一直使用STM32 现在做飞控 进行惯性导航姿态解算及补偿 发现STM32逐渐搞不定了,确定切换到DSP上。今天进行DSP的安装 详见https://blog.csdn.net/qq_29545231/article/details/77689062...

2018-03-30 00:10:54 521 1

转载 卡尔曼滤波算法及C语言实现

摘自:http://blog.csdn.net/sinat_20265495/article/details/51006311kalman filter最为核心的内容是体现它最优化估计和递归特点的5条公式。下面利用C语言编程实现Kalman Filter Algorithm,代码如下:[cpp] view plain copy#include "stdio.h"  #include "stdli...

2018-03-11 01:48:04 4150

转载 导航姿态解算——基础理论及推导

摘自:https://www.cnblogs.com/xuhongbin/p/6538345.html对于每个像我一样入坑四轴飞行器不久的新手来说,最初接触也颇为头疼的东西之一就是四轴的姿态解算。由于涉及较多的数学知识,很多人也是觉得十分头疼。所以,我在这里分享一些我学习过程中的笔记和经验,以便大家学习。两个坐标系: 首先,在一个姿态航向参考系统(简称AHRS)中,我们要定义两

2018-01-27 11:57:36 7686

转载 卡尔曼滤波简介+ 算法实现代码

摘自:http://www.cnblogs.com/jason-jiang/archive/2007/01/13/619643.html最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间

2017-05-01 21:55:59 771

转载 卡尔曼滤波简介+ 算法实现代码

摘自:http://www.cnblogs.com/jason-jiang/archive/2007/01/13/619643.html最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间

2017-04-15 22:14:16 694

转载 MATLAB入门教程

MATLAB入门教程 1.MATLAB的基本知识1-1、基本运算与函数   在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:  >> (5*2+1.3-0.8)*10/25  ans =4.2000  MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answe

2017-04-10 23:19:59 501

原创 uC/OS-ii内核理解(六)初始化TCB-OS_TCBInit函数

OS_TCBInit是创建任务函数OSTaskCreateExt时调用的一个函数。"OS_TCBInit"时与系统内核紧密相关的一个函数。

2017-02-18 14:34:48 1686

原创 uC/OS-ii内核源码理解(五)创建任务函数

创建任务函数有两个:OSTaskCreate和OSTaskCreateExt。OSTaskCreate有4个参数。OSTaskCreateExt在OSTaskCreate基础上增加了一些功能参数,有9个参数。其中4个参数和OSTaskCreate一样。这里就只讲解OSTaskCreateExt。

2017-02-17 22:53:24 1570

原创 uC/OS-ii内核理解(四)TCB任务控制块

TCB任务控制块:用来记录任务的堆栈指针、任务当前状态、任务的优先级等一些与任务属性相关的数据结构表。任务控制块相当于任务的 “身份证”,TCB记录着任务的重要信息。对于系统内核而言,各个任务就是通过任务控制块链接成一个表。因此,任务控制块在任务中占据重要的地位。

2017-02-16 18:11:10 3810

原创 uC/OS-ii系统内核理解(三)_初始化调用函数

OSInit所调用的函数必须类五个 非必须类通过选通开关选择。五个必须类:1.OS_InitMisc(必须类) 这个函数会被OSInit()调用来初始化各项变量。static  void  OS_InitMisc (void){#if OS_TIME_GET_SET_EN > 0u    OSTime                    = 0uL;

2017-02-16 08:20:10 897

原创 uC/OS-ii内核理解(二)

start_task任务描述start_task函数体主要做了三类事:1、BSP_Initializes:初始化应用底层一些带啊2、OSTick_Init:滴答时钟初始化,这个属于系统级。3、OSTaskCreate:创建子任务。在start_task函数体中创建子任务时uC/OS-ii官方提供实例代码的写法(在main函数中只创建一个TaskStart任务,再在TaskS

2017-02-15 23:56:16 467

原创 uc/os-ii内核源码理解(一)

使用操作系统,就要使用操作系统相关的资源(消息邮箱、信号量、互斥信号量、消息队列、事件等),需要大致了解系统内核原理。uC/OS-ii操作系统配置uC/OS-ii系统配置就是修改os_cfg.h文件,就是使能或失能某些功能,即系统裁剪(使能开关量)。系统的裁剪是通过预处理(配置了就编译,没配置就不编译)实现的,预处理直接影响程序编译的大小。2. 主函数描述mai

2017-02-15 23:15:16 2688

原创 配置main_cfg.h main.c文件

完成uC/OS-ii移植后在工程目录下建立一个app_cfg.h  main.c的文件。#include "sys.h"#include "includes.h"#include "stdio.h"#include "stm32f4xx_conf.h"#include "string.h"#include "delay.h"#include "uip.h"#

2017-02-10 23:36:39 1128

原创 uC/OS-II 移植 内核系统裁剪os_cfg.h

uC/OS-II

2017-02-08 01:32:35 2738

原创 uC/OS-II移植 详解 系统时钟部分

使用STM32F1的滴答时钟SysTick来配置作为操作系统的滴答时钟,SysTick属于内核(Cortex--M3)的一部分,所以初始化的时候调用CM3的源代码(SysTick_Config函数)。//初始化延迟函数//当使用ucos的时候,此函数会初始化ucos的时钟节拍//SYSTICK的时钟固定为HCLK时钟的1/8//SYSCLK:系统时钟void delay_ini

2017-02-07 20:43:00 2689

原创 UCOS-II移植 os_cpu.h文件详解

os_cpu.h文件位于工程uC/OS-II Ports结构下面,主要是系统底层相关的定义(堆栈、数据类型)、声明(函数)等。/************************ (C) COPYLEFT 2010 Leafgrass ************************** File Name : os_cpu_c.c * Author : Librae

2017-02-07 20:22:39 2220

原创 UCOS-II移植 配置文件os_cpu_c.c

os_cpu_c.c文件位于uC/OS-II Ports结构下面,主要是系统底层相关的C语言接口代码。该文件有很多HOOK(钩子)函数,主要用于系统 初始化、与任务相关等,如系统初始化OSInitHookBegin()、OSInitHookEnd();创建任务时OSTaskCreateHook等。自己移植时很多钩子函数不需要使用或不用去实现函数体里面的代码。几个重要的钩子函数功能在

2017-02-07 19:49:37 1114

原创 UCOS-II移植详解os_cpu_a.asm文件

os_cpu_a.asm文件注解;/*********************** (C) COPYRIGHT 2010 Libraworks *************************;* File Name : os_cpu_a.asm ;* Author : Librae ;* Version : V1.0;* Date : 06/10/2010;* Desc

2017-02-07 19:36:37 3721

原创 两字符串比较函数

写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1,char *p2);设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1!=s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14)。如果s1〉s2,则

2017-02-06 21:07:06 691

转载 转一篇比较详细介绍FatFs文件系统移植的文章

摘自:http://blog.163.com/zhshq_hg@126/blog/static/3278568820090710053782/ 补充一点,FatFs的作者写了两个,一个是正宗的FatFs,比较适合大的RAM的设备,另一个是FatFs/Tiny,比较适合小RAM的系统,比如单片机,FatFs/Tiny占用较小的RAM,代价是更慢的读写速度和更少的API函数。不过两个都支持FA

2017-02-06 16:11:01 4220

转载 教你如何找到导致程序跑飞的指令

教你如何找到导致程序跑飞的指令摘自:自blog.sina.com.cn/ifreecoding调试嵌入式程序时,你是否遇到过程序跑飞最终导致硬件异常中断的问题?遇到这种问题是否感觉比较难定位?不知道问题出在哪里,没有办法跟踪?尤其是当别人的程序踩了自己的内存,那就只能哭了今天在论坛上看有同学求助这种问题,正好我还算有一点办法,就和大家分享一下。解决办法非常非常简单,本文

2017-02-03 23:31:17 3782

转载 FATFS文件系统

FatFS 是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 的编写遵循ANSI C,因此不依赖于硬件平台。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM 等等,不需要做任何修改。它的官方网址http://elm-chan.org/fsw/ff/00index_e.html。

2017-02-03 14:53:57 306

转载 浮点数与字节数据的转换

摘自:http://blog.csdn.net/gshgsh1228/article/details/51221354#  做项目时,碰到一个问题:如何将32位的浮点数转化成4个字节数据进行传送?下面给出算法代码:(注:该算法来自网上,如侵权,请联系删除。)/* *function:ftoc(float a) *decription:  浮点数转

2017-01-16 12:17:37 769

转载 memset()函数及其作用

1. memset()函数原型是extern void *memset(void *buffer, int c, int count)        buffer:为指针或是数组,              c:是赋给buffer的值,       count:是buffer的长度.       这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0

2017-01-13 19:14:18 346

原创 STM32 驱动液晶LCD12864

#include "led.h"#undef APP_DE#include "hawk.h"液晶采用晶联讯电子的JLX19264G-260#define FEEDDOG() GPIOC->ODR^= GPIO_Pin_0//LCD IO初始化void LCD_Init(void){  GPIO_InitTypeDef  GPIO_InitSt

2017-01-13 18:56:13 12018 2

原创 STM32 SPI2读W25Q128驱动

//SPI1 读写一个字节//TxData:要写入的字节//返回值:读取到的字节u8 SPI2_ReadWriteByte(u8 TxData){    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){}//等待发送区空  SPI_I2S_SendData(SPI2, TxData); //通过外

2017-01-13 11:40:23 11136 1

转载 独立按键扫描程序的思考(整合两种算法)

摘自:http://blog.csdn.net/xuechaojie/article/details/6761772网上看到Etual 2008年总结的《新型按键扫描》的博文,很有感触。关于按键扫描的介绍和应用可以参照原文,本文只是我对程序的一些心得和体会。原文的链接找不到了,给个转载的:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn

2017-01-13 11:36:47 1243

转载 经典按键扫描算法理解

以下假设你懂C语言,因为纯粹的C语言描述,所以和处理器平台无关,你可以在MCS-51,AVR,PIC,甚至是ARM平台上面测试这个程序性能。 以下以AVR的MEGA8作为平台讲解,没有其它原因,因为我手头上只有AVR的板子而已没有51的。用51也可以,只是芯片初始化部分不同,还有寄存器名字不同而已。核心算法:unsigned char Trg;unsigned char Cont;

2017-01-13 10:44:03 4358

转载 STM32中assert_param的使用

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_

2017-01-13 09:00:12 364

转载 C语言中的 static变量、static函数

摘自:http://www.cnblogs.com/jeakon/archive/2012/10/06/2813685.html1. static 变量  静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称

2017-01-13 08:51:50 297

原创 基于STM32的DS18B20驱动

#include "ds18b20.h"#include "delay.h" short tmp_arg; //温度平滑滤波//复位DS18B20void DS18B20_Rst(void)   {                 DS18B20_IO_OUT(); //SET PG11 OUTPUT    DS18B20_DQ_OUT=0; //拉低DQ

2017-01-13 00:29:53 3011

原创 基于STM32的智能学习空调项目的定时器捕获驱动

/************************************************************************************************************************** 函数 : TIM3.C* 功能 : 红外信号捕获和发射* 参数 : 无* 返回 : 无* 依赖 : 底层读写函数

2017-01-13 00:14:03 357

原创 基于STM32的DS1302时钟芯片驱动

/************************************************************************************************************************** 函数 : DS1302.H* 功能 : DS1302头文件* 参数 : 无* 返回 : 无* 依赖 : 底层读写函数

2017-01-12 23:38:06 11173

原创 STM32中USART常用的发送函数

1.中断模式void USART2_IRQHandler(void)                 //串口2中断服务程序{ u8 u8Temp; /*****************发送中断************************************/ if (USART_GetITStatus(USART2, USART_IT_TXE) == SET)

2017-01-09 23:37:57 1666

原创 U盘存储问题

这两天在搞U盘存储 U盘存储模块使用的是外采的模块调试的时候发现 只能使用printf函数可以将数据打印到U盘中,如果使用USART发送字符串函数 发现最后一帧需要存储的数据自动丢失,另外在用这个U盘模块 建立文件名的时候,字符串写入数组然后在通过调用USART发送字符串,发现文件名不能建立,以上两个问题搞了2天 还不清楚问题的原因外采的模块风险太大 不能驾

2017-01-09 23:35:39 304 1

转载 printf 格式化输出符号详细说明

摘自:http://blog.csdn.net/xiexievv/article/details/6831194%a             浮点数、十六进制数字和p-记数法(C99)%A    浮点数、十六进制数字和p-记法(C99)%c     一个字符(char)%C           一个ISO宽字符%d    有符号十进制整数(int)(%ld、%L

2017-01-09 23:29:52 2198

原创 STM32 UART常用的3种中断接收

#include "sys.h"#include "usart.h"  #include "main.h"//如果使用ucos,则包括下面的头文件即可.#if SYSTEM_SUPPORT_OS#include "includes.h" //ucos 使用 #endif//注意,读取USARTx->SR能避免莫名其妙的错误   u8 US

2017-01-08 11:00:41 19924

原创 数据传输中常用的数据转换格式C语言实现

//16位整形数高低字节互换#define SWAP16(x) ((x & 0xff00) >> 8) | ((x & 0xff) //32位高字高字节在前,低字低字节在后s32 MODEBUS_32HHTO32LL(s32 In32) {u16 InL = SWAP16(In32&0xffff);u16 InH = SWAP16((In32>>16)&0x

2017-01-08 10:35:55 833

转载 C语言sprintf()函数:将格式化的数据写入字符串

摘自:http://c.biancheng.net/cpp/html/295.html头文件:#include sprintf()函数用于将格式化的数据写入字符串,其原型为:    int sprintf(char *str, char * format [, argument, ...]);【参数】str为要写入的字符串;format为格式化字符串,与printf()

2017-01-07 23:45:39 2469

原创 一种新型的数据平滑滤波算法

该算法已经在 2个项目上运行大半年了,根据目前客户反馈 数据平滑效果还是很不错的思路:将需要平滑的数据第一次的值放大N倍(最好是2的多少次方 需要保证放大后的数据不被溢出),加上最近的一个数据N 减去第N个数据中最早的那个数据,缩小到1/N,得到的值即为平滑之后的数据直接以DS18B20温度滤波数据为例:#include "ds18b20.h"#include

2017-01-07 00:45:16 2725

UCOS学习资料

UCOS 经典学习资料共3本

2017-02-17

Cadence学习

学习Cadence的电子书,用来绘制PCB板

2013-01-23

FPGA管脚分配

FPGA管脚分配,主要是FPGA中每个BANK的管脚支持的类型、时钟、复位及总线上信号的翻转信号的管脚分配时需要注意的要点,兼顾信号完整性的要求。

2013-01-15

Avalon从传输

Avalon从端口传输与流模式从端口传输部分

2013-01-10

Avalon总线规范

Avalon总线规范手册(中文版),是SOPC开发不可或缺的技术资料

2013-01-10

Avalon规范

ALTERA公司的Avalon总线规范参考手册,是开发FPGA必备的知识。

2013-01-10

FPGA通用分频器实现

FPGA中实现通用分频器的方法包含奇偶和小数分频

2012-12-20

Modelsim安装

Modelsim安装文档,windows 和linux下

2012-12-19

TCL文件分配器件与管脚

FPGA/CPLD管脚分配方法,便于提高开发进度

2012-12-17

FPGA数码管实验

基于FPGA的数码管实验及仿真的设置,是学习FPGA开发的基础

2012-11-28

FPGA开发试验

FPGA开发入门教程试验一 基于FPGA的点灯程序

2012-11-28

S3C2440中文手册

ARM9芯片手册 三星ARM9系列的芯片资料,是学习ARM9的第一手资料

2012-10-31

空空如也

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

TA关注的人

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