打印

TI MCU 达人盛宴,分享送豪礼!活动正在评选中,请耐心等待

[复制链接]
11322|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
欧阳小炫|  楼主 | 2011-7-7 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                             德州仪器TI MCU专区活动


                                                    之 分享您与TI MCU 之间的故事




你是否还记得,工作学习中遇到问题百思不得其解时的烦恼?

你是否还记得,经历无数次失败后终于解决问题的欣喜之情?

你是否对自己的心得、方法相当自信,想要向别人“炫耀”一番?

你是否为某样产品的功能而感慨,为某样精彩的设计而惊叹?

烦恼、欣喜、感慨、自信、疑惑、惊叹,来记录下你应用TI MCU工作和学习生活中的点滴心情、故事、心得和疑惑,和大

家一起分享吧。

交流经验,分享心情,大家共同进步的同时还有数码相机、派克金笔、精美背包等大奖等你拿。

马上开始行动,来参加分享活动吧。





一、主办方及奖品提供方

主办方:

TI


协办方:

21ic 电子网


奖品提供:

TI

二、参与资格


所有21ic正式注册会员


三、活动周期


活动公布日起,截至2011年8月7日结束。


四、奖品设置


1一等奖   1名



价值1300元的尼康(Nikon) COOLPIX S3100 便携数码相机一台







二等奖 5 名


由TI提供的价值300元的派克礼品笔一支








纪念奖 30名


由TI提供的价值150元的精美HIC商务背包一个







五、活动规则

