自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

转载 函数可重入性及编写规范

一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。2)可重入函数:不为连续的调用持有静态数据。不返回指向静态数据的指针;所有数据都由函数的调用者提供。使用本地数据,

2021-02-24 15:06:29 550

转载 浅显易懂的实时操作系统和分时操作系统原理和区别

原文链接:https://blog.csdn.net/u013752202/article/details/53649047对于实时操作系统(RTOS)和非实时操作系统,你能分别列举出来多少?实时操作系统:uCOS/VxWorks/RTLinux非实时操作系统:Linux/Windows/OSX我也只能列举出来这么多了。重点不在这里,重点在于他们之间的区别,详见下图:在上面的图中右边的任务优先级高于左边的任务,先看实时操作系统的,当优先级更高的任务2就绪的时候,即便任务1正在运行中

2020-07-03 14:29:19 2175

原创 C++知识:vector容器和for里面冒号

vector<fucLIB > funcxx; for (fucLIB fun : protocol.funcxx) { funcxx.push_back(fun); }vector:一个封装了动态大小数组的顺序容器for里面冒号:自动遍历容器里面的元素,从第一个到最后一个...

2020-03-10 15:30:17 2088

原创 S5PV210 按键驱动源码、应用程序解析(重点:中断、休眠唤醒、定时器)

