lcofjp

个性签名:EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵

  • 2019-03-21
  • 回复了主题帖: 【读书月】读一本RT-Thread技术好书,写下你的读书笔记

    好活动{:1_103:}

  • 2019-03-19
  • 回复了主题帖: 请问两只引脚的晶振 两只引脚用来给它供电 那它产生的矩形波从哪儿输出

    可以这样考虑,晶振(晶体)不是产生波形,而是滤波。你所说的晶振是晶体,而真正的晶振确实需要供电,他们通常有四个引脚,两个电源,一个波形输出,一个使能引脚。

  • 2019-03-18
  • 回复了主题帖: Mbed Studio

    这个IDE有很多不尽人意的地方,我试用了一次就放弃,能配置的选项太少了,玩不起来。 我当初遇到和你类似的问题,是因为mbed-os没下载下来,我当时下了很多次都失败了,后来偶然一次成功了,下载了估计有一个小时候左右。但是既然你说mbed-os下载下来了,我就不清楚是啥问题了。 另外mbed提供的cli工具也是垃圾,各种报错,根本用不了。mbed搞了也好多年了吧,为啥没普及,我估计就是这个问题,工具太辣鸡。

  • 2019-03-16
  • 回复了主题帖: 求教一下MSP430的RAM分配问题。

    yg776 发表于 2019-3-16 15:45 谢谢你回答我的问题。我上面的问题的确问得很不好,没把问题写清楚。且变量的类型都没给出来。 1.这个算式 ...
    你的所谓“内存分配"问题比较笼统和难以回答。这个是编程常规问题,与编译器也并无大的关联。 单片机的存储空间大概就分为两类,ROM(FLASH)类和RAM类,FRAM虽然比较特殊根据配置既可做ROM也可以做RAM,但是不影响讨论。 ROM用来存放指令、常量数据、变量的初始化值等内容。 RAM用来存放变量,函数调用时寄存器内容的临时保存。变量还分为全局变量和静态变量,一直存在于RAM中,自动变量在函数调用时分配,函数结束后就释放了。手动申请内存malloc一般在小容量单片机中很少用。 现在你的问题是,貌似ROM和RAM有点分不清,在单片机领域一般内存就是指RAM,但是你的描述,应该是ROM不够的问题。另外
    recommend moving them to RAM during run time or not using as there are processing/power intensive.
    这句提示,其实跟内存够不够并无关系,这个只是低功耗一些建议。 所以你要清晰脑海里的内存是指什么,通常C语言的语句和字面量是占用ROM的,变量占用RAM,但是变量的非0初始化值也会存放在ROM中。函数的嵌套调用会消耗RAM,但是函数调用消耗内存的问题在编译时一般检测不出来,在程序运行的时候才能出现。调用库函数肯定会占用ROM,同时浮点数的操作,对于单片机来讲,会比占用存储空间,因此小容量单片机尽量不要有浮点数的运算和(尤其)打印(printf类函数的%f格式符)。

  • 回复了主题帖: 求教一下MSP430的RAM分配问题。

    浮点数运算比较消耗cpu和内存 所以说,能用整数的尽量别用小数,如果要求精度不高,可以把小数部分作为整数的末几位。 另外就是考虑优化你的公式了,因为我对你的需求不了解,所以也不能假定太多, 第一个疑问,明显是整数的数值为啥显式加.0作为浮点数? 第二个,4.096*10000明显是个整数,为啥不直接写40960 第三个,get是什么类型?如果是浮点数,后面的数值为啥显式写成浮点数;如果是整数,那么为什么不写成统一的整数运算? 我觉得get = get/65535.0*4.096*10000;经过优化后至少可以写成这样: get = get * (40960L) / 65535;

  • 2019-03-14
  • 回复了主题帖: C/C++回忆录

    shinykongcn 发表于 2019-3-14 18:02 队长流弊,我坐地铁的时候手机都摆不开,只能塞个耳机这样子~~
    好几千块钱的耳机,戴着也舒服

  • 2019-03-13
  • 回复了主题帖: C/C++回忆录

    freebsder 发表于 2019-3-13 18:49 居然坐地铁有座看书。。。
    哪有座,都是站着看

  • 回复了主题帖: C/C++回忆录

    辛昕 发表于 2019-3-13 13:48 此处召唤@Eric-Wang 赠送队长芯比1000
    感谢教主的赏赐{:1_117:}

  • 回复了主题帖: C/C++回忆录

    懒猫爱飞 发表于 2019-3-13 13:21 1)  代码规范性可以看《代码大全》,这本书比较厚,睡觉前翻翻,睡觉时可以当枕头 2) 《C专家编程》可能 ...
    是的,经典书要常翻

  • 回复了主题帖: 可能是最简单便宜的DIY温湿度计

    {:1_103:}厉害厉害

  • 发表了主题帖: C/C++回忆录

    本帖最后由 lcofjp 于 2019-3-13 01:37 编辑 这两天坐地铁之余,翻看了《C陷阱与缺陷》这本书,这本书的作者Andrew Koenig是个大神,他和他夫人合著的另一本书《C++沉思录》都是C/C++书籍中的经典之作。这两本书都是出版于这两种语言的标准化之前,《C陷阱与缺陷》出版于1989年,C的第一版标准是C90,《C++沉思录》出版于1997年,C++的第一版标准是C++98。虽然看上去有些古老,但是却值得一看,有些经典的东西不过时。 《C陷阱与缺陷》这本书并没有其名字那么可怕,因为本书写作之时C标准还是没有敲定,因此编译器实现的一些的差异可能会导致可移植性问题或者怪异的行为。如今来看,标准C经过将近30年的考验,早已成熟稳重。虽然C90之后又发布了C99,C11,C18等版本,但是基本变化不大,新加的功能也是可有可无,尤其对于嵌入式开发来说。因此目前C语言是一个相当稳定的语言,编译器之间的差异非常小,可移植性很高,所以书中提到的一些问题自然而然就不存在了。另外,如果在编写C代码时保持良好的风格习惯,那么就可以避免绝大多数的常见问题。 大学开设的第一门程序设计就是C++,这门课无疑是难度系数最高的,因为C++是最难掌握的编程语言之一(虽然能与其难度相当的语言我还没接触过,但是不排除有的可能性),虽然在当年看似“大神”的我,其实是菜鸟一个。究其原因就是书读得少也不够深,同时缺少项目实战,学编程必须要理论与实践相结合才能掌握的牢固。所以,毕业后工作难找的唯一原因就是水平太菜,当时有一家单位来招人,我就去面试,面试官翻开笔记本给我指了一道题,当时就给我整懵逼了: 解释: a +++++ b的含义 卧槽,我哪见过这么奇葩的代码,完全无法解释,只能pass了,然后出了另外两道题目回答的也是马马虎虎,这面试也就不了了之了,但是这道题却是令我终身难忘。这就是《C陷阱与缺陷》的课后练习1-4,看到此处,十多年前的场景立马浮现在脑海中,差一点就老泪纵横了。其实这题不难,书中1.3节 词法分析中的“贪心法”讲的就是这个问题,编译器在词法分析过程中,会尽可能多的给一个符号匹配字符,比如一个+号后面跟一个+号,就会组成++操作符,因此上式最终解析出的结果就是((a++)++)+b。因为a++返回的结果不是一个左值,再对其进行++操作将会产生语法错误,最终结果就是编译报错。 那么问题来了,这样的题目作为面试题有意义吗?我觉得没啥意义,这种问题对于实际编码来说,并没有什么指导意义。 一说到这种没意义的题目,还会联想起一堆,比如 i = i++ + ++i; 最终i=? 再比如: func(++i, ++i);函数调用,函数中形参的值是多少? 类似的这种题目肯定是出现在书本上的,因为我根本没这种智商想出这样的题目,这些题目钻了C标准未定义的空子,你怎么解释都能说得通,C中并没有规定求值的时间点,下面一题考察函数调用约定(函数传参顺序,参数栈维护等),我觉得也是超纲。 怪异的文件保存失败 几年前,我成为了一名js程序员,不过项目中还有部分代码是C/C++写的,其中一部分就是文件的读写。后来有用户向我们反馈,说保存文件失败!经过反复测试,最终得出结论:在安装金山毒霸的电脑上,在文件保存到桌面的时候,会保存失败。后来发现问题是这样的,由于保存的文件的时候,是分多次打开文件并向其中追加数据,但是金山毒霸这个老鬼,在文件写入一次后便被他占用了,估计是他扫描杀毒去了,然后文件打不开结果导致保存失败。不过怪异的是,只有保存在桌面的时候才会出现这个问题。后来保存改成一次性写入就彻底解决了这个问题。 转行js后,有时切换到C就会犯一些很低级的错误,比如字符串的写法,在js(以及其他很多编程语言,字符串可以用单引号或者双引号包裹,因为这些语言没有字符与字符串的区分,字符就是长度为1的字符串)中,习惯用单引号来写字符串常量,比如'hello world', 为啥单引号是习惯性用法,因为在按引号键的时候不必同时按住shift键。写c代码时习惯性的就把字符串写成单引号的了,结果就是一堆语法错误。那么,在C中, 关于字符常量,比如说'a', 他是什么类型? 字符常量,那肯定是字符型(char)了,例如 char c = 'a'; 肯定没毛病。那么如果字符常量是一个汉字呢,比如'啊',此时用char肯定是表示不了,赋值给char类型后,是被截断的数据。也就是说,字符常量不是字符型,而是整型(这一点可以通过sizeof 'a'的大小来验证),因此字符常量可以像整型一样参与各种运算。 说到类型,我之前有一个疑惑,就是浮点数的输入输出,调用scanf和printf时,格式符存在一定的差异,float和double在输入的时候,格式符分别时%f和%lf,在输出时却是统一的%f,这是为什么呢?原因在于, 函数参数的类型提升,大家对于类型提升应该都有一定的了解,就是,两个类型的操作数进行运算,如果这两个类型不同,则运算之前要把较低的类型提升位较高的类型,且要保证至少提升至整型。具体规则内容有点多,可以搜索相关内容,或者参考K&R的《C程序设计语言》2.7类型转换。为啥函数参数也存在类型提升呢?如果函数在原型中指定了具体的类型,是不存在类型提升问题的,声明的是什么类型就是什么类型。但是printf这样的函数,是一个不定参数函数,不仅参数类型不定,参数个数也是未知,因此在给这样的函数传参的时候,为了方便处理,小于整型的类型一律提升到整型,浮点型一律提升到double,具体的类型,需要在函数内部根据格式符再进行取舍,因此传入printf函数的浮点数只有double一种,因此不必再区分lf还是f。 在此向大家推荐两本书,K&R的《C程序设计语言》,这是C语言的权威指南。还有《C专家编程》,是进阶必备。 此内容由EEWORLD论坛网友lcofjp原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-03-11
  • 加入了学习《正点原子手把手教你学STM32-M7》,观看 STM32最小系统设计

  • 加入了学习《正点原子手把手教你学STM32-M7》,观看 STM32学习方法+视频说明

  • 2019-03-10
  • 回复了主题帖: 对上次做的430电子时钟做个了结

    babyrabbit1234 发表于 2019-3-10 12:19 额 好吧 多谢解答了 我是参考一个430教材写的 感觉这个单片机的资料和51 32比少好多…… 我再想想办法吧~
    看教材不靠谱的,资料多少也没有意义,如果你懂单片机,那么一本参考手册的pdf就足够。http://www.ti.com/product/MSP430F449  推荐你看看他的参考手册。

  • 回复了主题帖: 对上次做的430电子时钟做个了结

    babyrabbit1234 发表于 2019-3-10 09:57 哦哦 好的 我知道了~ 我还想问一下 为什么我在main函数的while循环里只写了一句LCD1M=0xff来显示一个完 ...
    我很多年不接触单片机了,程序怎么写我早就记不得了,帮不了你了,如果你真的有兴趣,就好好看看它的user's guide以及官网提供的例程,官网的例程简洁实用。

  • 2019-03-09
  • 上传了资料: A Tour of C++ 2nd Edition

  • 上传了资料: Manning.Functional.Programming.in.C++.2018.11.pdf

  • 上传了资料: C++性能优化指南.pdf

  • 上传了资料: 计算机是怎样跑起来的.pdf

  • 2019-03-08
  • 上传了资料: 代码之髓--编程语言核心概念-[(日)西尾泰和著]

最近访客

< 1/6 >

统计信息

已有4564人来访过

  • 芯币:16503
  • 好友:82
  • 主题:105
  • 回复:5365
  • 课时:--
  • 资源:205

留言

你需要登录后才可以留言 登录 | 注册


九月初十 2015-2-7
大哥你好,在论坛上看到了你的帖子,能不能加个好友,想请教你关于msp430f5529的一些东西。能留个QQ吗
徐立栋 2014-9-29
大哥你好,在吗?
hwh123 2012-12-3
可以加下你q吗?想找你请教些问题
查看全部