1.参与者在TI MCU论坛(https://bbs.21ic.com/iclist-124.html 中发主题帖分享您在学习、工作和生活中关于应用TI MCU产品(MSP430

C2000 Stellaris
的各种心情故事、技巧心得或者未解的疑惑


2.每篇主题应不少于50,如果是技巧心得和疑惑的帖子,请详细写出获得心得的具体过程或者经过哪些步骤的试验仍然未成功。


3. 活动标题格式:为了能让评委及时关注到您的作品:请使用(TI MCU分享)+内容的格式作为帖子标题


例如:(TI MCU分享)说说我1年多来MSP430开发工具的使用心得


4.TI专家团将依据您的帖子的质量综合评定出优胜者,并与您共同探讨最佳的产品方案。


5. 每个ID不限制参与次数,但每个ID只有1次获奖机会。

如果出现多个ID 同一邮寄地址的,则视为无效。



本活动的宗旨是促进大家交流经验,互相借鉴工作学习中遇到的问题和心得,让大家能够共同进步。学习第一,奖励第二,请各位网友以平常心对待。并祝参加者

好运,知识奖品双丰收!


六、其他


此次评委介绍:TI 版主


获奖名单及领奖细节,活动结束后5天内TI MCU论坛置顶公布,请大家及时关注!


主办方拥有以上活动规则的最终解释权.
评分
参与人数 1威望 +1 收起 理由
亮剑擎天 + 1

相关帖子

沙发
老鱼探戈| | 2011-7-7 10:52 | 只看该作者
不坐沙发好多年了,今儿真高兴!
:D

使用特权

评论回复
板凳
Hakulamatata| | 2011-7-7 11:12 | 只看该作者
这个得支持。学习第一,奖品第二!

使用特权

评论回复
地板
reayfei| | 2011-7-8 15:57 | 只看该作者
MSP430“系”出名门,作为一种16位混合信号处理器,其独到之处在于它的超低功耗,又由于其集成了硬件乘法器,信号处理能力比起8位机大大增强,在低功耗市场应用越来越多。尤其在中国,由于有利尔达信息技术公司的全力推广,应用范围更是越来越广,大有统治低功耗市场的架式。跳舞的人多了,本人就耐不住寂寞也想热闹一把。近来做的一个项目用了MSP430,顺便记下、抄下了一些笔记,在此与大家分享一下吧,虽然都很低级,但对于入门来说,不能说没有益处。我一向认为入门最重要,入了门想深入就靠自己造化,但是入不了门或者入错门,纵然你有万千智商也无用武之地。

1.MSP430系列并不是都有FLL、FLL+的,象X14X系列就没有。学习时要对此有个认识,如果有FLL则内部频率就比较稳定可以使用。对于14X系列DCO频率是不稳定的,误差大,所以最好是使用外部晶体

2.MSP430的端口命名从P0---P6,但不是每个器件都有这几个端口,有的器件只有P0--P4,有的只有P1--P6(msp430f147等)。P0口没有功能选择寄存器,这点要注意。

3.timer_A 的捕获/比较引脚和P1,注意是P1,复用,而P1有一个P1SELx的功能选择寄存器,用来选择其作为I/O还是作为timer_A使用

4. XT1、XT2、DCO都可以作为ACLK、 MCLK、 SCLK的时钟源,具体用哪一个可以从寄存器设置。当然你可以ACLK用XT1,MCLK用XT2,SCLK用DCO产生;也可以ACLK、MCLK都用 XT2,或者都用DCO产生也未尝不可,想怎么设置时钟都行,想到那儿就可以做到那儿呵呵

关于DCO分频控制的介绍:运用MOD参数进行调制,调制的具体含义为在32个DCO周期中插入频率为DCO+1的时钟信号,而插入的个数由MOD参数决定,其余为DCO信号,举例如下:
      DCOCTL值为7AH时,DCO频率计算公式 (748×6+825×26)/32=811,748是DCO频率,825是DCO+1频率!!!!  

这个算法是我的理解不知对否,还请高手指点。

5.Timer A当用作连续增计数模式时每个CCRx都可以产生中断,CCR0也没有什么特殊之处,这种方法用来产生多个定时的场合。

6. 430的RAM是个有趣的地方,它的存储一般从0200开始,字节存储没有特别的地方,而字存储就只能从偶地址开始,这点要特别注意,当进行类型变换时必须防止重要数据被覆盖。

7.我的总体感觉是搞清楚了430的时钟系统及其捕获比较的应用,基本就算入门了,其他方面无非就是寄存器设置还有技巧性的应用了,这方面只要做项目就会找到好的办法

使用特权

评论回复
5
reayfei| | 2011-7-8 16:24 | 只看该作者
(TI MCU分享)说说我1年多来MSP430的使用心得
    感觉身边使用MSP430的客户特别多,网上资料多,参考书籍也很多,便开始评价MSP430系列MCU。
    看到网上开发工具很多,也有免费申请的,便申请了一套学习板。开始学习使用,下载示例代码,修改测试,享受开发的乐趣。
    从硬件结构上比较,51单片机和MSP430单片机都采用冯·诺依曼结构,而PIC单片机则采用哈佛结构。这两种结构各有优点,很难说出谁好谁坏。
    MSP430单片机同样也有MSPX1XX、MSPX2XX、MSPX3XX、MSPX4XX等系列,且每一系列可选型号也很多。从低功耗方面比较,51的可选型号几乎没有,PIC单片机是低功耗的最低功耗也达个位数uA级,但MSP430单片机则是超低功耗的,最低功耗可达到0.6uA。需要说明一点的是,在执行了休眠指令后,PIC单片机每次唤醒都需要复位一次,所以在超低功耗方面MSP430单片机表现要好点。
    当然MSP430单片机也有它的缺点,在我使用过程中,最大的不便就是位操作。

使用特权

评论回复
6
reayfei| | 2011-7-8 16:25 | 只看该作者
MSP430“系”出名门,作为一种16位混合信号处理器,其独到之处在于它的超低功耗,又由于其集成了硬件乘法器,信号处理能力比起8位机大大增强,在低功耗市场应用越来越多。尤其在中国,由于有利尔达信息技术公司的全力推广,应用范围更是越来越广,大有统治低功耗市场的架式。跳舞的人多了,本人就耐不住寂寞也想热闹一把。近来做的一个项目用了MSP430,顺便记下、抄下了一些笔记,在此与大家分享一下吧,虽然都很低级,但对于入门来说,不能说没有益处。我一向认为入门最重要,入了门想深入就靠自己造化,但是入不了门或者入错门,纵然你有万千智商也无用武之地。

1.MSP430系列并不是都有FLL、FLL+的,象X14X系列就没有。学习时要对此有个认识,如果有FLL则内部频率就比较稳定可以使用。对于14X系列DCO频率是不稳定的,误差大,所以最好是使用外部晶体

2.MSP430的端口命名从P0---P6,但不是每个器件都有这几个端口,有的器件只有P0--P4,有的只有P1--P6(msp430f147等)。P0口没有功能选择寄存器,这点要注意。

3.timer_A 的捕获/比较引脚和P1,注意是P1,复用,而P1有一个P1SELx的功能选择寄存器,用来选择其作为I/O还是作为timer_A使用

4. XT1、XT2、DCO都可以作为ACLK、 MCLK、 SCLK的时钟源,具体用哪一个可以从寄存器设置。当然你可以ACLK用XT1,MCLK用XT2,SCLK用DCO产生;也可以ACLK、MCLK都用 XT2,或者都用DCO产生也未尝不可,想怎么设置时钟都行,想到那儿就可以做到那儿呵呵

关于DCO分频控制的介绍:运用MOD参数进行调制,调制的具体含义为在32个DCO周期中插入频率为DCO+1的时钟信号,而插入的个数由MOD参数决定,其余为DCO信号,举例如下:
      DCOCTL值为7AH时,DCO频率计算公式 (748×6+825×26)/32=811,748是DCO频率,825是DCO+1频率!!!!  

这个算法是我的理解不知对否,还请高手指点。

5.Timer A当用作连续增计数模式时每个CCRx都可以产生中断,CCR0也没有什么特殊之处,这种方法用来产生多个定时的场合。

6. 430的RAM是个有趣的地方,它的存储一般从0200开始,字节存储没有特别的地方,而字存储就只能从偶地址开始,这点要特别注意,当进行类型变换时必须防止重要数据被覆盖。

7.我的总体感觉是搞清楚了430的时钟系统及其捕获比较的应用,基本就算入门了,其他方面无非就是寄存器设置还有技巧性的应用了,这方面只要做项目就会找到好的办法

使用特权

评论回复
7
sulxin| | 2011-7-11 13:47 | 只看该作者
支持

使用特权

评论回复
8
ankee| | 2011-7-11 13:54 | 只看该作者
哈哈,5l是不是应该单开新帖啊。。

使用特权

评论回复
9
即时生效| | 2011-7-11 17:07 | 只看该作者
好消息啊,顶起来

使用特权

评论回复
10
jameswangchip| | 2011-7-11 17:14 | 只看该作者
:)呵呵,支持一下!

