2.写出定时器0在2分频的情况下MAT0.0输出0.5Khz频率、占空比为50%方波的程序。
时间: 2024-02-26 16:59:13 浏览: 57
用定时器0测量转速的程序
以下是定时器0在2分频的情况下,MAT0.0输出0.5Khz频率、占空比为50%方波的程序:
```c
#include "LPC214x.h"
#define PCLK 12000000 // 定义PCLK频率为12MHz
void Timer0_Init(void)
{
T0CTCR = 0x00; // 设置定时器模式
T0PR = 1; // 设置预分频器
T0MR0 = (PCLK/2/500)/2; // 设置匹配寄存器,产生0.5KHz频率的方波
T0MCR = (1 << 1) | (1 << 0); // 设置匹配控制寄存器,产生中断和复位计数器
T0EMR = (1 << 6) | (2 << 4); // 设置外部匹配控制寄存器,产生占空比为50%的方波
T0TCR = 0x01; // 启动定时器
}
int main(void)
{
Pin_Init(); // 初始化引脚
Timer0_Init(); // 初始化定时器0
while(1)
{
// 程序运行在中断中,不需要额外的代码
}
return 0;
}
void TIMER0_IRQHandler(void)
{
if(T0IR & 0x01) // 检查是否匹配中断
{
T0IR = 0x01; // 清除中断标志
}
}
```
以上程序中,`T0MR0`的值通过以下公式计算得出:
```
T0MR0 = (PCLK/2/500)/2
```
其中,`PCLK`为系统时钟频率,本例中为12MHz,`/2`表示2分频,`/500`表示产生0.5KHz频率的方波,最后再除以2是因为要产生占空比为50%的方波。
阅读全文