定时器模块测试.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定时器模块主要函数 void SymbolTimerInit(void) 符号时间计数器初始化函数:将Timer1设定为128分频,定时器模式为自动重装,从0x0000到0xFFFF。并进行清除中断标志,开中断以及设定初值操作。 TICK TickGet(void) 获取计数器值,得知当前系统时间。函数返回值为一个结构体包含四个无符号字符型的值b0、b1、b2、b3,得知系统滴答为(b3*oxFF+b2)*0xFFFF+b1b0。 在Timer1中断标志为1并且Timer1状态寄存器的溢出中断标志为1的条件下,如果Timer1计数器低8位的值小于10,那么将中断的次数加1。(当一处发生在关闭Timer1和读取计数器低8位的值之间时,那么读取的中断次数值不正确,人为修改timerextension1中的值,用计数器低8位的值小于10的方法表示刚刚溢出即读值有误)。 HAL_ISR_FUNCTION( Timer1Isr , T1_VECTOR),发生中断时调用该函数,用于计算中断的次数。 #define TickGetDiff(a,b) ( (a.Val b.Val)?(a.Val - b.Val):( 0xFFFFFFFF - b.Val+a.Val+1)) 这个宏定义用来算出前后两次获取时钟滴答之间的时间差。 #define SYMBOLS_TO_TICKS(a) (DWORD)(a * MAC_RADIO_TIMER_TICKS_PER_SYMBOL()) 用于将symbol转变成tick. 一个symbol是16um 测试方法 利用TickGetDiff(a,b)函数测出前后两次获取时钟滴答的时间差,然后与100ms进行对比,若小于则继续TickGet(),知道大于为止,若大于则n值减1(n初值为10),直到n减为0红灯亮。应该是一秒的时间,利用时钟滴答计算出具体的系统时间进行比较。 添加代码 hal_symboltime.c下面添加的内容包括 //初始化LED灯 void InitLed(void) { P1DIR=0x03; //P10,P11为输出; RLED=0; GLED=0; } void SymbolTimerInit(void) { //............................................................. InitLed(); //将LED灯进行初始化 . . . } hal_symboltime.h下面添加的内容包括 #define RLED P1_0 //用灯的亮灭测试时间准不准 #define GLED P1_1 main_COORD.c下面添加内容 //.................添加。。。。。。。。。。。。 TICK temp1,temp2; //存放TickGet()返回值 //........................................... /* temp1=TickGet(); //每隔一秒亮灭。。。。。。。。。。 while(1) { //RLED=!RLED; temp2=TickGet(); if(TickGetDiff(temp2,temp1)ONE_SECOND) { RLED=!RLED; temp1=TickGet(); } // else // GLED=!GLED; }*/ //用10个100毫秒代替 temp1=TickGet(); int n=10; while(1) { temp2=TickGet(); if(TickGetDiff(temp2,temp1)0x61A8) //0X61A8是100毫秒的长度 { n--; temp1=temp2; if(n==0) { n=10; RLED=!RLED; } } } temp3=SYMBOLS_TO_TICKS(2); 定时器模块测试 定时器模块基本原理 1 定时器模块主要函数 2 测试方法 3 添加代码 4 定时器模块基本原理 定时器模块可以用来初始化时间计数器以及获取当前系统时间为协议栈后续流程使用。在这

文档评论(0)

638922bb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档