2

帖子

0

TA的资源

一粒金砂(初级)

41
 
谢谢  !!!!!111111
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

42
 

回复 楼主 liuxun198352 的帖子

免费内容:
//###########################################################################
//
// 文件名: Example_281xEvPwm.c
//
// 说明:
// 设置事件管理器的定时器(TIMER1, TIMER2, TIMER3 and TIMER4)
// 来产生 T1PWM, T2PWM, T3PWM, T4PWM 和 PWM1-12 波形(16路PWM波)。
//
//###########################################################################

#include "DSP281x_Device.h" // DSP281x 设备包含文件
#include "DSP281x_Examples.h" // DSP281x 例程包含文件

// 函数原型声明
void init_eva(void);
void init_evb(void);

void main(void) //主函数
{

// 第1步:初始化系统控制量:PLL,看门狗,使能外围时钟

InitSysCtrl();//系统初始化程序,原型在DSP281x_SysCtrl.c中


// 第2步:初始化 GPIO:

EALLOW; //使能保护寄存器
GpioMuxRegs.GPAMUX.all = 0x00FF; // 将EVA PWM 1-6 引脚配置成通用I/O
GpioMuxRegs.GPBMUX.all = 0x00FF; // 将EVB PWM 7-12 引脚配置成通用I/O
EDIS; //禁止修改保护寄存器


// 第3步:清除所有中断,初始化PIE向量表

DINT; //关闭总中断
IER = 0x0000;//关闭外设中断
IFR = 0x0000;//清除中断标志

InitPieCtrl();//初始化PIE控制寄存器

InitPieVectTable();//初始化PIE向量表


// 第4步:初始化所有外围设备

init_eva(); // 初始化事件管理器A
init_evb(); //初始化事件管理器B


// 第5步:IDLE循环,采用示波器可以观察波形

for(;;);

}


void init_eva()
{
// 初始化EVA Timer1
EvaRegs.T1PR = 0xFFFF; // 定时器1 周期值
EvaRegs.T1CMPR = 0x3C00; // 定时器1 比较值
EvaRegs.T1CNT = 0x0000; // 定时器1 计数器初值
EvaRegs.T1CON.all = 0x1042; //控制方式:连续增减;定时器使能,比较使能


// 初始化 EVA Timer2
EvaRegs.T2PR = 0x0FFF; // 定时器2 周期值
EvaRegs.T2CMPR = 0x03C0; // 定时器2 比较值
EvaRegs.T2CNT = 0x0000; // 定时器2 计数器初值
EvaRegs.T2CON.all = 0x1042; //控制方式:连续增减;定时器使能,比较使能


// 设置 T1PWM and T2PWM
EvaRegs.GPTCONA.bit.TCMPOE = 1; //比较逻辑驱动T1/T2PWM
EvaRegs.GPTCONA.bit.T1PIN = 1; //定时器1比较器极性设置为低电平有效
EvaRegs.GPTCONA.bit.T2PIN = 2; //定时器2比较器极性设置为高电平有效

//使能 PWM1-PWM6比较功能
EvaRegs.CMPR1 = 0x0C00; //比较单元比较器1设值
EvaRegs.CMPR2 = 0x3C00; //比较单元比较器2设值
EvaRegs.CMPR3 = 0xFC00; //比较单元比较器3设值
EvaRegs.ACTRA.all = 0x0666;//输出引脚1、3、5高有效,2、4、6低有效
EvaRegs.COMCONA.all = 0xA600; //允许比较输出;下溢或等于周期值时重载
EvaRegs.DBTCONA.all = 0x0000; // 禁止死区

}

void init_evb()
{
// 初始化EVB Timer3
// Timer3 控制 T3PWM and PWM7-12
EvbRegs.T3PR = 0xFFFF; // Timer3 周期值
EvbRegs.T3CMPR = 0x3C00; // Timer3 比较值
EvbRegs.T3CNT = 0x0000; // Timer3 计数器初值

// TMODE = 连续增减
// Timer 使能
// Timer 比较使能
EvbRegs.T3CON.all = 0x1042;

// 初始化EVB Timer4
// Timer4 控制T4PWM
EvbRegs.T4PR = 0x00FF; // Timer4 周期值
EvbRegs.T4CMPR = 0x0030; // Timer4 比较值
EvbRegs.T4CNT = 0x0000; // Timer4 计数初值

// TMODE = 连续增减
// Timer 使能
// Timer 比较使能
EvbRegs.T4CON.all = 0x1042;

// 设置T3PWM and T4PWM
// 由比较逻辑来驱动 T3/T4 PWM
EvbRegs.GPTCONB.bit.TCMPOE = 1;
// T3PWM的 比较极性 =低有效
EvbRegs.GPTCONB.bit.T3PIN = 1;
// T4PWM的比较极性 = 高有效
EvbRegs.GPTCONB.bit.T4PIN = 2;

//使能PWM7-PWM12比较功能
EvbRegs.CMPR4 = 0x0C00;
EvbRegs.CMPR5 = 0x3C00;
EvbRegs.CMPR6 = 0xFC00;


EvbRegs.ACTRB.all = 0x0666; // 比较动作控制,动作在一个比较情况下发生
// 输出管脚 1 CMPR4 - 高有效
// 输出管脚 2 CMPR4 - 低有效
// 输出管脚 3 CMPR5 - 高有效
// 输出管脚4 CMPR5 - 低有效
// 输出管脚 5 CMPR6 - 高有效
// 输出管脚6 CMPR6 - 低有效

EvbRegs.COMCONB.all = 0xA600; //允许比较输出;下溢或等于周期值时重载

EvbRegs.DBTCONB.all = 0x0000; //禁止死区

}

// 此例程没有使用ISR(中断服务子程序)
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

43
 
谢谢啊,好东西!!!!
 
 
 

回复

45

帖子

0

TA的资源

一粒金砂(中级)

44
 
5個前好貴也>"<
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

45
 
不错。谢了
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

46
 
分享了 不错的一份资料
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

47
 
很好的资料啊。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表