社区导航

 

搜索
查看: 24531|回复: 73

[讨论] 【C2000 LaunchPad】让LED闪起来

  [复制链接]

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

发表于 2012-11-27 17:07 | 显示全部楼层 |阅读模式
先给个PDF文件:

让LED闪起来.pdf (524.38 KB, 下载次数: 1829)

点评

楼主,你好,我在ram里调试NOKIA的液晶,不能成功,但是在flash里调试却可以,是怎么回事呢?还有我改成release之后,还是debug模式,程序烧不到flash里去,是怎么回事啊  详情 回复 发表于 2012-12-5 11:29


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-11-27 17:15 | 显示全部楼层

让LED闪起来

LED闪起来
这次讨论一下TI的编程特点,特别是文件组织结构。
这是建立在前一个项目《打造自己的C2000 LaunchPad项目》基础上的。首先
使用延时函数来控制切换IO口状态,使LED闪光,然后使用定时器控制它的闪光。
一、部分文件介绍
1F2802x_Device.h
此文件是常用的宏的定义,里面定义了数据类型,包含了必要的头文件,还
有所使用器件的定义:
#define   TARGET   1
// User To Select Target Device:
……
#define   DSP28_28027PT   TARGET
……
如果使用其它器件,可以在这里更改。
2F 2802x_Examples.h
它是为了设置PLL,系统时钟,而定义的常数。
#define DSP28_DIVSEL   2 // Enable /2 for SYSCLKOUT
//#define DSP28_DIVSEL   3 // Enable /1 for SYSCLKOUT
#define DSP28_PLLCR 12 // Uncomment for 60 MHz devices [60 MHz = (10MHz * 12)/2]
……
此文件中的约定值使时钟设置为60MHz
3F2802x_CodeStartBranch.asm
一看名字就知道,是控制启动时转向的。它关闭看门狗并转向程序入口。
4F2802x_DefaultIsr.c
它是缺省的中断程序,包括了所有中断程序的框架,如:
d1.jpg
当进入中断时,将什么也不做,并停留在那里。用户编程时,可以重新定义中断
函数并转向它,如:
   PieVectTable.XINT1 = &UserInttruptFunction
也可以修改这个文件中的函数。
5F2802x_GlobalVariableDefs.c
这个文件是是定义F28027内部寄存器的,与CMD文件一道分配寄存器地址,并定
义寄存器文件结构变量。如
d2.jpg
从这里可以看到,要定义一个寄存器是很麻烦的,如果定义某个变量到绝对地址
也是采用这种办法。但TI说了,这个方法使用起来灵活。
6F2802x_PieVect.c
这个文件是定义中断矢量表的。并且包括了一个初始化函数。在初始化时,要
用到它们。
7F2802x_SysCtrl.c
系统的时钟控制,在这个文件中完成。
d3.jpg
8F2802x_MemCopy.c
这是对于烧写到FLASH中的程序,拷贝到RAM中运行时使用的。因为在flash
运行程序,需要插入等待时间,在RAM中运行不需要等待。
9F2802x_usDelay.asm
这是个延时函数,很简单。这个文件中还有个“ramfuncs”(具体细节将在其它
文章中叙述),这样定义后就可以使用MemCopy()将它拷贝到RAM中运行:
MemCopy&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart)
d4.jpg
10、模块文件
PWMI2CSPI等。文件中给出了基本的实现设置方法,应用程序中可以
根据具体情况,作适当修改。
二、F28027程序基本结构(流程)
启动序列
F2802x_CodeStartBranch.asm关闭看门狗、并跳至C程序
系统控制初始化
GPIO初始化
PIE表初始化
用户专用代码及中断允许
复位
三、用延时函数控制的LED程序
程序如下
void main(void)
{
  InitSysCtrl();
  InitGpio();
  DINT;
  InitPieCtrl();
  IER = 0x0000;
  IFR = 0x0000;
  InitPieVectTable();
  for (;;)
  {
     GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
     DELAY_US(100000L);
  }
}
1InitSysCtrl()
前面提到了这个函数。这里,使用内部振荡器,60MHz,仅打开GPIO时钟。
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;    // GPIO
2InitGpio()
这里,需要将LaunchPad上的几个灯(或某一个)设置为输出,本例程只用LED0
因此只需要在后面加一句:
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
3PIE
本程序不使用中断,所以仅初始化中断表就行了。
4IO控制
IO的控制,可以使用GPIO data寄存器,也可以使用GPIO ClearSet寄存器,这里
使用的是GPIO Toggle寄存器。使用这个寄存器在流水线作业中有它的好处,可以参考
数据手册。
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
四、调试
现在的程序,不对flash操作,因此,原来板子上的程序将不受影响。
对项目进行编译后,将LaunchPad接上电脑,点编译器中的“锤子”,即进入调试
状态,在这里可以单步等调试。具体情况从略。


