C语言
荒原狼的技术博客
这个作者很懒,什么都没留下…
展开
-
Segger embedded studio 采用这个暗色主题是挺不错的。
Segger embedded studio 采用这个暗色主题 CrossWorks Dark 是挺不错的。 原创 2022-11-03 00:41:13 · 494 阅读 · 1 评论 -
Keil MDK 提示奇怪的错误的原因及解决办法
*** Error: cannot write Scatter-file '.\Objects\ISP_308*.sct'error - cannot create command input file '.\Objects\ISP_309*.lnp'原创 2022-06-24 11:09:36 · 1932 阅读 · 0 评论 -
Keil MDK 打开某个工程没反应的原因
Keil MDK 打开某个工程没有响应的解决办法原创 2022-06-24 10:56:02 · 1627 阅读 · 0 评论 -
STM32 全局变量不加 volatile 而被优化的问题
在一个项目中,首先在一个 A文件中定义了一些全局变量,并赋初值,并在 B文件里引用,并重新在一个函数中重新赋值。在main函数的起始处中调用该赋值函数,发现并没有被重新赋值。一般情况下,在中断中使用的全局变量必须要 volatile 修饰,或者一些 IO 口变量必须要 volatile 修饰,但此次发现,即使非中断的情况下,全局变量最好也要用 volatile 修饰,不然就会出现预想不到的错误,这类错误还很难调试,很难排查。...原创 2022-05-26 16:28:28 · 1145 阅读 · 0 评论 -
Keil C51 中 volatile 与 xdata 关键词先后顺序的问题
xdata volatile uint8_t temp = 0; //不报错volatile xdata uint8_t temp = 0; //报错xdata 表示把变量声明在外部 RAM 中;volatile 表示不优化改变量,每次写入时,都是真实地写入;当我们定义一个在外部 RAM中的变量,同时又要求不优化该变量时,就需要联合这两个关键词。...原创 2022-04-25 21:09:17 · 764 阅读 · 0 评论 -
C语言允许的最长数组
刚才,在windows 10 上,使用 codeblock 开发了一个程序,一运行就闪退,后来定位到是数组太大的缘故,我定义了一个200万字节长度的 char 型数组。然后把数组字节的大小 200万 改为 100万 程序就正常了。也就是在windows上,定义超过200万字节长度的数组可能会有问题,目前没有经过系统的测试,得出的结论自然也就是实验的直接结果。...原创 2021-12-28 15:25:11 · 3169 阅读 · 0 评论 -
将8051单片机长数组存储在Flash中
玩过 STM32 位MCU的都知道,想把一个长数组存储在大容量的Flash当中,用 const 修饰数组即可。那么在51单片机中,如何做到这一点呢,经过在某一型号单片机下,工具是 Keil,测试用 const 并不行,而必须采用传统的 code 关键词修饰数组,数组才会被存放到 Flash 当中。...原创 2021-08-08 15:21:54 · 1575 阅读 · 0 评论 -
error: l6016u: symbol table missing/corrupt in object/library dataconv.lib
刚才用keil 5 编译代码,弹出一个错误:error: l6016u: symbol table missing/corrupt in object/library dataconv.lib找到官网的错误提示,但是毫无办法解决它。后来想到,刚才我用工具把批量把 GB2312 转成了 UTF8 ,是不是这里出了问题呢?我转码的时候,把一些库文件也拖进去了。所以觉得可能是这里出了问题,然后再重新转一次,这次转的时候,只转码 "*.c" 和 "*.h"文件,然后再编译,没有错误。果然是转码的时候,把库文件也原创 2021-03-18 20:21:28 · 428 阅读 · 0 评论 -
codeblock C++ Debug模式下能正常运行,Release 下无法正常运行
今天调试一个读取文本文件的程序,用的是codeblock C++ GCC,在 Debug模式下能正常运行,Release 下无法正常运行。不正常的表现,就是程序执行了一半,就直接退出了,输出的文本只有大约一半的样子(不是刚好一半)。有空再细细研究。...原创 2020-07-09 19:17:27 · 769 阅读 · 0 评论 -
获取字符串的头部
/*get the num after the "=" of the string一行字符串由等号“=”连接前后两部分,本函数提取“=”前面的部分,支持过滤字符串前后的空白字符,字符串中间不能有空格字符串只能有大小写字母和数字以及下划线组成,不能有其他字符,可以以数字开头。其实该函数不仅限于“=”连接的前后字符串,也可以是其他任何不在“字母、数字、下划线”范围的字符作为连接前后字符串的字符...原创 2020-03-13 01:19:54 · 483 阅读 · 0 评论 -
提取“=”后面的数字字符串,并转换为 64位整型数值
/*get the num after the "=" of the string一行字符串有等号“=”连接前后两部分,等号后面为十进制数字,本函数是获取等号后面的“数字”字符串,并把它转换为十进制数值返回。*/int64_t getEndNum(char *str_data){ int64_t ret = 0; uint16_t i = 0; uint8_t ...原创 2020-03-13 00:35:20 · 860 阅读 · 0 评论 -
Eclipse Platform :No such file or directory
问题的解决步骤:1、右击工程——> C/C++ Build2、选中Builder Settings 栏目,下面一行有个 Build directory:XXXX,发现这个目录是错误的,手动修改好再编译就没有问题了。...原创 2019-08-08 13:02:56 · 3487 阅读 · 0 评论 -
Nios II 无法使用printf()函数的解决办法
突然 Nios II无法使用 printf();函数进行格式化输出了,费尽心思地查找问题,最终定位到了一个函数名字上 void write(U16 data);只要把该函数名字改一改,比如改成 void Write_2Byte(U16 data);函数printf();立马就能用了,我觉得可能跟 write 这个单词有关,可能是保留字,但为什么不提示错误呢,不纠结那么多了,把所有的 w原创 2017-06-06 17:41:38 · 2754 阅读 · 0 评论 -
函数返回全局变量的好处
最近看程序,发现很多程序员喜欢通过函数操作全局变量,通过函数返回全局变量。逛了一下论坛,发现通过函数操作全局变量有很多好处。首先在一个文件中用 static 定义全局变量,如:static int flag;//只能在本文件中使用,避免了别的文件误用本变量/*获得全局变量的值*/int get_flag(void){ return flag;}/*设置全局原创 2015-11-13 11:59:12 · 2391 阅读 · 0 评论 -
C语言中对结构体赋初值
C 语言中结构体的赋初值,可以对指定元素赋值,不必按照顺序,前提是通过 "." 来操作,在 c-free 5.0版本下验证通过。#include typedef struct{ int a; char b; float c;}structTest1;int main(int argc, char *argv[]){ structTest1 st1 = { .b = 'A',//原创 2015-11-05 13:07:27 · 16229 阅读 · 1 评论