自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

涛2014/8/20的专栏

记录自己解决过的一些问题,一点点积累

  • 博客(34)
  • 问答 (1)
  • 收藏
  • 关注

转载 nor flash启动与nand flash启动的区别

1)接口区别:NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。通俗的说,就是光给地址不行,要先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND Flash.2)性能区别NOR的传

2016-12-08 17:56:00 584

转载 SRAM和SDRAM的区别

DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。SDRAM,同步的DRAM,即数据的读写需要时钟来同步。 DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟好像已经有1

2016-12-08 17:54:14 379

转载 冯.诺伊曼结构、哈佛结构、超级哈佛结构之间的异同

转载自 “拥抱星空” 的博客http://hi.baidu.com/showmewhat/blog/item/546e66f238e1ce58352accba.html冯.诺伊曼结构    1945年,冯.诺伊曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯.诺伊曼型结构”计算机。冯.诺伊曼结构的处理器使用同一个存储器,经由同

2016-12-08 17:52:27 869

原创 virtualbox 共享文件夹

使用 virtualbox 之前我是可以自动挂载共享文件夹的,但是这一次操作都正确,开机后却不能自动挂载。正确的解决办法是:在文件 /etc/rc.local 中(用root用户)追加如下命令sudo mount -t vboxsf share sf_share/电脑关机在开机就好使了(小编亲测)参考 http://blog.csdn.net/ga

2016-11-22 22:26:20 421

原创 ubuntu ftp 服务器配置

配置我在网上找了好多资料,真是费劲。后来 参考http://www.linuxidc.com/Linux/2015-01/111970.htm,达到了我的目的。我想要使用本地用户登录其次我想要指定 ftp 的目录。后来弄好之后在 linux 下测试成功,但是我在 windows 下使用 FILEZILA  连接服务器,总是连接不上。我在 windows ping 我的

2016-11-22 22:15:41 281

转载 KEIL MDK输出map文件分析

前面写了一篇文章对__main函数的执行过程做了一个粗略的跟踪描叙,对一个烧录了程序的STM32开发板从启动复位到进入用户main函数的过程有了一个大概的了解,但是有很多问题感觉还是模模糊糊,因此,今天又把KEIL MDK编译、链接后生成的map文件简单分析一下,加深对链接器、嵌入式系统可执行映像特点的了解。、 一、文件分析流程 1、第一部分:Section

2016-10-20 13:50:45 350

转载 HEX 文件与 BIN 文件格式的区别

HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身         在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN         文件的时候,用户是一定需要指定地址信息的。              

2016-10-20 13:39:18 853

转载 STM32 编译后生成文件探索

一般在stm32工程使用keil编译之后,keil的build output栏目下面会出现如图所示的输出信息,其中会显示code 大小 RO-data、RW-data 、ZI-data的大小。一般别人不怎么会在意这个的大小。出于好奇我百度了下网上关于这些段的介绍,援引自http://mcuos.com/thread-2843-1-1.html,上面的介绍是这样说的:ARM程序的组成此处

2016-10-20 13:33:47 2841

原创 c++ 和 c 中函数和变量的互用

