- 博客(94)
- 收藏
- 关注
原创 strtok
原型:char *strtok(char *s, char *delim); 功能:分解字符串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL(‘\0’)来替换,直到找遍整个字符串。 返回指向下一个标记串。当没有标记串时则返回空字符NULL。 /* 注意返回
2017-06-20 16:36:01
542
转载 转载: 关于std: :nothrow
今天和同事review代码时,发现这样的一段代码:Manager * pManager = new Manager();if(NULL == pManager){ //记录日志 return false;}//然后,一个同事就说这样写欠妥,应该改为:Manager * pManager = NULL;try{ pManager = new Manager();
2017-06-06 19:07:55
777
原创 STM32F4 读写 AT24C512问题
移植正点原子对IC2,驱动程序读数据正确(使用写好的AT24C512测试,说明器件地址没有问题),但无法写入数据,驱动函数中,数据写入的用到的函数,数据读取都用的到,示波器检查IO配置正确(不正确的话,数据读取也不会出错),延时时间正确(排除时钟配置问题);问题陆陆续续扣了两天才找到原因,iic时序问题,iic停止函数中停止建立时间太短,官方数据手册最小时间为0.25us,原子哥的程序停止信号需要改
2017-02-22 19:15:00
6436
2
原创 DIY四轴笔记 串级PID理解
http://www.amobbs.com/thread-5554367-1-1.htmlvoid CTRL_1(float T) //x roll,y pitch,z yaw{ xyz_f_t EXP_LPF_TMP; /* 给期望(目标)角速度 */ EXP_LPF_TMP.x = MAX_CTRL_ASPEED *(ctrl_2.out.x/ANGLE_TO_MAX
2017-02-14 14:13:11
3023
原创 CAN 示波器分析数据帧
如图: 波特率500Kbps,方波不规整 加了120欧匹配。1 帧起始111101101101 ID111 RTR+IDE+R00111 DLC1101111101111101110111110101111101100111 数据1100111110110101111100011111010000101
2017-01-19 10:36:36
2386
转载 CAN总线 远程帧理解和应用
简单的说:如果A需要B节点向你发送数据!A可以用B节点的ID,发送一个remote frame,B收到A ID 的 Remote Frame 之后就发送数据给A!发送的数据就是数据帧!远程帧就像命令,命令相应的节点返回一个数据包.总结:由于CAN总线发送帧时,仲裁方法只依靠帧ID号,当有两个相同ID号的帧同时竞争总线时,总线就无法判别出让哪个设备先发送帧,于是就造成总线冲突。为了总线访问安全,每个发
2017-01-16 11:44:48
14556
3
原创 IAP升级 代码分析
/* 如何理解如下代码? *///跳转到应用程序段//appxaddr:用户代码起始地址.void iap_load_app(u32 appxaddr){ if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法. { jump2app=(iapfun)*(vu32*)(appxaddr+4);
2017-01-14 14:00:52
648
原创 STM32 FLASH操作
1.stm32f10xxx闪存编程参考手册写的很详细。2.主闪存编程:对主闪存编程每次可以写入16位。当FLASH_CR寄存器的PG位为’1’时,在一个闪存地址写入一个半字将启动一次编程;写入任何非半字的数据,FPEC都会产生总线错误。在编程过程中(BSY位为’1’),任何读写闪存的操作都会使CPU暂停,直到此次闪存编程结束。3.4. 写入flash函数代码正点原子例程。 用一个数组u16(半字)
2017-01-12 19:41:04
6734
原创 IAP & ICP
STM32 的中断向量表的设置主要是用在IAP 程序中,如果是普通的 flash 中只有一个程序,一般不需要设置这个。顾名思义,这个表存放的是中断服务函数的入口地址,当发生中断时,CPU来这个表中查询,以此获取中断函数的入口地址。STM32编程方式: ①在线编程(ICP,In-Circuit Programming): 通过JTAG/SWD协议或者系统加载程序(Bootloader
2017-01-10 16:21:32
735
原创 DIY四旋翼笔记二
距离记DIY笔记已经过去13天了,公司有事,学校有事两个实习,还有一个元旦假期。目前为止硬件是全通了,接下来就是软件和算法的学习了,算是开发平台搭建好了吧。先发张成果图,第一版的飞控是手工焊接的,问题是真的多,焊坏了元器件不说,主控需焊接的地方很多。上次笔记中,有两个等不亮的原因就是虚焊,后面电机也出现问题,一个正常转,一个有时转有时不转,两个不转。经过一下午的一步步分析查找,终于解决了问题,但是手
2017-01-03 19:26:23
521
转载 USB
http://blog.youkuaiyun.com/yxfabcdefg/article/details/52396126 USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low
2016-12-29 11:01:55
351
转载 stm32 设置systick中断抢先式优先级
http://blog.youkuaiyun.com/sunjiajiang/article/details/7741715
2016-12-29 09:53:19
6130
原创 GPIO定义可参考方法
//端口结构体typedef const struct { GPIO_TypeDef *port; //IO 时钟 uint32_t clk; //IO 端口 uint16_t pin; //IO 引脚 uint8_t state; //IO 输入输出状态 0)输出
2016-12-28 09:24:06
2185
转载 单片机IO口模拟SPI四种模式的程序
http://www.rationmcu.com/clang/495.htmlhttp://blog.youkuaiyun.com/zyboy2000/article/details/11861329
2016-12-23 14:22:34
6202
原创 DIY四旋翼笔记一
拿到元器件和板子,很开心,很激动。为了做这个毕设花了很多钱,也将花很多时间。算是给自己的大学生涯多添点精彩的回忆吧,好久没有焊元器件加上打样的PCB比较便宜质量很差,第一天晚上就焊坏了一个板子(MPU6050部分),两个MCU。再调LED灯的时候在用直流电源时没有把电压改过来,用9V的电压直接给飞机供电,结果GG了,好绝望啊。第三块板子了,这次十分小心,焊接不管美观,只要先能通在这个第一版上实习功能
2016-12-20 20:56:33
1151
转载 STM32的串口采用DMA方式接收数据测试
http://blog.youkuaiyun.com/jdh99/article/details/8444474
2016-12-17 12:38:38
1486
原创 I2C笔记
I2C总线中文讲解,详尽通俗(一些概念): http://wenku.baidu.com/link?url=n8aVmARYADcKwBAX5-3b9aml3nwPZh7k9R4FzREmGS8isp9UHCsQ47GiS4nZyerr4SwZLA9-4WGqWmuSEbDcx7yplDc39lGO5-8qBI9iPxqi2c 相关知识总结(转): http://blog.youkuaiyun.com/hy
2016-12-07 14:26:43
608
原创 定时器输入捕获
//初始化TIM5输入捕获参数 TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01 选择输入端 IC1映射到TI1上 TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获 TIM5_ICInitStructure
2016-12-05 21:07:41
4306
原创 定时器比较输出
// 通道对应的引脚模式要设置成:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 因为这个问题弄了三个小时 //初始化TIM3 设置为输出比较模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; // 1 TIM_OCInitStructure.T
2016-12-05 18:57:39
3764
1
转载 Linux 链接?软链接和硬链接区别?
http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html
2016-11-25 15:18:50
1222
转载 mysqldump及其命令用法
http://blog.youkuaiyun.com/yangyu112654374/article/details/4674478MySQL数据库的备份工具有很多,不过这里介绍的是一个小巧好用的mysqldump工具,位于数据库目录下bin/mysqldump.exe.这几天用phpMyAdmin备份数据库的时候出现乱码,反复在本地跟远程的Dreamhost空间上测试了数据库,但是还是导出数据库会出现乱码,应
2016-11-23 22:22:46
2432
原创 数据库编程练习
/*****************************************************Version: 1 Description: 1. 不可以手动insert数据 2. 不可以delete指定数据 3. 使用回掉函数********************************************
2016-11-23 20:04:37
453
原创 Linux常用命令实例详解(N - Z)
Nnetstat显示网络有关的信息,比如套接口使用情况、路由、接口、协议(TCP等)等查看TCP连接的命令是什么?正确答案: C 你的答案: A (错误)tcpdumptopnetstatifconfigOPQRSTtar解压缩命令语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项: -c
2016-11-23 11:38:40
906
转载 Linux 用户空间与内核空间数据交换方式
http://blog.sina.com.cn/s/blog_71fdf1f00102v5o8.html引言一般地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核和应用之间以及在应用与应用之间进行数据交换需要专门的机制来实现,众所周知,进程间通信(IPC)机制就是为实现应用与应用之间的数据交换而专门实现的,大部分读者可能对进程间通信比较了解,但对应用与内核之间的数据交换机
2016-11-22 20:57:25
3307
转载 C语言实现程序跳转到绝对地址0x100000处执行
嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做?网上看到有如下答案:((void()(void))0x100000)();经过在VC++6.0和Linux gcc4.4.3下测试,均不能通过编译。VC++6.0报错:error C2100: illegal indirectionGCC报错:error: void value not ignored as it ought to
2016-11-22 20:37:39
1496
原创 僵尸进程以及wait和waitpid函数
基本概念: 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进
2016-11-21 14:18:32
3079
原创 笔记 vfork,进程树,exec函数族,system函数
一. vfork区别:1. fork:子进程拷贝父进程的数据段 vfork:子进程与父进程共享数据段2. fork:父、子进程的执行次序不确定 vfork:子进程先运行,父进程后运行//分析下程序错误:#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pi
2016-11-21 13:09:34
580
转载 Linux ps命令详解与示例说明
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等。总之大部分信息都是可以通过执行该命令得到的。名称:ps 使用权限:所有使用者 使用方式:ps [options] [–help] 说明:显示瞬间进程
2016-11-21 12:48:03
2242
原创 关于Linux 中sleep()函数说明
相关函数:signal, alarm头文件:#include <unistd.h>定义函数:unsigned int sleep(unsigned int seconds);函数说明:sleep()会令目前的进程暂停, 直到达到参数seconds 所指定的时间, 或是被信号所中断.返回值:若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。linux下Sleep()函数:单位为
2016-11-15 19:15:41
24773
原创 Linux系统编程之错误处理:errno和perror,strerror
Linux系统下错误处理方法:使用errno变量。头文件: errno.h在系统出现错误时内核把错误写入到变量errno中。用户的应用程序可以从这个变量中获取错误的原因。注意在系统调用返回失败时,必须紧接着引用errno变量,以避免程序中的下一条系统调用时覆盖errno的值。errno的值可以格式化使出,使用错误处理函数 : perror strerror。perror和strerror函数
2016-11-09 16:44:29
6813
跟我一起写Makefile-陈皓
2016-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人