tms320f2812捕获单元测量外部方波频率代码
时间: 2023-07-03 18:29:36 浏览: 186
下面是使用TMS320F2812的捕获单元测量外部方波频率的示例代码:
```c
#include "DSP281x_Device.h"
// 定义捕获单元1的寄存器地址
#define CAPTURE1_BASE 0x00006C00
void InitCaptureUnit1(void)
{
// 使能捕获单元1的时钟
EALLOW;
SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1;
EDIS;
// 设置捕获单元1的工作模式为边沿捕获
ECap1Regs.ECCTL2.bit.CAP_APWM = 0;
// 设置捕获单元1的捕获事件为上升沿/下降沿
ECAP1_REG(CAP1CTL) |= 0x000C;
// 使能捕获单元1
ECAP1_REG(CAP1CTL) |= 0x0001;
}
Uint16 GetCaptureCount(void)
{
// 获取捕获单元1的计数值
return ECAP1_REG(CAP1);
}
float GetExternalFrequency(void)
{
float frequency;
Uint16 count;
// 获取捕获单元1的计数值
count = GetCaptureCount();
// 计算外部方波的频率
frequency = (count > 0) ? (float)SYSCLKOUT / (float)count : 0.0f;
return frequency;
}
```
在上面的代码中,我们首先需要定义捕获单元1的寄存器地址,然后在 `InitCaptureUnit1` 函数中使能捕获单元1的时钟,并设置捕获单元1的工作模式为边沿捕获,捕获事件为上升沿/下降沿,最后使能捕获单元1。
在 `GetCaptureCount` 函数中,我们通过读取捕获单元1的计数值来获取外部方波的周期。
最后,在 `GetExternalFrequency` 函数中,我们计算外部方波的频率,并将其返回。注意,在计算频率时,我们需要将捕获计数值转换为周期,然后再除以系统时钟频率来计算频率。如果捕获计数值为0,表示外部方波的频率为0。
阅读全文