32114|73

1万

帖子

25

TA的资源

裸片初长成(高级)

楼主
 

【C2000 LaunchPad】让LED闪起来 [复制链接]

 
先给个PDF文件:

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

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

最新回复

谢谢版主,我自己找到了错误。。。确实是这个问题,新手刚入门,见谅见谅  详情 回复 发表于 2017-10-15 21:58

点评

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

回复
举报

1万

帖子

25

TA的资源

裸片初长成(高级)

推荐
 

让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
它是缺省的中断程序,包括了所有中断程序的框架,如:
当进入中断时,将什么也不做,并停留在那里。用户编程时,可以重新定义中断
函数并转向它,如:
   PieVectTable.XINT1 = &UserInttruptFunction
也可以修改这个文件中的函数。
5F2802x_GlobalVariableDefs.c
这个文件是是定义F28027内部寄存器的,与CMD文件一道分配寄存器地址,并定
义寄存器文件结构变量。如
从这里可以看到,要定义一个寄存器是很麻烦的,如果定义某个变量到绝对地址
也是采用这种办法。但TI说了,这个方法使用起来灵活。
6F2802x_PieVect.c
这个文件是定义中断矢量表的。并且包括了一个初始化函数。在初始化时,要
用到它们。
7F2802x_SysCtrl.c
系统的时钟控制,在这个文件中完成。
8F2802x_MemCopy.c
这是对于烧写到FLASH中的程序,拷贝到RAM中运行时使用的。因为在flash
运行程序,需要插入等待时间,在RAM中运行不需要等待。
9F2802x_usDelay.asm
这是个延时函数,很简单。这个文件中还有个“ramfuncs”(具体细节将在其它
文章中叙述),这样定义后就可以使用MemCopy()将它拷贝到RAM中运行:
MemCopy&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart)

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接上电脑,点编译器中的“锤子”,即进入调试
状态,在这里可以单步等调试。具体情况从略。
 
 

回复

373

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

顶楼主啊

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

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

4
 
顶楼主啊

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



同意上楼
 
个人签名
 
 

回复

1453

帖子

18

TA的资源

纯净的硅(高级)

5
 
跟着楼主进C2000的门
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

6
 

整个工程的压缩文件

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

点评

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

回复

5304

帖子

454

TA的资源

五彩晶圆(高级)

7
 
确实详细!学习了!
 
 
 

回复

7173

帖子

195

TA的资源

五彩晶圆(高级)

8
 
看到了谢谢
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

9
 

使用定时器的例程

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


五、使用定时器的LED闪烁
这里使用定时器0,让LED1闪烁,因此就在GPIO初始那里加上一句:
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
使它成为输出口。
并且在InitPeripheralClocks()中要打开定时器0的时钟:
SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer-0
使用TI的库对定时器初始化:
InitCpuTimers()
并配置定时器0
ConfigCpuTimer(&CpuTimer0, 60, 500000);

这里CpuTimer0CPUTIMER_VARS的一个结构体,如下图。60为时钟频率,500000为定时周期数。
如果想定时更长时间,可以修改Timer->RegsAddr->TPR.all的值。
然后设置中断并允许中断。
2、中断函数
TI的例程中,较多的使用中断转向。这里我们采用另一种方法,即修改FP2802x_DefaultIsr.c文件中的中断函数。
在函数
interrupt void  TINT0_ISR(void)      // CPU-Timer 0
中将
           asm ("      ESTOP0");
           for(;;);
这两行删除,用以下代替:
GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1; // Toggle GPIO1 once per 500 milliseconds
    // Acknowledge this interrupt to receive more interrupts from group 1
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
上面最后一句是清除相应的中断位,以便响应下次中断。
最后编译、调试。发现LED0LED按各自的设定闪烁。
 
 
 

回复

186

帖子

24

TA的资源

一粒金砂(高级)

10
 
哈哈,不错不错,LZ的分享带动了我这个小菜鸟的学习激情~继续关注
 
 
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

11
 


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

怎么回事儿?

点评

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

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

12
 

回复 11楼 qinkaiabc 的帖子

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

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

13
 
那篇文章没有交待F2802x_CSMPasswords.asm文件的处理。
将它设置为DEBUG下不使用就可以了

点评

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

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

14
 

回复 13楼 dontium 的帖子

解决,但是是什么原理呢?
 
个人签名
 
 

回复

348

帖子

16

TA的资源

纯净的硅(高级)

15
 
写的很详细。
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(中级)

16
 
谢谢 楼主啊。。。
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

17
 
很不错的,谢谢楼主了
 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

18
 
很有用的资料啊,学习
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

19
 

回复 6楼 dontium 的帖子

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

点评

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

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

20
 

回复 19楼 ldlylry 的帖子

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


我用的是V5版的CCS。

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



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

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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