3663|8

114

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【MSP430 编译器使用经验】+我的PIC单片机调试心得,给苦苦寻觅的初学者一点启示 [复制链接]

本帖最后由 fjfhjmh 于 2014-7-18 16:56 编辑

   在单片机行当已经混迹多年了。说句实话,c开发环境都大同小异,只不过烧写和在线仿真大同小异。钻研了两天,收到了很多回应和启发。下面应soso的请求,把最近的调试心得和大家分享1、 先说说我要做的东西说来惭愧,这是临时的一个小任务,做一个采集和现实的部分,用两路ad采集模拟量,通过开关进行切换,简单的说就是开关打开,显示一路模拟量;开关关闭,显示另一路模拟量。主电路及其简单,我就直接说了,不附图了。电源通过一个 负载(滑动变阻器就可以)回到电源负极,在回路中接入一个电流传感器,实时采集电流信号(如果条件不允许,也可以用康铜丝或者一个大瓦数小数值的采样电阻采集电流信号。然后通过放大,隔离后送入单片机的AN0口。另外一路AN1可以用来做另外一个模拟量的采集,具体是什么待定,可以是温度,也可以是电压(时间短,我就做了1路,另一路有待高人们自己开发,哈哈)


       我遇到的问题对于我来说,pic是新事物,要从刚开始接触说起,时间不长,72小时。给我的感觉,这种单片机价格便宜,体积小,结构简单,编程用c,也比较和我的胃口。缺点(也就是苦苦煎熬着我的)就是仿真和烧录。和 其他单片机一样,每个厂商都推出了自己的c编译环境和开发环境,我们的pic使用ide和picc(不是保险公司哦)具体如图。   Picc是自己嵌入ide的进入界面,感觉无比亲切,和keil也差不多啊,于是照方抓药。   通过程想到,建立工程。选择你使用的芯片,选择编译器,如图,picc.exe的路径也可以看到哦!   新建工程,但是不导入c文件点菜单栏VIEW下的project,在source右键,加入c文件,如果没有c文件,就新建一个c文件,然后加入到source里面。导入之后就如图了。   下面就是激动人心的编译程序了,如果程序无误,应该出现这个: 接下来就可以进行烧写和仿真了   在这之前,需要进行一些必要的设置,按上图就可以,在Configue里面。然后,通过Programer和Debugger选择要设备,我用ICD2就选ICD2下面就是要进行连接,如果你想仿真,就把Release点成Debug,然后在debugger里面点connect,如果想烧程序,就在programmer里面点connect,成功是这个样子的   我做的是烧写,所以就点program
      在线仿真本人也在研究中,如果有高人能够指点就更好了,我就和大家分享到这儿。最后说说学到了什么吧,接触新实物,第一反应就是迷茫,无从下手,当然,这不可能做成事。要想到解决这一切的方法,首先就是找个明白人,如果身边真的没有这样的人,那么就去网络,我们的论坛就有很多人才。接着我想到了网络,去找需要的资源,datasheet,参考头文件,datasheet还有我们的电路图就可以进行粗略的程序设计,我指的是框图,流程这类的东西。写好程序以后一定要反复推敲,有可能一个不留神就可能导致程序失灵。这个我遇到过,一顿找,就是找不到问题所在,结果是一个小小的寄存器的某一位写错了。

最新回复

最好能是自己的“原创”  详情 回复 发表于 2014-7-21 08:58
 
点赞 关注

回复
举报

114

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
ARM和单片机的区别

1、软件方面
    这应该是最大的区别了。引入了操作系统。为什么引入操作系统?有什么好处嘛?
    1)方便。主要体现在后期的开发,即在操作系统上直接开发应用程序。不像单片机一样一切都要重新写。前期的操作系统移植工作,还是要专业人士来做。
    2)安全。这是LINUX的一个特点。LINUX的内核与用户空间的内存管理分开,不会因为用户的单个程序错误而引起系统死掉。这在单片机的软件开发中没见到过。
    3)高效。引入进程的管理调度系统,使系统运行更加高效。在传统的单片机开发中大多是基于中断的前后台技术,对多任务的管理有局限性。
    2、硬件方面
    现在的8位单片机技术硬件发展的也非常得快,也出现了许多功能非常强大的单片机。但是与32ARM相比还是有些差距吧。
    ARM芯片大多把SDRAM,LCD等控制器集成到片子当中。在8位机,大多要进行外扩。
    总的来说,单片机是个微控制器,ARM显然已经是个微处理器了。    引入嵌入式操作系统之后,可以实现许多单片机系统不能完成的功能。比如:嵌入式web服务器,java虚拟机等。也就是说,有很多免费的资源可以利用,上述两种服务就是例子。如果在单片机上开发这些功能可以想象其中的难度。[url=]回复5帖[/url] [url=]编辑[/url] [url=]举报[/url]

 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
