1. 导入Easy5509开发板的例程EX02_TIME,5509有2个16位的定时器,有点少啊

2. 直接编译,提示找不到CSL.h,其实我也好奇,CSL库是从哪里来的?RTS库从哪里来的?头文件在哪里?上个实验的时候,我发现CSL有个安装包,去官网找了一下安装包http://www.ti.com/tool/sprc133

3. 安装CSL库,在CCS中增加头文件搜索路径,程序编译通过。

4. 看下主程序,主程序比较简单,有几个关键点,包含的库文件

 #include <stdio.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_timer.h>
#include <csl_chiphal.h> extern void VECSTART(void); #define TIMER_CTRL TIMER_TCR_RMK(\
TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN == 0 */ \
TIMER_TCR_FUNC_OF(), /* FUNC == 0 */ \
TIMER_TCR_TLB_RESET, /* TLB == 1 */ \
TIMER_TCR_SOFT_BRKPTNOW, /* SOFT == 0 */ \
TIMER_TCR_FREE_WITHSOFT, /* FREE == 0 */ \
TIMER_TCR_PWID_OF(), /* PWID == 0 */ \
TIMER_TCR_ARB_RESET, /* ARB == 1 */ \
TIMER_TCR_TSS_START, /* TSS == 0 */ \
TIMER_TCR_CP_PULSE, /* CP == 0 */ \
TIMER_TCR_POLAR_LOW, /* POLAR == 0 */ \
TIMER_TCR_DATOUT_0 /* DATOUT == 0 */ \
) TIMER_Config timCfg0 = {
TIMER_CTRL, /* TCR0 */
0x3400u, /* PRD0 */
0x0000 /* PRSC */
}; Uint16 eventId0; TIMER_Handle mhTimer0; volatile Uint16 timer0_cnt = ; /* Function/ISR prototypes */
interrupt void timer0Isr(void);
void taskFxn(void); int old_intm;
Uint16 tim_val;
Uint16 xfchange = ;
Uint16 ms,f; void main(void)
{
/* Initialize CSL library - This is REQUIRED !!! */
/*CLS库的初始化,这是必需的*/
CSL_init(); /* Set IVPH/IVPD to start of interrupt vector table */
/*修改寄存器IVPH,IVPD,重新定义中断向量表*/
IRQ_setVecs((Uint32)(&VECSTART)); /* Temporarily disable all maskable interrupts */
/*禁止所有可屏蔽的中断源*/
old_intm = IRQ_globalDisable(); /* Open Timer 0, set registers to power on defaults */
/*打开定时器0,设置其为上电的的默认值,并返回其句柄*/
mhTimer0 = TIMER_open(TIMER_DEV0, TIMER_OPEN_RESET); /* Get Event Id associated with Timer 0, for use with */
/* CSL interrupt enable functions. */
/*获取定时器0的中断ID号*/
eventId0 = TIMER_getEventId(mhTimer0); /* Clear any pending Timer interrupts */
/*清除定时器0的中断状态位*/
IRQ_clear(eventId0); /* Place interrupt service routine address at */
/* associated vector location */
/*为定时器0设置中断服务程序*/
IRQ_plug(eventId0,&timer0Isr); /* Write configuration structure values to Timer control regs */
/*设置定时器0的控制与周期寄存器*/
TIMER_config(mhTimer0, &timCfg0); /* Enable Timer interrupt */
/*使能定时器的中断*/
IRQ_enable(eventId0); /* Enable all maskable interrupts */
/*设置寄存器ST1的INTM位,使能所有的中断*/
IRQ_globalEnable(); /* Start Timer */
/*启动定时器0*/
TIMER_start(mhTimer0); //以下是原来的TIMER子段
f=;
ms=;
for(;;)
{
// Wait for at least 10 timer periods
//等待10个定时周期
if(xfchange == )
{
//点亮XF的LED
CHIP_FSET(ST1_55,XF,);
}
else
{
//关掉XF的LED
CHIP_FSET(ST1_55,XF,);
}
}
/* Restore old value of INTM */
/*恢复INTM旧的值*/
IRQ_globalRestore(old_intm); /* We are through with timer, so close it */
/*关掉定时器0*/
TIMER_close(mhTimer0);
}

