- 博客(37)
- 问答 (1)
- 收藏
- 关注
原创 记录一个空指针问题
后来经过排查是结构体变量中的 pled 没有分配空间,空指针引用导致获取到的 R G B 值一直不对。在使用结构体时,指针没有先分配空间,导致获取到的值一直不对。
2024-08-24 15:25:08
149
原创 c++中使用互斥锁mutex和条件变量实现同步
在C++中,条件变量()本身并不支持直接的超时功能。通常情况下,我们会结合中的时间点或持续时间来实现等待超时的效果。下面是一个示例,演示如何使用条件变量等待一段时间,并在超时时继续执行其他逻辑:// 模拟耗时的任务// 获取互斥锁// 修改共享条件// 通知条件变量// 创建工作线程// 等待数据准备好,但最多等待1秒钟})) {} else {// 等待工作线程结束return 0;
2024-08-02 15:45:45
570
转载 nor flash启动与nand flash启动的区别
1)接口区别:NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。通俗的说,就是光给地址不行,要先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND Flash.2)性能区别NOR的传
2016-12-08 17:56:00
620
转载 SRAM和SDRAM的区别
DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。SDRAM,同步的DRAM,即数据的读写需要时钟来同步。 DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟好像已经有1
2016-12-08 17:54:14
415
转载 冯.诺伊曼结构、哈佛结构、超级哈佛结构之间的异同
转载自 “拥抱星空” 的博客http://hi.baidu.com/showmewhat/blog/item/546e66f238e1ce58352accba.html冯.诺伊曼结构 1945年,冯.诺伊曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯.诺伊曼型结构”计算机。冯.诺伊曼结构的处理器使用同一个存储器,经由同
2016-12-08 17:52:27
950
原创 virtualbox 共享文件夹
使用 virtualbox 之前我是可以自动挂载共享文件夹的,但是这一次操作都正确,开机后却不能自动挂载。正确的解决办法是:在文件 /etc/rc.local 中(用root用户)追加如下命令sudo mount -t vboxsf share sf_share/电脑关机在开机就好使了(小编亲测)参考 http://blog.youkuaiyun.com/ga
2016-11-22 22:26:20
455
原创 ubuntu ftp 服务器配置
配置我在网上找了好多资料,真是费劲。后来 参考http://www.linuxidc.com/Linux/2015-01/111970.htm,达到了我的目的。我想要使用本地用户登录其次我想要指定 ftp 的目录。后来弄好之后在 linux 下测试成功,但是我在 windows 下使用 FILEZILA 连接服务器,总是连接不上。我在 windows ping 我的
2016-11-22 22:15:41
309
转载 KEIL MDK输出map文件分析
前面写了一篇文章对__main函数的执行过程做了一个粗略的跟踪描叙,对一个烧录了程序的STM32开发板从启动复位到进入用户main函数的过程有了一个大概的了解,但是有很多问题感觉还是模模糊糊,因此,今天又把KEIL MDK编译、链接后生成的map文件简单分析一下,加深对链接器、嵌入式系统可执行映像特点的了解。、 一、文件分析流程 1、第一部分:Section
2016-10-20 13:50:45
418
转载 HEX 文件与 BIN 文件格式的区别
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身 在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN 文件的时候,用户是一定需要指定地址信息的。
2016-10-20 13:39:18
1024
转载 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
2957
原创 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
497
原创 STM32 睡眠电流
最近在做的一个项目,用到了 GPS GSENSOR BLUETOOTH MODEM ,使用的单片机为 STM32F401 系列。GPS 和 BLUETOOTH 的电源可以关闭,gensor 用到了 IIC 对耗电几乎没有什么影响,MODEM 可以 Disable 但是仍然会影响电流。1、关闭 GPS 和 BLUETOOTH,断开 MODEM 的供电,将除过几个中断脚之外的 G
2016-06-27 13:52:32
2808
原创 WIN7 32位 安装RVDS3.1 问题
首先,安装的时候出错,不能正常安装。将 PC 的主题改为经典,然后安装可以正常进行。但是后来安装好之后,编译出现 can''t reverse space 的问题,在网上查了好货解决办法,试了大半天也没能解决。后来只好在 XP 下使用了,安装和编译都完全正常。
2016-06-22 18:06:40
1380
原创 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
1864
原创 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
2036
原创 STM32F4 discovery 开发板 UART1 问题
之前在调试 F4开发板时,UART2和UART6 都调通了,但是 UART1 怎样都调不通。后来联系 FAE ,将 C54去掉之后 UART1 可以正常通讯。
2016-06-13 18:03:32
1178
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
1442
转载 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
614
原创 小问题记录
遇到的问题记录:1、在头文件中定义了变量,想作为全局变量使用,然后我在几个文件中都包含了这个头文件,导致重复定义。正确的做法:1、在一个.c文件中定义,然后在用到的文件中声明。 2、在一个.c文件中定义,然后在它的头文件中声明,在用到的文件中包含相应的头文件。2、将 '0' 与 0 混淆,我定义了一个 IMEIBuf[20] = {0},然后在程序别处有改变 IMEIBuf,我根据 s
2016-03-07 09:14:49
311
原创 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
308
原创 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
536
原创 溢出 隐式转换 负数存储
下面是对《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
437
原创 c语言返回栈内存的问题
读到林锐的《c语言深度剖析》书中讲return时提到了这个问题,然后好好想了一下,写程序测试,有了进一步的理解。书中是这样说的:return 语句不可返回指向 “栈内存” 的 “指针” 因为该内存在函数体结束时被自动销毁。#includeint fun1(){int a;a = 2;return a;}char *func2(){
2015-11-25 14:21:21
585
原创 c语言有符号数取值范围
c语言中有符号数的取值范围问题:比如char类型 [-128,127],当为正数时 0111 1111(二进制)对应十进制 127,这没有任何问题。但是当为负数时 -128 是怎样得到的呢?最高位为1时候代表负数,我们通常会认为11111111的时候是最小值即-127(当表示原码的时候 最小值-127是对的)其实不是这样的,因为计算机是采用的补码形式,根据补码的规则11111111
2015-11-25 09:27:32
1072
转载 VS2012 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
原因与解决方案:纯c要求局部变量定义必须在函数或局部空间的开头,然后才能有其他语句。纯c确实对变量声明的位置有要求,c++却可以随用随定义的。 说明vs是严格执行了纯C的标准。变量任意定义是c99的标准
2015-11-25 09:20:22
2032
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
1601
原创 最近遇到的一个数组越界的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
652
原创 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
698
原创 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
427
转载 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
1742
转载 crc32校验算法
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。以下是CRC32的C语言实现,经过测试,能够正确运行:[cpp] view plaincopy
2015-11-18 19:16:45
2492
转载 c语言回调函数
本文转载自 http://www.cnblogs.com/2eggs/archive/2012/11/20/2779567.html1234567891011121314151617181920212
2015-11-18 19:10:02
581
原创 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
8645
原创 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
12521
1
原创 JLINK驱动刷新之WIN7
今天遇到一个问题,我在新的版本KEIL提示我更新JLINK驱动之后,出现JLINK驱动丢失现象,指示灯也不亮了。在网上查了许多资料尝试了好久,最后终于弄好了1、主要问题出现在我执行完各个操作之后,最后在PORT出现了 bossa program com 这样的一个驱动,直接导致我设置好 SAM-PROG2.4之后,write按钮一直显示为灰色。2、然后我禁止了系统自动UPDATE驱动,选择
2015-11-07 22:36:58
9797
空空如也
s3c2416 keil 开发的启动文件 头文件
2015-04-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人