同时,为了使用C语言来编写MSP430的高质量代码需要注意。   微处理器一般用于特定环境和特定用途,出于成本、功耗和体积的考虑,一般都要求尽量节省使用资源,并且,由于微处理器硬件一般都不支持有符号数、浮点数的运算,且运算位有限,因此,分配变量时必须仔细。另外要说明的是,速度和存储器的消耗经常是2个不可兼顾的目标,在多数情况下,编程者必须根据实际情况作出权衡和取舍。需要注意的事项如下:        1) 通常在满足运算需求的前提下,尽量选择为变量定义字节少的数据类型。比如最常用的int和char,int是16位的,char是8位的,如果没有必要,不要使用int,而且使用char也最好使用unsigned char。运行时,可以在变量窗口看到,使用类型为unsigned char的变量是16进制的格式,而使用int的是十进制格式,如果char没有定义为unsigned,会出现负号,如果没有必要的话,在430中是不需要负数的。      2) 尽量不用过长的数据类型,如long、long long和double         3) MSP430的C编译器不支持位寻址,所以运算中尽量减少位操作,对于只有“是”和“否”的变量,如果RAM容量允许,则可分配为unsigned char类型,可提高运算速度。如果分配为某字节的某个位,可以减少存储器的消耗,但是会降低运算速度         4) 避免使用浮点数,尽量使用定点数进行小数运算。如果必须使用浮点数,则尽量用32位的float,而不是64位的double         5) 尽量将变量分配为无符号数据类型         6) 对于指针变量,如果声明后其值不再改变,则声明为const类型,这样编译器编译时能更好的优化生成的代码         7) 尽可能的使用局部变量而非全局变量或者静态变量(static)。这样有利于编译器编译时更好的优化生成的代码        8) 避免对局部变量使用 &取地址符。因为这样会使编译器无法把此变量放在CPU的寄存器中,而是放在RAM中,从而失去了优化的机会        9) 仅在模块内使用的变量声明为static,有利于优化代码        10) 如果堆栈空间有限,尽量减少函数调用的层次和递归调用        11) 如果传送参数过多,可将参数组成一个数组或者结构体,然后用指针传递        12) 某些变量在中断程序和普通级别程序中都会被用到,所以必须加以保护。
 
 
 

回复

1万

帖子

16

TA的资源

版主

4
 
楼主后边430写得不错,但我有点不明白,这个活动跟PIC有什么关系呢?

点评

都是单片机啊!难道你只学习一种啊  详情 回复 发表于 2014-7-21 08:50
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

5
 
ddllxxrr 发表于 2014-7-19 09:57
楼主后边430写得不错,但我有点不明白,这个活动跟PIC有什么关系呢?

都是单片机啊!难道你只学习一种啊
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

6
 
注意活动要求


如何参与
1、以“【MSP430 编译器使用经验】+自拟”为标题,在MSP430版块单独发帖。
2、内容可以是CCS、EnergiaI或IAR等编译器的使用技巧、开发经历。
3、字数大于200,最好能图文并茂,格式不限。
4、所有内容须为原创,且在EEWORLD首发。转载或大段摘录,视为自动放弃获奖资格。

点评

我知道 ,,谢谢提醒  详情 回复 发表于 2014-7-21 09:21
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

7
 
最好能是自己的“原创”

点评

期待你的杰作  详情 回复 发表于 2014-7-21 09:20
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

8
 
蓝雨夜 发表于 2014-7-21 08:58
最好能是自己的“原创”

期待你的杰作
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

9
 

我知道 ,,谢谢提醒
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表