tms320f28069例程
时间: 2023-10-24 12:07:58 浏览: 173
TMS320F28069是德州仪器公司(Texas Instruments)推出的一款高性能数字信号处理器(DSP)芯片,常用于嵌入式系统中。下面提供一些TMS320F28069的例程供参考:
1. GPIO控制例程
```c
#include "F2806x_Device.h"
#include "F2806x_Examples.h"
void main(void)
{
// 初始化系统时钟
InitSysCtrl();
// 配置GPIO
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0x00000000; // 设置GPIOA的所有引脚为GPIO功能
GpioCtrlRegs.GPADIR.all = 0x0000000F; // 设置GPIOA的引脚0~3为输出
GpioCtrlRegs.GPAPUD.all = 0x000000F0; // 禁用GPIOA的引脚4~7上拉电阻
EDIS;
// 程序主循环:轮流点亮GPIOA的引脚0~3
while(1)
{
GpioDataRegs.GPASET.all = 0x0000000F; // 设置GPIOA的引脚0~3为高电平
DELAY_US(500000); // 延时500ms
GpioDataRegs.GPACLEAR.all = 0x0000000F; // 设置GPIOA的引脚0~3为低电平
DELAY_US(500000); // 延时500ms
}
}
```
2. PWM输出例程
```c
#include "F2806x_Device.h"
#include "F2806x_Examples.h"
void main(void)
{
// 初始化系统时钟
InitSysCtrl();
// 配置GPIO
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0x00000000; // 设置GPIOA的所有引脚为GPIO功能
GpioCtrlRegs.GPADIR.all = 0x0000000F; // 设置GPIOA的引脚0~3为输出
GpioCtrlRegs.GPAPUD.all = 0x000000F0; // 禁用GPIOA的引脚4~7上拉电阻
GpioCtrlRegs.GPAMUX2.all = 0x00000000; // 设置GPIOA的所有引脚为GPIO功能
GpioCtrlRegs.GPADIR.all |= 0x00000200; // 设置GPIOA的引脚9为输出
GpioCtrlRegs.GPAPUD.all |= 0x00000400; // 禁用GPIOA的引脚9上拉电阻
GpioCtrlRegs.GPAMUX2.all |= 0x00000010; // 配置GPIOA的引脚9为EPWM1A输出
EDIS;
// 配置EPWM1
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0; // 停止时钟同步
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 计数器向上向下计数
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位同步
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时钟分频器为1
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时钟分频器为1
EPwm1Regs.TBPRD = 60000; // 设定计数器最大值,对应PWM周期为1ms
EPwm1Regs.CMPA.bit.CMPA = 30000; // 设定占空比,对应PWM脉宽为0.5ms
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 当计数器向上计数时,EPWM1A输出为高电平
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 当计数器向下计数时,EPWM1A输出为低电平
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1; // 启动时钟同步
EDIS;
// 程序主循环:轮流改变PWM脉宽
Uint16 duty = 0;
while(1)
{
// 改变占空比
EPwm1Regs.CMPA.bit.CMPA = duty;
duty += 1000;
if(duty > 60000) duty = 0;
// 延时1ms
DELAY_US(1000);
}
}
```
以上是两个比较简单的例程,更多TMS320F28069的例程可以参考TI官方提供的例程库。
阅读全文