一、在 c 中使用 c++ 函数:1、在 c++ 文件中声明  example:  extern 'C' int func(int s);2、在 c 文件中声明和使用 extern int func(int a);func(4);二、在 c++ 中使用 c 中函数和变量1、包含头文件的方式extern "C" {#include"head.h" };2、

2016-08-05 18:27:16 441

原创 STM32 睡眠电流

最近在做的一个项目,用到了 GPS  GSENSOR  BLUETOOTH  MODEM ,使用的单片机为 STM32F401 系列。GPS 和 BLUETOOTH 的电源可以关闭,gensor  用到了 IIC 对耗电几乎没有什么影响,MODEM 可以 Disable 但是仍然会影响电流。1、关闭 GPS  和  BLUETOOTH,断开 MODEM 的供电,将除过几个中断脚之外的  G

2016-06-27 13:52:32 2704

原创 WIN7 32位 安装RVDS3.1 问题

首先,安装的时候出错,不能正常安装。将 PC 的主题改为经典,然后安装可以正常进行。但是后来安装好之后,编译出现  can''t reverse space 的问题,在网上查了好货解决办法,试了大半天也没能解决。后来只好在 XP 下使用了,安装和编译都完全正常。

2016-06-22 18:06:40 1324

原创 stm32 IWDG

在使用  f0_nucleo 开发板时,reload  我用了   hiwdg.Init.Reload = 5000 ,本来是想让 500ms 如果没有喂狗就复位的,但是我发现很快就会复位。 hiwdg.Instance = IWDG;  hiwdg.Init.Prescaler = IWDG_PRESCALER_8;  hiwdg.Init.Window = IWDG_WIN

2016-06-13 18:26:21 1740

原创 STM32F4 ADC DMA 问题

在F4 DISCOVERY 开发板上使用 ADC 三个通道,并且使用 DMA。遇到两个问题:1、使用多通道时模式选择  hadc1.Init.ScanConvMode = ENABLE; //This mode is used to scan a group of analog channels. ,如果选择错误读到的都是第一个通道的值。2、刚开始我数组使用了 uint32_t

2016-06-13 18:18:24 1962

原创 STM32F4 discovery 开发板 UART1 问题

之前在调试 F4开发板时,UART2和UART6 都调通了,但是 UART1 怎样都调不通。后来联系 FAE ,将 C54去掉之后 UART1 可以正常通讯。

2016-06-13 18:03:32 1105 2

原创 BCD 码与 unsigned char 转换

/**  * @brief  Convert a 2 digit decimal to BCD format.  * @param  Value: Byte to be converted  * @retval Converted byte  */uint8_t RTC_ByteToBcd2(uint8_t Value){  uint32_t bcdhigh = 0;

2016-06-13 17:53:06 1323

转载 htonl ntohl htons ntohs 函数实现

typedef unsigned short int uint16;typedef unsigned long int uint32; // 短整型大小端互换#define BigLittleSwap16(A)  ((((uint16)(A) & 0xff00) >> 8) | \                            (((ui

2016-03-07 09:20:46 568

原创 小问题记录

遇到的问题记录:1、在头文件中定义了变量,想作为全局变量使用,然后我在几个文件中都包含了这个头文件,导致重复定义。正确的做法:1、在一个.c文件中定义,然后在用到的文件中声明。 2、在一个.c文件中定义,然后在它的头文件中声明,在用到的文件中包含相应的头文件。2、将 '0' 与 0 混淆,我定义了一个 IMEIBuf[20] = {0},然后在程序别处有改变 IMEIBuf,我根据 s

2016-03-07 09:14:49 281

原创 c语言内存分配

《c语言深度剖析》中关于内存管理部分的测试,可以很好的加深理解。#include#include#includeint main(){char *pstr = NULL;char *pstr2 = NULL;pstr = (char *)malloc(36);strcpy(pstr,"hello world");free(pstr);

2015-11-27 18:02:54 285

原创 c语言递归函数

近期再次阅读《c语言深度剖析》对递归有了更好的的理解。#include#includevoid func(int a){if(a>0)func(a/2);printf("%d \r\n",a);}int my_strlen(char *str){assert(NULL != str);if('\0' == *str)

2015-11-27 17:58:45 498

原创 溢出 隐式转换 负数存储

下面是对《c语言深度剖析》中的几段代码的测试,可以帮助加深理解:#include#includeint main(){/* 255  溢出char a[1000];int i,len;len = 0;for(i = 0;i{a[i] = -1-i;}len = strlen(a);*/// -0 补码 0000 0

2015-11-27 17:50:50 385

原创 c语言返回栈内存的问题

读到林锐的《c语言深度剖析》书中讲return时提到了这个问题,然后好好想了一下,写程序测试,有了进一步的理解。书中是这样说的:return 语句不可返回指向 “栈内存” 的 “指针” 因为该内存在函数体结束时被自动销毁。#includeint fun1(){int a;a = 2;return a;}char *func2(){

2015-11-25 14:21:21 534

原创 c语言有符号数取值范围

c语言中有符号数的取值范围问题:比如char类型 [-128,127],当为正数时 0111 1111(二进制)对应十进制 127,这没有任何问题。但是当为负数时 -128 是怎样得到的呢?最高位为1时候代表负数,我们通常会认为11111111的时候是最小值即-127(当表示原码的时候 最小值-127是对的)其实不是这样的,因为计算机是采用的补码形式,根据补码的规则11111111

2015-11-25 09:27:32 1008

转载 VS2012 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

原因与解决方案:纯c要求局部变量定义必须在函数或局部空间的开头,然后才能有其他语句。纯c确实对变量声明的位置有要求,c++却可以随用随定义的。 说明vs是严格执行了纯C的标准。变量任意定义是c99的标准

2015-11-25 09:20:22 1935 1

原创 VS2012使用strcpy_s的问题

1>g:\c_test\time\singlepointer\singlepointer\test.c(15): error C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_W

2015-11-25 09:03:54 1550

原创 最近遇到的一个数组越界的BUG

关于二维数组的问题,之前在我代码中有如下这样一段,(//CMD:DS:1234567890abcd:1234567890:5:0016:44:BLE A IM 20:73:6a:18:ec:e8,11:22:33:44:55:66)当解析到 e8,11 时会导致 dest 越界,但是由于我每次 cmd_line ->Cmdpos += 3;,这样刚好解析到的MAC也是对的,所以当时没有发现。c

2015-11-20 18:50:37 607

原创 strlen的使用问题

最近在做项目时,用strlen测试的字符串长度传递到另外一个函数中,结果由于含有'0'导致出错。应该是遇到了我下面的第二种情况,测试代码如下:#include#includeint main(){int len1,len2,len3;char *str = "hello\0world";char str2[] = {'h','e','l','l','o',0,'

2015-11-19 19:02:29 584

原创 c语言关于时间的两个函数

根据日期转换为星期几,以及由天数得到月份,代码如下:#includeint datetoweek(int yr, int mn,int day){int i;int days=0;int s;int week;int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};if((0==yr%4 && 0!=yr

2015-11-19 18:53:46 390

原创 C语言_DATE_ _TIME_ _LINE_ _FILE_的使用

代码如下:

2015-11-19 14:01:15 450

转载 c语言va_list snprintf 的实现

首先列出我自己实际遇到的一个例子:在串口向 PC 发送数据时为了实现可变参数的功能,这是工程中遇到的一段代码:int SerialDbgPrintf(uint8 type, char *fmt, ...){if(type == ATCMD){int cnt;char string[MAX_PRINTF_STR_SIZE] = {'\0'};va_list a

2015-11-19 09:05:33 1674

转载 crc32校验算法

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。以下是CRC32的C语言实现,经过测试,能够正确运行:[cpp] view plaincopy

2015-11-18 19:16:45 2411

转载 c语言回调函数

本文转载自 http://www.cnblogs.com/2eggs/archive/2012/11/20/2779567.html1234567891011121314151617181920212

2015-11-18 19:10:02 549

原创 c语言字符串转换为16进制和10进制数字

字符串转换为16进制或者10进制:1、使用自己编写的函数。2、使用库函数。将字符串转换为16进制两种方法的代码:#include#include#include int HexStr2Int(char *buf) {int result = 0;int tmp;int len,i;len = strlen(buf);printf("len

2015-11-18 19:06:04 8513

原创 KEIL编译后Program Size: Code=1032 RO-data=336 RW-data=12 ZI-data=1836 的含义

Code: 程序所占用的FLASH大小,存储在FLASH.RO-data: Read-only-data,程序定义的常量,存储在FLASH中。RW-data:Read-write-data,已经被初始化的变量,存储在SRAM中。ZI-data:Zero-Init-data,未被初始化的变量,存储在SRAM中。

2015-11-14 10:07:21 12371 1

原创 JLINK驱动刷新之WIN7

今天遇到一个问题,我在新的版本KEIL提示我更新JLINK驱动之后,出现JLINK驱动丢失现象,指示灯也不亮了。在网上查了许多资料尝试了好久,最后终于弄好了1、主要问题出现在我执行完各个操作之后,最后在PORT出现了 bossa program com 这样的一个驱动,直接导致我设置好 SAM-PROG2.4之后,write按钮一直显示为灰色。2、然后我禁止了系统自动UPDATE驱动,选择

2015-11-07 22:36:58 9621 2

空空如也

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

TA关注的人

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