DSP学习(5)—— Timer的使用

DSP学习(5)—— Timer的使用



前言

本文记录学习使用SYS/BIOS Timer的过程以及一些遇到的问题,主要内容是如何创建和使用一个计时器。


一、创建Timer

计时器可以在编写程序的时候静态配置也可以在程序执行时动态配置。这两种方式没有什么区别但是有些组件可能只能静态配置。对于定时器的静态配置有以下两种方式。

1. 法一:图形界面创建

注意:图形界面相对来说比较占资源,如果电脑配置不高,可能出现打开图形界面卡顿的情况。

首先,点击project文件夹内的.cfg文件,页面如下图所示,再点击System Overview
在这里插入图片描述
这就是整个系统组件的结构图,接着点击Timer模块
在这里插入图片描述
点击实例instance进入创建页面,点击Add 建立一个timer, 如果无法点Add,鼠标放到白色的矩形框内右键选使用计时器。
在这里插入图片描述

  • Timer ISR function: 计时器每个周期内执行的中断服务函数,自己补充执行特定功能的函数,名字可以随便取
  • Timer ID: 根据不同的芯片内置的timer数目、基地址都不一样,具体查看手册。也可以选择ANY,默认使用任意最低ID的空闲timer
  • Period: 计时器周期,有两种:一个是计数,一个是微秒
  • Start mode: 有两种,一个是自动开始,一个是用户启动,用户启动要写对应的代码,例如:
	// 启动1ms计数器
	UInt key;
	key = Hwi_disable();
	Timer_setPeriodMicroSecs(TimerSlotHandle, 1000);
	Timer_start(TimerSlotHandle);
	Hwi_restore(key);
  • Run mode: 有连续模式和一些其他模式,具体见help>timer_create>Timer_Params_init 里面有各个参数的说明

2. 法二:代码方式创建

    Timer_Params timerparams;
    Timer_Params_init(&timerparams);

    timerparams.intNum = 6;//interrupt number
    timerparams.periodType = Timer_PeriodType_MICROSECS;
    timerparams.period = 1000;//1ms
    timerparams.runMode = Timer_RunMode_CONTINUOUS;
    timerparams.startMode = Timer_StartMode_USER;

	TimerSlotHandle = Timer_create(11,Timer_ISR,&timerparams,NULL);

    if(TimerSlotHandle == NULL){
    	System_abort("TimerSlotHandle created failed!\n");
    }

具体的参数可以在CCS的help查找
在这里插入图片描述
在这里插入图片描述

二、相关问题

软件定时器和硬件定时器的区别:

  1. 硬件定时器:
    只要一上电硬件定时器就会周期的向CPU发一个时钟中断,CPU就执行相应的中断ISR,因为是硬件相关比较精确,等于说时间是严格跟硬件走的。
  2. 软件定时器:
    由程序启动的,没硬件定时器精确,需要占用一部分CPU资源。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DSP6678芯片具有16个64位定时器。其中,Timer0到Timer7作为看门狗定时器专用于每个CorePac,并且还可以用作通用定时器。另外的八个定时器也可以配置为通用定时器,每个定时器可以编程为64位定时器或两个独立的32位定时器。\[2\] 对于定时器的设置,可以使用Timer_Config程序进行配置。该程序可以选择相应的定时器,设置定时器周期,选择计数模式(循环计数或单次计数),以及选择定时器模式(64位定时器或32位定时器)。还可以使用Timer_Out_Config函数设置定时器的输出模式(时钟输出或脉冲输出),并使用Timer_Start函数启动定时器开始计时。\[3\] 请问您还有其他关于dsp6678定时器的问题吗? #### 引用[.reference_title] - *1* *2* [DSP篇--C6678功能调试系列之TIMER、UART调试](https://blog.csdn.net/nanke_yh/article/details/128156238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [DSP6678 中断程序](https://blog.csdn.net/weixin_44493666/article/details/108677212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值