|
系统时钟是32MHz,使用定时器1的输出比较模式,T1的I/O口映射到P0_2端口。T1CC0我设置为0x7fff,也就是说在一次计数到最大值0xffff时,输出会产生两次跳转,产生的方波频率应该为488Hz,但是实际测试到的频率是244Hz,也就是说波形没有在0x7fff处产生反转。请教各位老师,是我哪个地方还没有理解透,还没有配置好。程序如下:
/****************************
//T1初始化程序
***************************/
void InitialT1test(void)
{
EA=0;
P0SEL |= 0X04;/*P0_2为T1的外设端口*/
P2DIR |= 0X80; /*设置T1的优先级为第一优先级*/
T1CCTL0=0x64; /*
7:
6: 使能0通道中断请求
5:3 在向上比较清除输出,在0设置
2: 比较模式
1:0 未捕获
*/
T1CC0L= 0xff; /*在上升到 0xffff/2 的这个时间点时清零*/
T1CC0H= 0x7f;
T1CTL = 0x01; /*
7:4
3:2 32Mhz不分频
1:0 自由运行
*/
T1IE = 1;/*开T1中断*/
EA = 1; /*开总中断*/
}
void InitSysClock()
{
CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
while(CLKCONSTA & 0x40); // 等待晶振稳定
CLKCONCMD &= ~0x47; // 设置系统主时钟频率为 32MHZ
}
void main()
{
InitSysClock();
InitialT1test();
while(1)
{
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|