查看: 1106|回复: 0

ADI EVAL-ADuCM360QSPZ开发套件试用报告二

[复制链接]

该用户从未签到

发表于 2018-5-17 08:51:04 | 显示全部楼层 |阅读模式
分享到:
这一期给大家带来定时器的使用。控制对象还是开发板上那个孤零零的LED,当然首先还是初始化定时器,先把代码贴出来。
void Timer0_Init(){   DioOen(pADI_GP1,0x8);       WdtCfg(T3CON_PRE_DIV1,T3CON_IRQ_EN,T3CON_PD_DIS);    ClkDis(CLKDIS_DISSPI0CLK| CLKDIS_DISSPI1CLK| CLKDIS_DISI2CCLK|CLKDIS_DISUARTCLK|CLKDIS_DISPWMCLK| CLKDIS_DIST1CLK| CLKDIS_DISDACCLK| CLKDIS_DISDMACLK| CLKDIS_DISADCCLK);   ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);     GptCfg(pADI_TM0,TCON_CLK_UCLK,TCON_PRE_DIV256, TCON_MOD_PERIODIC|TCON_UP_DIS|TCON_RLD_EN|TCON_ENABLE);     GptLd(pADI_TM0,31249);      NVIC_EnableIRQ(TIMER0_IRQn);        }这次使用的是定时器0,在初始化函数中前四行代码想必大家都有点印象了吧,没错!就是上一期中初始化LED引脚的程序。下一行代码是选用系统内部时钟,即16MHz,采用的256分频。然后接下来的一行写的是定时器的预装载值。这一次我的期望是LED每半秒闪烁一次,所以预装载值是31249,具体的计算公式如下:
定时时间=装载值*(分频数+1)/系统时钟
接触过stm32的大神对这个公式肯定再熟悉不过了,没接触过的呢要牢牢记住这个公式了哟~经过三下五除二的运算,预装载值就这样算出来了。最后一行代码是使能定时器的中断。这样就初始化完成了,接下来是对定时器中断函数的编写了。老规矩,先看代码。
void GP_Tmr0_Int_Handler(){        GptClrInt(pADI_TM0,TSTA_TMOUT);          DioTgl(pADI_GP1,0x08);   }由于只是单纯的控制LED的闪烁,所以中断函数非常简单。如果大家不会写定时器的中断函数名,可以去下面这个文件中进行查找,就会找到定时器0对应的中断函数名称。

在中断函数的第一行代码的意义是清除定时器0的溢出中断标志,这一点但凡是学过51单片机的人也都会知道的,所以这里就不再赘述了。下一行是控制LED闪烁,这的代码在上一期也介绍过了。然后在主函数中调用定时器初始化函数即可,将程序下载到开发板上就可以看到每半秒闪烁一次的LED了。
回复

使用道具 举报

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

本版积分规则

关闭

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

手机版|小黑屋|与非网

GMT+8, 2024-3-28 18:35 , Processed in 0.134145 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.