使用特权

评论回复
11
xue112| | 2011-7-11 19:56 | 只看该作者
1# 欧阳小炫

使用特权

评论回复
12
xue112| | 2011-7-11 19:56 | 只看该作者
值得学习

使用特权

评论回复
13
ttlasong| | 2011-7-12 09:39 | 只看该作者
不错的活动

使用特权

评论回复
14
yqg80| | 2011-7-12 10:43 | 只看该作者
支持一下,这可以让更多的人学习怎么使用TI 的MCU

使用特权

评论回复
15
yhqhello| | 2011-7-12 17:56 | 只看该作者
学习啦

使用特权

评论回复
16
yhqhello| | 2011-7-12 17:57 | 只看该作者
顶顶

使用特权

评论回复
17
亮剑擎天| | 2011-7-14 10:52 | 只看该作者
TI MCU分享)+使用MSP430中的一些总结
1.系统时钟问题:
系统默认使用DCO,使用外部高速晶振XT2时必须自己开启XT2,并延时50us等待XT2起振,然后手工清除IFG1中的OFIFG位
!!!!一定要注意操作顺序:打开XT2->等待XT2稳定->切换系统时钟为XT2
若后面两步操作反了,在通常情况下不会出现问题,但是在电压不稳MCU频繁复位的情况下,非常容易造成MCU死掉,只能掉电后重新上电才能可靠复位。


2.早期版本的IAR开发环境
必须在Project->Option->C-Spy中选择对应器件的DDF文件,否则调试时无SFR窗口。