按键驱动是最简单的功能,一旦使用linux来做就需要做很多功课。anyway,逻辑层还是前年不变的。先贴上驱动层代码。/* * linux/drivers/char/mini210_buttons.c * * This program is free software; you can redistribute it and/or modify * it under the t...

2019-09-27 15:46:37 595

转载 【适用于MCU】PID算法完全讲解

原文链接:https://blog.csdn.net/xiaobaixiongxiong/article/details/83792580总所周知,PID算法是个很经典的东西。而做自平衡小车,飞行器PID是一个必须翻过的坎。因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂。并举出PID的形象例子来帮助理解PID。一、首先介绍一下PID名字的由来:P:Proportion(...

2019-08-30 10:27:09 1363

原创 单片机滤波平滑累加处理简单用法 (使用定时器)

一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 一阶低通滤波的算法公式为:X(n) = get_ad(); Y(n) = αX(n) + (1-α)Y(n-1);   式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值...

2019-02-12 14:34:35 1210

转载 单片机中常用的滤波算法

单片机常用滤波算法 说明:假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时进行判断,如果本次值与上次值之差&lt;=A,则本次值有效;如果本次值与上次值之差&gt;A,则本次值无效,放弃本次值,用上次值代替本次值。...

2019-02-12 14:15:54 1294

原创 nordic 52832添加HID服务实现手机蓝牙自拍杆功能 附遇到的问题和解决方法

此教程基于SD 2.0原理:添加HID服务模拟外设滑鼠给手机发送音量加或减实现控制相机拍照,参照SDK工程->ble_app_hids_mouse需要添加的功能1.HID服务2.设备管理机制DM3.储存设备信息pstorage流程1.蓝牙初始化内添加device_manager_init(0);参数0代表保存以往连接设备,方便自动连接void devic...

2019-01-28 17:45:41 5307 9

原创 nordic 蓝牙无法系统配对问题的解决办法

on_ble_evt内注释掉BLE_GAP_EVT_SEC_PARAMS_REQUEST下的内容 case BLE_GAP_EVT_SEC_PARAMS_REQUEST:// // Pairing not supported// err_code = sd_ble_gap_sec_params_reply(m_conn_hand...

2019-01-28 17:08:55 2603

原创 【nordic 52832】编码器qdec原理+使用详解,还有实际遇到的问题和解决办法

编码器就是鼠标滚轮器件,工作的时候用到了。原理看懂了很简单,参考:https://blog.csdn.net/wang328452854/article/details/50579832长话短说物理现象:编码器内有2个监测点,相位相差90 ,滚轮拨动一格2个监测点分别检测到一个脉冲。程序实现:开定时器检测脉冲,处理脉冲,然后输出拨动了几格,一般官方会做成接口调用一下 就行。...

2019-01-28 16:21:19 3549 1

转载 【nordic 52832】 创建精准时间定时器

转自:https://blog.csdn.net/gyb510/article/details/51842834/nordic封装了定时器,操作起来没有STM32一样方便,本文教你如何做时间计时nrf52832 有五个定时器,timer0--timer4 。因为SDK已经使用了timer0,所以如果使用了SDK,就不能再使用timer0,只能使用timer1--timer4。开发环境:...

2019-01-27 13:57:52 2466

原创 linux驱动I2C/SPI——misc混杂设备版【普通驱动】

misc的方式写驱动相对简单,最底层的还是操作寄存器,和单片机同样的原理。代码直接贴出来,非常时候新手学习。#include &lt;linux/module.h&gt;#include &lt;linux/init.h&gt;#include &lt;linux/fs.h&gt;#include &lt;linux/miscdevice.h&gt;#include &lt;linu...

2018-09-10 17:28:34 831

原创 Linux串口编程(中断方式和select方式)

Linux下的串口编程,在嵌入式开发中占据着重要的地位,因为很多的嵌入式设备都是通过串口交换数据的。在没有操作系统的我们可以使用UART的中断来出来数据的接受和发送,而在Linux操作系统下,我们也可以使用软中断的方式来处理数据的接受和发送,这里主要使用的是信号SIGIO,也就是异步I/O。这里也可以使用select实现异步形式的通知。 这里可以参考《UNIX 环境高级编程》中的第14章 高级I...

2018-09-10 10:07:35 3646 3

原创 IAR 新版本打开老版本遇到的问题和解决方法 __nounwind和cannot open source file "core_cm3.h"

1.__nounwinddeclaration is incompatible with "__nounwind __interwork __softfp unsigned int __iar_builtin_STREXB(unsigned char, unsigned char volatile *)解决方法:右击工程进入options-&gt;C/C++Compiler-&gt;Pre...

2018-09-05 15:52:48 6875

原创 C语言#define简单使用

说下工作中大部分会用到的功能 1.define的“函数定义”,注意后面是没有分号的,网上有么牢牢资料都写的分号,copy过来还是要试一试啊兄弟们。#define max(x,y) (x)&amp;gt;(y)?(x):(y)2.多行定义函数,最明显的特征是换行加\,这样在头文件内也可以写函数了#define ASSERT(EX) ...

2018-08-28 16:46:49 4569

原创 UVC摄像头(3)应用层——webcam程序

完成UVC完成webcam.ko模块驱动后还需要一个程序带动驱动 需要的模组:webcam.kodwc_otg.ko平台:海思某芯片int main(int argc, char* argv[]){ struct uvc_device dev; system(&amp;quot;insmod wdt.ko default_margin=5&amp;quot;); system(&amp;quot;himm 0...

2018-08-25 10:33:04 7373 7

原创 UVC摄像头(2)驱动层——UVC描述符参数设置

UVC描述符参数设置static int (*composite_gadget_bind)(struct usb_composite_dev *cdev);我们绑定它的函数是这个webcam_bind(struct usb_composite_dev *cdev){ int ret; /* Allocate string descriptor numbers ....

2018-08-24 19:30:08 5720

原创 UVC摄像头(1)驱动层——精简结构框架

* “本文写的是USB摄像机linux驱动层简单介绍,linux的USB驱动非常复杂,坑很大,搞懂全部的七八成就是大神级别的人物了。我刚开始上手UVC驱动非常晕,超多结构体,还是指针形式,封装层数庞大,各种bind,以前linux驱动基本没碰过,只看过开发板手册里的LED驱动,现在直接做USB驱动,只能一步步来,不心急。”*我们现在要做的是驱动一个USB接口摄像机,所以写的是USB设备的代码...

2018-08-24 15:58:58 2634 1

原创 编译ARM平台ko驱动的通用Makefile写法

先安装好交叉编译器KERNELDIR = /home/fandy/SDK/linux-3.4.xx //内核路径PWD := $(shell pwd)CC = $(CROSS_COMPILE)gccobj-m := name.o //驱动名称modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean: rm -...

2018-08-20 18:49:03 4932

原创 linux mount 实现网络服务器文件挂载传输NFS方式

可以用于ARM板传输文件用实现需要安装NFS,请自行百度安装1.服务器/etc/export文件添加目录sudo vi /etc/export添加以下语句,注意需要带参数/home/exp/iwork *(rw,sync,no_root_squash)wq保存,然后重启NFS服务sudo /etc/init.d/nfs-kernel-server restart...

2018-08-10 18:14:56 1725

原创 中阶C语言 结构体(typedef用法、多维结构体、指针、内嵌函数、赋值)

111

2018-06-02 17:33:12 22641 22

原创 LINUX 系统基础操作命令、小技巧、设置等【慢慢更新】

更新源命令apt-get-update设置环境变量查看PATHecho $PATH 以添加mongodb server为列修改方法一export PATH=/usr/local/mongodb/bin:$PATH //配置完后可以通过echo $PATH查看配置结果。 生效方法:立即生效 有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的pat...

2018-05-28 15:21:44 147

转载 让vim使用起来像C编辑器【基础版】

当程序员在linux的Vi工具刚用起来时是不是感觉像记事本一样不顺手呢,别急,做下面2部即可。 打开配置文件vim ~/.vimrc若文件不存在则可以新建加入设置set tabstop=4set softtabstop=4set shiftwidth=4set autoindentset cindentset cinoptions={0,1s,t0,n-2,p2s,...

2018-05-08 11:27:32 182

转载 MySql入门基础笔记

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2018-05-04 10:52:38 104

原创 基于STM32F1的HMC5883L电子罗盘驱动——妈妈从此再也不担心我迷路了

HMC5883L是一种IIC通信的电子罗盘芯片,输出与北的角度偏差,数值是0-360度,靠西方向增长,可以理解为逆时针为正。配合GPS模块简直就是四轴飞行器的铁杆标配。驱动分为驱动IIC和转换角度两块。1.驱动IICvoid IIC_IO_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockC...

2018-03-27 14:34:31 16515 42

MP6507驱动

镜头变焦步进电机芯片MP6507驱动芯片简单代码实现,基于STM32F30x

2019-02-13

空空如也

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

TA关注的人

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