回复

使用道具 举报

394

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2012-11-27 17:31 | 显示全部楼层

顶楼主啊

带领我这个菜鸟快速入门C2000 launchpad ,希望楼主能把其他模块的例程也做好方便我们学习啊


回复

使用道具 举报

3364

TA的帖子

420

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2012-11-27 18:02 | 显示全部楼层
顶楼主啊

带领我这个菜鸟快速入门C2000 launchpad ,希望楼主能把其他模块的例程也做好方便我们学习啊



同意上楼


回复

使用道具 举报

1526

TA的帖子

18

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2012-11-27 20:42 | 显示全部楼层
跟着楼主进C2000的门


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-11-27 21:00 | 显示全部楼层

整个工程的压缩文件

F28027_LED.rar (186.29 KB, 下载次数: 733)

点评

请教一下楼主,工程导入CCS5能用,但是跟着教程做不行,好像是头文件包含有些混乱了,需要将v210以前的版本的头文件包含进去,但是包含进去之后错误更多了,能不能把上个教程的步骤相关方面详细一些说明下?  详情 回复 发表于 2012-12-4 10:14


回复

使用道具 举报

5644

TA的帖子

453

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2012-11-27 21:04 | 显示全部楼层
确实详细!学习了!


回复

使用道具 举报

7021

TA的帖子

193

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2012-11-27 22:27 | 显示全部楼层
看到了谢谢


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-11-27 23:34 | 显示全部楼层

使用定时器的例程

F28027_LED2.rar (186.55 KB, 下载次数: 395)


回复

使用道具 举报

189

TA的帖子

24

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2012-11-28 11:06 | 显示全部楼层
哈哈,不错不错,LZ的分享带动了我这个小菜鸟的学习激情~继续关注


回复

使用道具 举报

3364

TA的帖子

420

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2012-11-28 13:05 | 显示全部楼层
QQ截图20121128130253.png

Warnings:
#10247-D creating output section "csm_rsvd" without a SECTIONS specification        test                         C/C++ Problem

#10247-D creating output section "csmpasswds" without a SECTIONS specification        test                         C/C++ Problem

怎么回事儿?

点评

这是文件设置错误造成的, 请详细看我的第一篇文章:http://bbs.eeworld.com.cn/thread-360489-1-1.html  详情 回复 发表于 2012-11-28 13:36


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-11-28 13:36 | 显示全部楼层

回复 11楼 qinkaiabc 的帖子

这是文件设置错误造成的,
请详细看我的第一篇文章:http://bbs.eeworld.com.cn/thread-360489-1-1.html


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-11-28 13:41 | 显示全部楼层
那篇文章没有交待F2802x_CSMPasswords.asm文件的处理。
将它设置为DEBUG下不使用就可以了

点评

解决,但是是什么原理呢?  详情 回复 发表于 2012-11-28 14:48


回复

使用道具 举报

3364

TA的帖子

420

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2012-11-28 14:48 | 显示全部楼层

回复 13楼 dontium 的帖子

解决,但是是什么原理呢?


回复

使用道具 举报

364

TA的帖子

16

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2012-11-28 14:52 | 显示全部楼层
写的很详细。


回复

使用道具 举报

56

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-11-28 18:46 | 显示全部楼层
谢谢 楼主啊。。。


回复

使用道具 举报

56

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-11-29 11:13 | 显示全部楼层
很不错的,谢谢楼主了


回复

使用道具 举报

516

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2012-11-29 12:24 | 显示全部楼层
很有用的资料啊,学习


回复

使用道具 举报

36

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-12-4 10:14 | 显示全部楼层

回复 6楼 dontium 的帖子

请教一下楼主,工程导入CCS5能用,但是跟着教程做不行,好像是头文件包含有些混乱了,需要将v210以前的版本的头文件包含进去,但是包含进去之后错误更多了,能不能把上个教程的步骤相关方面详细一些说明下?

点评

刚才我试了六楼和九楼传的两个项目,这两个均可以使用,没有报错、没有警告 我用的是V5版的CCS。 请你注意一下目录设置,将多余的包含目录删了 [ 本帖最后由 dontium 于 2012-12-4 11:36 编辑 ]  详情 回复 发表于 2012-12-4 11:33


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2012-12-4 11:33 | 显示全部楼层

回复 19楼 ldlylry 的帖子

刚才我试了六楼和九楼传的两个项目,这两个均可以使用,没有报错、没有警告


我用的是V5版的CCS。

请你注意一下目录设置,将多余的包含目录删了

未命名.jpg

[ 本帖最后由 dontium 于 2012-12-4 11:36 编辑 ]


回复

使用道具 举报

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

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-9-21 21:29 , Processed in 0.528271 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表