- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#1楼主:【原创】ZigBee学习之35——按键部分及系统调用时钟的分析2
文章发表于:2010-02-17 23:57
/* Timer2 最为系统任务的时钟系统*/
OnboardTimerIntEnable = FALSE;
HalTimerConfig (OSAL_TIMER, // 8bit timer2
HAL_TIMER_MODE_CTC, // Clear Timer on Compare
HAL_TIMER_CHANNEL_SINGLE, // Channel 1 - default
HAL_TIMER_CH_MODE_OUTPUT_COMPARE, // Output Compare mode
OnboardTimerIntEnable, // Use interrupt
Onboard_TimerCallBack); // Channel Mode
//函数执行后得到系统任务时钟(HAL_TIMER_2)的配置结构:
halTimerRecord[hwtimerid].configured = TRUE;
halTimerRecord[hwtimerid].opMode = HAL_TIMER_MODE_CTC;
halTimerRecord[hwtimerid].channel = HAL_TIMER_CHANNEL_SINGLE;
halTimerRecord[hwtimerid].channelMode = HAL_TIMER_CH_MODE_OUTPUT_COMPARE;
halTimerRecord[hwtimerid].intEnable = FALSE;
halTimerRecord[hwtimerid].callBackFunc = Onboard_TimerCallBack;
//Onboard_TimerCallBack()为处理系统时钟的回调函数,这个函数什么时候会被调用呢?是个问题
//一些相关宏的定义如下:
//#define HAL_TIMER_MODE_CTC 0x02 // Clear Timer On Compare
//#define HAL_TIMER_CHANNEL_SINGLE 0x01 // Single Channel - default
//#define HAL_TIMER_CH_MODE_OUTPUT_COMPARE 0x02 // Channel Mode Output_Compare
//现在系统任务时钟所需要使用的定时器已经配置好了,但是如何启动的呢?启动定时器必须要对TxCTL寄存器启动位置位才能启动啊!我们回到ZMain.c中的main()中,在InitBoard( OB_COLD );下面接着执行的是HalDriverInit()函数,在此函数中最开始就是初始化了定时器HalTimerInit();进去一看发现任然没有启动定时器!仅仅只是对定时器的寄存器进行了一个别名配置而已,增加了如下的配置:
halTimerRecord[HW_TIMER_4].prescale = HAL_TIMER4_8_PRESCALE;
halTimerRecord[HW_TIMER_4].clock = HAL_TIMER_32MHZ;
halTimerRecord[HW_TIMER_4].prescaleVal = HAL_TIMER4_8_PRESCALE_VAL;
/* Setup Timer4 Channel structure */
halTimerChannel[HW_TIMER_4].TxCCTL = TCHN_T4CCTL;
halTimerChannel[HW_TIMER_4].TxCCL = TCHN_T4CCL;
halTimerChannel[HW_TIMER_4].TxCCH = TCHN_T4CCH;
halTimerChannel[HW_TIMER
文档评论(0)