pit.c
上传用户:dongxin
上传日期:2022-06-22
资源大小:370k
文件大小:1k
- #include "includes.h"
- //--------------------------------------------------------------------------*
- //函数名: PITinit *
- //功 能: 初始化PIT,20毫秒产生中断 *
- //参 数: 无 *
- //返 回: 无 *
- //说 明: 60000/32 = 1875KHz,37500/1875K=20毫秒 *
- //--------------------------------------------------------------------------*
- void PITInit(void)
- {
- //设置标志计数器为0
- MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF;
- //设置每秒计数次数为2的15次幂,即32768、将PMR值装入计数器、到0时将PMR值装入计数器
- MCF_PIT0_PCSR = 0|MCF_PIT_PCSR_PRE(15)|MCF_PIT_PCSR_RLD|MCF_PIT_PCSR_OVW;
-
- //设置每秒计数次数
- MCF_PIT0_PMR = MCF_PIT_PCNTR_PC(92);
- //使能时钟中断
- MCF_PIT0_PCSR |= MCF_PIT_PCSR_EN;
- }
- /*Error
- 计算错误;
- 正确的计算方法为:
- MCV_PIT_PCSR_PRE(15) 表示将预分频因子设为2的15次幂,即32768
- 因为总线频率为60MHz,所以在一秒钟计数次数为60Mhz/32768
- MCF_PIT_PMR_PM(92) 表示将时钟计数器设为92,即当计数到92时,产生一次中断
- 由上可知,系统每秒产生的中断次数为60MHz/32768/92为20次,即每50毫秒产生一次中断*/
- /*上述方法错误,因为总线频率在进入计算前已除以2,所以每秒计数次数为
- 30MHz/32768,进而系统每秒产生的中断次数为10次。*/