C
小白study
这个作者很懒,什么都没留下…
展开
-
STM32 上电后的启动过程
转载于https://blog.csdn.net/sinat_20265495/article/details/71918039微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信...转载 2019-04-15 20:47:14 · 4222 阅读 · 0 评论 -
offsetof与container_of宏
参考:https://www.cnblogs.com/woainilsr/p/3472409.htmlhttps://blog.csdn.net/caihaitao2000/article/details/80559967https://blog.csdn.net/s2603898260/article/details/793710241、前言 今天在看代码时,遇到offse...转载 2019-03-14 19:20:04 · 187 阅读 · 0 评论 -
为您的DC/DC 转换器选择最佳开关频率
转https://blog.csdn.net/xiahailong90/article/details/79086490 提高开关频率的好处很明显,但也有些缺点,设计人员应了解其中的得失利弊,才能选择最合适的开关频率来加以应用。这篇实用文章将逐一说明这些考虑因素。 开关频率很高的直流电源转换器(DC/DC) 正逐渐流行,因为它们可以藉由较小的输出电容和电感,进而...转载 2018-08-21 10:22:50 · 14230 阅读 · 2 评论 -
c\c++中单冒号(:)和双冒号(::)的用法
转http://blog.csdn.net/chw1989/article/details/7480375一.单冒号(:) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进转载 2017-02-09 13:26:15 · 31078 阅读 · 1 评论 -
怎样写参数个数可变的宏
转载于http://blog.csdn.net/aobai219/article/details/6092292#if #ifdef #if defined 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:#define pr_debug(fmt,arg...) /printk(KERN_DEBUG fmt,##arg)转载 2016-12-20 10:16:03 · 290 阅读 · 0 评论 -
预定义宏__LINE__解析
转载于http://blog.chinaunix.net/uid-24129635-id-113101.html在ProtothreadS的代码中遇到了一个特殊的符号__LINE__,搞了半天才明白是什么意思。在armccref.chm文件中的Predefined macros部分是这样描述的。 __LINE__numAlways set. It is转载 2016-12-20 09:57:26 · 575 阅读 · 0 评论 -
C语言宏定义,内置宏,__FILE__,__LINE__,## 用法
当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。下面列举一些成熟软件中常用得宏定义1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容 …#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigne转载 2016-12-19 22:08:46 · 1012 阅读 · 0 评论 -
步进电机5种驱动方法的利弊详细分析
转载于http://gongkong.ofweek.com/2015-10/ART-310002-11000-29011292.html 驱动器技术的发展,从原来国外一枝独秀到国内各种优秀技术涌现,可以看出国内技术的进步,同时也可以看出,每一次技术的革新都会带来几个以高端技术去引导市场的市场革命。 1、恒电压驱动 单电压驱动是指在电机绕组工作过程中,只用一个方向电压对绕转载 2016-12-26 18:06:45 · 2653 阅读 · 0 评论 -
详解C语言中const关键字的用法
http://www.jb51.net/article/70831.htm关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:1、预编译指令只是对值进转载 2016-12-18 16:05:25 · 345 阅读 · 0 评论 -
make 2>&1 | tee log.txt命令解析
make 2>&1 | tee log.txt命令解析1. make是什么?make是linux下一个非常强大的命令,简单点就是你要编译你的源代码就得靠他了。2. 2>&1是什么意思?0 stdin,1 stdout,2 stderr2>&1应该分成两个部分来看,一个是2>以及另一个是&1,其中2>就是将标准出错重定向到...转载 2019-03-20 09:58:18 · 432 阅读 · 0 评论 -
gcc警告选项
转载于https://blog.csdn.net/liuchao1986105/article/details/6887720 warning: "/*" within comment 举例:/************************************************/ /* /* save snmp entry data /* add by Tina Lee ...转载 2019-03-20 16:59:01 · 2893 阅读 · 0 评论 -
理解C语言中的关键字extern
转载于https://segmentfault.com/a/1190000008949574最近写了一段C程序,编译时出现变量重复定义的错误,自己查看没发现错误。使用Google发现,自己对extern理解不透彻,我搜到了这篇文章,写得不错。我拙劣的翻译了一下。(原文:http://www.geeksforgeeks.org/understanding-extern-keyword-in-c/...转载 2019-03-20 17:04:22 · 1129 阅读 · 0 评论 -
解决 source insight 代码无法关联显示的问题
source insight 工程使用出现关联问题,需重建工程菜单中选择Project -> Rebuild Project -> Re-Create the whole project from scratch原创 2019-04-04 09:59:43 · 15120 阅读 · 3 评论 -
单片机中的ROM,RAM和FLASH的作用
转载于https://blog.csdn.net/junzhu_beautifulpig/article/details/50771807http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.htmlROM,RAM和FLASH的区别,下面主要是具体到他们在单片机中的作用。一、ROM,RAM和FLASH在单片中的作用ROM——存储固化程序的(...转载 2019-03-19 11:58:15 · 19539 阅读 · 1 评论 -
蓝牙的状态详解
转载于https://blog.csdn.net/ferrycooper/article/details/513457221. 蓝牙设备的发现和同步简介:蓝牙设备在建立连接以前,通过在固定的一个频段内选择跳频频率或由被查询的设备地址决定,迅速交换握手信息时间和地址,快速取得设备的时间和频率同步。建立连接后,设备双方根据信道跳变序列改变频率,使跳频频率呈现随机特性。蓝牙系统定义了种工作状...转载 2019-03-25 19:46:55 · 5700 阅读 · 0 评论 -
蓝牙耳机打电话流程hci.log解析
转载于https://www.jianshu.com/p/05cf5a8e8453首先 通过工具打开btsnoop_hci.log文件具体工具可自行搜素我用的是这一款Frontline Protocol Analysis SystemFrontline Protocol Analysis System下载地址关于Headset信息操作部分可以直接看Hands-Free先简述一下...转载 2019-03-13 19:44:47 · 3358 阅读 · 1 评论 -
蓝牙连接的过程
转载于http://blog.sina.com.cn/s/blog_4b475f4b0101iwua.html想要了解蓝牙的连接过程,必须先了解3个概念:1,链路Link:物理链路,是基带协议中的概念,包括ACL链路和SCO链路两种,前者主要用于传递数据,后者传递语音。一对蓝牙设备,只存在一条ACL链路,允许存在3条SCO链路2,信道channel:这是L2DAP协议中的概念,是逻辑...转载 2019-03-25 17:18:00 · 6095 阅读 · 1 评论 -
source insight的自动补全功能问题
source insight里,目测要开启自动补全功能的设置有两个相关地方:1.Options -> Preferences ->Typoptions ->Typing -> Auto completion 一栏里的 Use automatic symbol completion window2.Options -> DocumentOptions ->...转载 2019-03-21 12:51:40 · 13352 阅读 · 3 评论 -
蓝牙物理链路类型:SCO和ACL链路与A2DP
转载于https://blog.csdn.net/wenzongliang/article/details/84689377蓝牙链路分两种同步链路(SCO)和异步链路(ACL)。A2DP(Advanced Audio Distribution Profile高级音频传输模型)是跑在ACL链路上去高品质音频协议。A2DP定义了ACL(Asynchronous Connectionless 异步...转载 2019-03-12 15:24:43 · 14880 阅读 · 1 评论 -
关于如何解决warning: assignment makes pointer from integer without a cast的警告
关于如何解决warning: assignment makes pointer from integer without a cast的警告原则:在源文件中没有发现函数的声明,可能是忘加头文件了。(未经声明的函数原型一律默认为返回int值)这句话很重要,例如,CSDN上有这样一个问题:http://topic.csdn.net/u/20080624/14/13953e05-da05-4...转载 2019-03-20 17:11:37 · 31782 阅读 · 0 评论 -
C Pointer-to-Function 与 C++ Pointer-to-MemberFunction 的区别
转载于http://www.cnblogs.com/qrlozte/p/4453786.html在看APUE Figure1.10的时候发现signal(SIGINT, sig_int)这里的sig_int直接用的函数名,但是看Thinking-in-C++ Vol.2的时候发现mem_fun(&Shape::draw)却对函数名进行了取地址操作,感觉有疑问就查了一下资料,下面的代码可以展转载 2016-12-18 15:43:06 · 432 阅读 · 0 评论 -
d-q坐标轴
交轴也叫q轴,直轴也叫d轴,他们实际上是坐标轴,而不是实际的轴在永磁同步电机控制中,为了能够得到类似直流电机的控制特性,在电机转子上建立了一个坐标系,此坐标系与转子同步转动,取转子磁场方向为d轴,垂直于转子磁场方向为q轴,将电机的数学模型转换到此坐标系下,可实现d轴和q轴的解耦,从而得到良好控制特性.原创 2016-11-26 16:17:08 · 15531 阅读 · 0 评论 -
dq坐标系
直流电机磁场下面是直流电机(可以看看自己的电动小马达内部)的磁场分布 我们可以看到,直流电机的磁场有励磁磁场和电枢磁场。其中上下两块磁体产生励磁磁场,方向从N->S。还有一个与励磁磁场垂直的电枢磁场。图中表明了方向(可以用右手定则来判断磁场方向,x是电流流入的方向,o是电流流出的方向,最后可以判断出磁场方向从左向右)。如果两片电枢的的轴线不是和励磁磁场垂直,那么励磁磁场和电枢磁场转载 2016-11-26 16:06:37 · 8010 阅读 · 0 评论 -
C++多维数组:存储方式、访问方式和作为函数参数
C++中数组可以嵌套,就是多维数组。多维数组存储与访问方式二维数组:一维数组可对应数学中的向量,而二维数组可对应矩阵,可用一个二维数组存储矩阵。图1 二维数组mat示意图二维数组的横向称为行,纵向称为列,上面这个数组为三行六列。定义二维数组的通用格式为: 《存储类型》 类型 数组名[常量行表达式] [常量列表达式];行与列用常量表达式表示。转载 2016-10-26 09:18:47 · 835 阅读 · 0 评论 -
库包直接运行错误缺少#include "core_cm3.h"
添加头文件路径其余不改动,工程运行起来,剩下的就是自己根据需求开发啦原创 2016-09-23 21:52:09 · 7664 阅读 · 0 评论 -
STM32串口一直进中断解决方法
今天在使用USART模块,遇到了一些问题并解决了,于是发贴共享。问题描述:在使用USART做串口通讯时,我只把接收中断打开,并设置抢占优先级为最低一个级别,而接收中断上一个优先级处理事情比较多,可能占用了2ms时间。当我使用9600波特率往下位机发送数据,速度非常快,就是一直按回车发!问题就出来,不到1分钟时间,通讯没有反应了。USART配置代码如下:[cp转载 2016-08-24 17:22:45 · 21183 阅读 · 2 评论 -
SVN服务器的本地搭建和使用
转载于http://www.cnblogs.com/mq0036/p/5250198.htmlSubversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.首先来下载和搭建SVN服务器.现在Subversion已经迁移到apache网站上了,下载地址:http://subversion.apache.org/packages.html这是二进制文件转载 2016-09-14 15:21:01 · 280 阅读 · 0 评论 -
stm32L151串口中断假如发送一个字节0x36,串口中断总是接收到0x00,连续点击几次发送,才能接收到0x36
参考链接http://blog.sina.com.cn/s/blog_88534dff0102vtep.html初始化后,用了自创的printf,结果串口助手软件显示不出字符来。但实际显示了接收的字符个数。用hex显示一看。原来多了一个0x00.然后只是初始化,不用printf。果然发送了一个0x00.网上查了一下,有这些说法:在ourdev上有原创 2016-08-24 09:57:21 · 6167 阅读 · 0 评论 -
stm8 RTC自动唤醒
转载于http://www.51hei.com/stm32/3518.htmlStm8l RTC 调试心得 经过两天的摸索,终于把stm8l05b13的RCT 自动唤醒调通了。分别有库和寄存器来实现。给大家分享一下。这里只说函数,原理自己看使用手册,废话不多说,程序呈上, RTC 初始化. void RTC_Config(uint16_t time) { RTC_D转载 2016-07-13 16:33:26 · 10740 阅读 · 0 评论 -
MATLAB FDATool IIR数字滤波器设计
MATLAB IIR数字滤波器设计 转载于http://blog.csdn.net/celerychen2009/article/details/6034864首先我们要明白相关的概念。数字滤波器设计采用角频率,如何与实际信号频率对应?角频率w,采样频率fs ,实际信号频率f的转换关系为: W = 2*pi* f / fs采样频率的角频率为 2 *pi.数转载 2016-05-25 04:27:28 · 2378 阅读 · 0 评论 -
stm32f103 RTC周期性待机唤醒(一)
转载于http://blog.csdn.net/u011732167/article/details/50958520今天终于发现问题出在哪里了,对待机唤醒的问题做一个总结(只针对我遇到的问题,其他部分网上都有,基于stm32f103)1、解决我遇到的问题 我的RTC初始化部分有个“保存在备份寄存器的RTC标志是否已经被配置过的判断”,如果已经配置过,则转载 2016-04-05 19:51:03 · 4163 阅读 · 1 评论 -
关于二维数组传参做形参
二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型。正确的是:void Func(int array[3][10]); void Func(int array[][10]);可以省略第一维的大小错误的是void Func(int arra转载 2016-11-17 09:24:11 · 1862 阅读 · 1 评论 -
C语言条件编译及编译预处理阶段
一、C语言由源代码生成的各阶段如下:C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制转载 2016-11-17 09:25:57 · 175 阅读 · 0 评论 -
MDK 编译错误总结
.\Output\Q-SYS.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced解决的代码如下: //不使用半主机模式#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB#pragm转载 2016-11-17 22:19:06 · 1733 阅读 · 0 评论 -
stm32单片机GPIO端口使用
STM32的每个IO口有7个寄存器控制(1个IO口应该就是一组),分别是两个32位的端口配置寄存器,CRL和CRH。两个32位的数据寄存器IDR和ODR(这上面四个是重点),一个32位置位复位寄存器,一个16位复位寄存器,一个锁存寄存器LCKR. ____________________________________________________________________转载 2016-08-07 21:26:20 · 3027 阅读 · 5 评论 -
typedef void (*pFunction)(void);
转载于http://blog.csdn.net/zyboy2000/article/details/4202349(*(void(*)())0) () 等同 ((void(*)())0) () ----原因函数是一种function-to-pointer的方式,&fun, fun, *fun ,**fun都是一样硬件地址跳到0处(*(void(*转载 2016-12-14 22:25:52 · 3080 阅读 · 0 评论 -
STM32学习笔记6(TIM模块定时器)
TIM模块定时器向上溢出 & 输出比较首先我们必须肯定ST公司的实力,也承认STM32的确是一款非常不错的Cortex-M3核单片机,但是,他的手册实在是让人觉得无法理解,尤其是其中的TIM模块,没有条理可言,看了两天几乎还是不知所云,让人很是郁闷。同时配套的固件库的说明也很难和手册上的寄存器对应起来,研究起来非常费劲!功能强大倒是真的,但至少也应该配套一个让人看的明白的说明吧~~两天转载 2016-12-03 17:36:04 · 3507 阅读 · 0 评论 -
TIM1的配置
首先有一点需要注意:FWLib固件库目前的最新版应该是V2.0.x,V1.0.x版本固件库中,TIM1模块被独立出来,调用的函数与其他定时器不同;在V2.0系列版本中,取消了TIM1.h,所有的TIM模块统一调用TIM.h即可。网络上流传的各种代码有许多是基于v1版本的固件库,在移植到v2版本固件库时,需要做些修改。本文的所有程序都是基于V2.0固件库。以下是定时器向上溢出示例代码:转载 2016-12-03 16:00:38 · 5264 阅读 · 0 评论 -
typedef函数指针用法
http://blog.csdn.net/qll125596718/article/details/68918811.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plain copychar (*pFun)(int); char glFun(int a){ return转载 2016-11-20 20:41:30 · 226 阅读 · 0 评论 -
C++项目中的extern "C" {}
转载于http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplus转载 2016-11-20 19:02:39 · 213 阅读 · 0 评论