3.在写Flash期间,一定要关闭中断,此时CPU无法执行程序
4.调试的时候,不要选中"Release JTAG on Go"
5.在调试时,需要关闭看门狗,否则在打开看门狗的情况下,每当执行到断点,程序将会跳转到入口点从头执行。或者,暂停运行或停止到断点处时,当需要继续运行时,程序不再执行,而是需要使用“同步JTAG”才能继续运行(从头运行?)
6. IAR EWB标识符是区分大小写的
7. 结构变量内部存在对齐要求,通常按照2个字节的位置对齐,在"C/EC++ Compiler Reference Guide"的P93又如下例子:
struct {
short s; /* stored in byte 0 and 1 */
char c; /* stored in byte 2 */
long l; /* stored in byte 4, 5, 6, and 7 */
char c2; /* stored in byte 8 */
} s;
sizeof(s) 为10,而不是8

可以使用#pragma pack来改变这种对齐方式,但是会导致,这个结构只能按字节方式存取
8. MSP430 IAR C/EC++ Compiler支持两个运行库
1. IAR CLIB : 主要用于8或16为处理器,不完全兼容ISO/ANSI C,也不完全支持IEEE 754浮点数,不支持Embedded C++.
2. IAR CLIB : 支持ISO/ANSI C和Embedded C++.

9. cstartup的定制
(1). 在__low_level_init()中添加代码。该函数可以用来初始化I/O寄存器,并决定数据段是否在cstartup被初始化。文件430\src\lib\lowinit.c给出了框架,copy到项目目录中使用,文件中有一定的使用说明。
(2) 若__low_level_init()中添加代码不能满足要求,则把430\src\lib\cstartup.s43拷贝到自己的工作目录,修改所需代码;然后在将该文件添加到项目,在项目选型的XLINK的include页下选择Ignore CSTARTUP in library即可。

10. 使用#include "io430x14x.h"和#include "in430.h"来替代#include <msp430x14x.h>
可以使用定义的位变量

可以使用以下方式定义位变量,但是编译器最终还是转换为字节操作:
struct
{
unsigned char WDTIE : 1;
unsigned char OFIE : 1;
unsigned char : 2;
unsigned char NMIIE : 1;
unsigned char ACCVIE : 1;
unsigned char URXIE0 : 1;
unsigned char UTXIE0 : 1;
} IE1_bit;

不推荐使用bitfields,效率很低
11. 数组的索引值用int型效率最高,char型也好略低
数组类型:char型数组效率最高,
其他类型的数组在索引时,都采用了乘法

使用特权

评论回复
18
亮剑擎天| | 2011-7-14 10:57 | 只看该作者
(TI MCU)+使用MSP430注意的问题
1.#i nclude<>指要在编辑器设定目录下,#i nclude""指的是在当前工程目录下。
2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。
3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。
4.用IAR软件仿真时,可以加入变量,如果是查看I/O信息只需加入PXIN,PXOUT即可。
5.IAR在处理字符时,要注意,是字符处理结尾标志,他和其他编辑软件是不同的。比如我们长用字符处理回
自动在结尾处加,但IAR有些是不加的,这就要十分注意。
6.如果只用到LFX1的低速时钟,9600bit/s传输的话,接收会出现问题,原因是误差太大,可以设置到4800以下。
7.在写FLASH时要注意其工作频率在257K~476k之间,如果不是,则会出现错误。而且FLAGH只能写入0,这样就出现了
必须先擦除在写入的模式。
8.当IO口作为输入时,要根据平时的状态加电阻,平时为高时,加个上拉电阻,平时为低时加个下拉电阻以增加稳定性。
9.在FLASH写时一定要关外部中断。
10.MSP430一般是不要RC复位的,一般只要接个100K左右电阻就可以了,如果要加电容,它的大小要根据以下两个标准选择:1.下载程序不会出现下载不了
;2.程序上电会能稳定复位
11.用&表达式作为判断时,不要忘记加括号。
12.不要使用中断嵌套。

同时,为了使用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) 某些变量在中断程序和普通级别程序中都会被用到,所以必须加以保护。
         将变量声明为volatile类型,编译器优化时就不会移动它,对它的访问不会被延迟。
        为保证对volatile的变量不被打断,为此,可以在访问它的部分(即访问它的函数)前面加上__moniter的声明

使用特权

评论回复
19
ssdw| | 2011-7-17 21:09 | 只看该作者
顶起顶起

使用特权

评论回复
20
likun4979| | 2011-7-19 16:59 | 只看该作者
太强了,好,顶

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:一定是拉风兔

0

主题

103

帖子

1

粉丝