5. 中断服务函数

 interrupt void timer0Isr(void)
{
ms++;
++timer0_cnt;
if(timer0_cnt == f)
{
xfchange = ;
f=f-;
if(f==)
f=;
}
if(timer0_cnt == *f)
{
timer0_cnt = ;
xfchange = ;
f=f-;
if(f==)
f=;
}
}

DSP5509的定时器实验-第2篇的更多相关文章

  1. DSP5509的RTC实验-第3篇

    1. RTC实时时钟,不在过多介绍,本例程直接调用芯片支持库CSL的库函数,用起来比较简单 main() { CSL_init(); printf ("\nTESTING...\n" ...

  2. DSP5509的XF实验-第一篇

    1. 使用大道科技的EASY-DSP5509开发板,测试第一个例程,DSP_easy5509\Code-Easy5509\EX01_XF\XF 2. 直接编译,报出错误,在Problems窗口错误指示 ...

  3. 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...

  4. 【iCore3 双核心板】例程五:SYSTICK定时器实验——定时点亮LED

    实验指导书及代码包下载: http://pan.baidu.com/s/1eQsKcEY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  5. 【iCore3 双核心板】例程十二:通用定时器实验——定时点亮LED

    实验指导书及代码包下载: http://pan.baidu.com/s/1kTWAAJ9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. 【GMT43智能液晶模块】例程十一:通用定时器实验——定时点亮LED

    实验原理: 通过STM32的一个GPIO口来驱动LED灯,设定GPIO为推挽输出模式,采用灌电流的方式与LED连接, 输出高电平LED灭,输出低电平LED亮,通过通用定时器TIM3实现500ms定时, ...

  7. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...

  8. 【iCore4 双核心板_ARM】例程十二:通用定时器实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道,设定GPIO为推挽输出模式,采 用灌电流的方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过通用定时器TIM3 实现50 ...

  9. 【iCore1S 双核心板_ARM】例程十:SYSTICK定时器实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出,采用 灌电流的方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒变 ...

随机推荐

  1. java动态代理的实现以及原理

    1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...

  2. Django 模型中字段类型的ImageField

    model_pic = models.ImageField(upload_to = 'pic_folder/', default = 'pic_folder/None/no-img.jpg') 参数u ...

  3. 完整详解GCD系列(三)dispatch_group

    http://blog.csdn.net/hello_hwc/article/details/41409135 一.dispatch_group把一组任务提交到队列中,这些队列可以不相关,然后坚挺这组 ...

  4. 【Hankson 的趣味题】

    可能我只适合这道题的50分 但还是要争取一下的 我们知道对于\(gcd\)和\(lcm\)有这样的定义 \(a=\prod _{i=1}^{\pi(a)}p_i^{d_{i}}\) \(b=\prod ...

  5. PHP----预定义数组

    预定义数组    超全局数组 <?php  /* 预定义数组:  * 自动全局变量---超全局数组  *  * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据  * 2.这些数组比 ...

  6. 使用SuperMap Deskpro 6R.NET生成地图缓存

    使用说明 “地图缓存”按钮,用来对二维地图数据生成缓存文件,优化地图的浏览效果. 操作步骤 1.单击功能区>“数据”选项卡>“生成缓存”组中的“地图缓存”按钮. 2.弹出如下所示“生成地图 ...

  7. TCP-IP Architecture and IP Packet

    Why Internet working? To build a "network of networks" or internet. operating over multipl ...

  8. LeetCode28.实现strStr() JavaScript

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  9. luajit 64位 for cocos2dx 编译ios解决方法

    最近luajit发布了64位beta版,由于appstore上线必须是64位的应用,而且我的游戏项目用到lua脚本,所以必须要用到64位的luajit来编译lua脚本. 方法如下: 在luajit官网 ...

  10. Linux下抓取登陆用户密码神器mimipenguin

    windows下有Mimikatz,现在linux下有了mimipenguin,国外安全研究员huntergregal发布了工具mimipenguin,一款Linux下的密码抓取神器,弥补了Linux ...