DSP5509的定时器实验-第2篇
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篇的更多相关文章
- DSP5509的RTC实验-第3篇
1. RTC实时时钟,不在过多介绍,本例程直接调用芯片支持库CSL的库函数,用起来比较简单 main() { CSL_init(); printf ("\nTESTING...\n" ...
- DSP5509的XF实验-第一篇
1. 使用大道科技的EASY-DSP5509开发板,测试第一个例程,DSP_easy5509\Code-Easy5509\EX01_XF\XF 2. 直接编译,报出错误,在Problems窗口错误指示 ...
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...
- 【iCore3 双核心板】例程五:SYSTICK定时器实验——定时点亮LED
实验指导书及代码包下载: http://pan.baidu.com/s/1eQsKcEY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore3 双核心板】例程十二:通用定时器实验——定时点亮LED
实验指导书及代码包下载: http://pan.baidu.com/s/1kTWAAJ9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【GMT43智能液晶模块】例程十一:通用定时器实验——定时点亮LED
实验原理: 通过STM32的一个GPIO口来驱动LED灯,设定GPIO为推挽输出模式,采用灌电流的方式与LED连接, 输出高电平LED灭,输出低电平LED亮,通过通用定时器TIM3实现500ms定时, ...
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...
- 【iCore4 双核心板_ARM】例程十二:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道,设定GPIO为推挽输出模式,采 用灌电流的方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过通用定时器TIM3 实现50 ...
- 【iCore1S 双核心板_ARM】例程十:SYSTICK定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出,采用 灌电流的方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒变 ...
随机推荐
- newcoder NOIP提高组模拟赛C题——保护
我是发了疯才来写这道题的 我如果用写这道题的时间去写dp,我估计我能写上三四道 可怕的数据结构题 题目 这道题的鬼畜之处在于实在是不太好写 我们看到要求离树根尽量的近,所以我们很容易就能想到树上倍增, ...
- 优化器,sgd,adam等
https://zhuanlan.zhihu.com/p/32230623 首先定义:待优化参数: ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch : 计算目标函数关于 ...
- webstorm&phpstorm打开大型项目卡死解决如vue-laravel-Yii2
用phpstorm开发时如果项目中文件过多会造成phpstorm变慢甚至卡死,尤其在node加入到我们的项目中更加会加重这种情况,因为node_modules目录中的模块非常多,phpstorm加载这 ...
- js去除空格(trim方法)
/** * 去空格 */ String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); ...
- 【Node.Js】npm国内被墙的解决方法
移动网就是坑,有VPN也上不去,真操蛋~先吐槽一下@中国移动 折腾了一晚上,总是报连接错误,导致我npm安装不上,查了半天资料,找到个靠谱的,粘贴过来备用. 原文地址:http://snoopyxdy ...
- peripheralStateNotificationCB
/********************************************************************* * @fn peripheralStateNotifica ...
- PL/SQL添加Oracle对象
1.首先用system的身份进入数据库 2.找到user文件夹 3.右击新建用户 在“创建用户”窗口中,输入新用户的名称.口令,默认表空间.临时表空间等 4.赋予新用户权限,赋予其角色权限:conne ...
- react系列(一)JSX语法、组件概念、生命周期介绍
JSX React中,推出了一种新的语法取名为JSX,它给了JS中写HTML标签的能力,不需要加引号.JSX的语法看起来是一种模板,然而它在编译以后,会转成JS语法,只是书写过程中的语法糖. JSX的 ...
- ES5 实现 ES6 的 class以及extends
ts中是这样的 class Greeter { greeting:string; constructor(message:string){ this.greeting = message; } gre ...
- 【usaco】1.1
你的飞碟在这儿Your Ride Is Here(难度:入门难度) 题目链接 题目大意 emmmm 输入两个字符串,问他们每个字母的asco码相乘后字符串是否相等. 思路 一道水题?(雾) 错误代码: ...