智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4413|回复: 9
打印 上一主题 下一主题

求PWM控制程序

[复制链接]

29

主题

598

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1932
贡献
834
兑换币
199
注册时间
2012-2-5
在线时间
385 小时
毕业学校
保密
跳转到指定楼层
1#
发表于 2012-2-23 17:28:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求给一个控制PWM的程序

13

主题

145

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1118
QQ
威望
738
贡献
220
兑换币
4
注册时间
2011-10-3
在线时间
80 小时
2#
发表于 2012-2-23 19:20:30 | 只看该作者
参考
技术报告
回复 支持 反对

使用道具 举报

1

主题

35

帖子

0

精华

高级会员

Rank: 4

积分
666
威望
410
贡献
140
兑换币
2
注册时间
2012-2-19
在线时间
58 小时
3#
发表于 2012-2-26 10:24:20 | 只看该作者
关键不知道用那个比较
回复 支持 反对

使用道具 举报

1

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
威望
198
贡献
34
兑换币
0
注册时间
2012-2-21
在线时间
0 小时
毕业学校
石家庄铁道大学
4#
发表于 2012-2-26 15:45:58 | 只看该作者
求检测电机驱动的程序
回复 支持 反对

使用道具 举报

1

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
威望
198
贡献
34
兑换币
0
注册时间
2012-2-21
在线时间
0 小时
毕业学校
石家庄铁道大学
5#
发表于 2012-2-26 15:46:13 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
190
威望
137
贡献
41
兑换币
10
注册时间
2012-3-19
在线时间
6 小时
毕业学校
HUST
6#
发表于 2012-3-22 22:05:45 | 只看该作者
参考从清华购买最小系统版和USDB调试器附件的例程3的设置GPIO和系统程序初始化的方法,以及博客http://t.cn/zOVK9cT 中提供的产生PWM的例程,本人做了一些调试和修改,得到产生一对互补的方波的主程序,其他包含头文件在清华提供的例程中可以找到,在这重复。供大家参考,欢迎大家指正,因为本人也是刚学。软件是CW10.1, 硬件是K10 (从清华购买的做智能车赛用)代码如下:
#define PE_MCUINIT
#include <stdio.h>
#include "derivative.h" /* include peripheral declarations */
#include "globalDef.h"
#include"mcg.h"
#include "mcg.h"
void MCU_init(void); /* Device initialization function declaration */
#define GPIO_PIN_MASK            0x1Fu
#define GPIO_PIN(x)              (((1)<<(x & GPIO_PIN_MASK)))
#define TERM_PORT           UART0_BASE_PTR
#define AUX_PORT            UART2_BASE_PTR
#define TERMINAL_BAUD       9600
#define AUXILIARY_BAUD      9600
#define BCLR(bit,Register)   ((Register)&=~(1<<(bit))) /*clear the bit in Register*/
#define BSET(bit,Register)   ((Register)|=(1<<(bit))) /*set the bit in Register*/  

int main(void)
{      
unsigned long counter;
uint8 ch1 = 0;
uint8 ch2 = 0;
uint8 coreClk_mhz = 0;
uint16 coreClk_khz = 0;
uint16 periphClk_khz = 0;
char reg;
reg = 0;
counter = 0;
oreClk_mhz = pll_init();
coreClk_khz = coreClk_mhz * 1000;
periphClk_khz = coreClk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
                 
//=========================== Code for test GPIO==================================================
/* Turn on all port clocks */
SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
//
/* Set pin0,pin1 of PORTD as GPIO */
PORTD_PCR0=(0|PORT_PCR_MUX(1));
PORTD_PCR1=(0|PORT_PCR_MUX(1));
PORTD_PCR4=(0|PORT_PCR_MUX(1));
PORTD_PCR5=(0|PORT_PCR_MUX(1));         
/* set pin0,pin1 to be output*/
GPIOD_PDDR=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5));
GPIOD_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5));
/*---------------------------------------------------------------*/  
PORTC_PCR3= PORT_PCR_MUX(4); // 设置引脚C3引脚为FTM0_CH2功能
PORTC_PCR4= PORT_PCR_MUX(4); // 设置引脚C4引脚为FTM0_CH3功能
SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟
FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止
FTM0_SC=FTM_SC_CLKS(1)|FTM_SC_PS(4);//时钟源来自总线,  16分频;
FTM0_MODE |=FTM_MODE_FTMEN_MASK;//FTMEN=1
FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式
FTM0_COMBINE|=FTM_COMBINE_COMBINE1_MASK;//FTM0通道2,3联合使用 FTM0_COMBINE|=FTM_COMBINE_COMP1_MASK;//FTM0通道2,3互补输出  
FTM0_COMBINE|=FTM_COMBINE_SYNCEN1_MASK;//使能FTM0通道2,3 PWM同步
FTM0_COMBINE|=FTM_COMBINE_DTEN1_MASK;//死区插                                  FTM0_DEADTIME=FTM_DEADTIME_DTPS(3)|FTM_DEADTIME_DTVAL(63);
FTM0_SYNCONF|=FTM_SYNCONF_SWWRBUF_MASK;//使能MOD,CNTIN,CV寄存器的软件触发同步
FTM0_SYNC=FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK;//设置load point
FTM0_C2SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C2SC &= ~FTM_CnSC_ELSA_MASK;
FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低
FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;                         
FTM0_OUTMASK=0XF3;//通道2,3输出,屏蔽其它通道
FTM0_CNTIN=0;//FTM0计数器初始值为0
FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms
FTM0_C2V=5625;//高电平1.5ms
FTM0_C3V=20000;
FTM0_CNT=0;
/*set pin0,pin1,pin4 and pin5 as 1*/
GPIOD_PSOR=GPIO_PSOR_PTSO(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5));
/*clear pin0 and pin1*/
GPIOD_PCOR=GPIO_PCOR_PTCO(GPIO_PIN(0)|GPIO_PIN(1));
/*set pin0,pin1,pin4 and pin5 as 1*/
   GPIOD_PSOR=GPIO_PSOR_PTSO(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(4)|GPIO_PIN(5));
                             /*clear pin0 and pin1*/
  GPIOD_PCOR=GPIO_PCOR_PTCO(GPIO_PIN(0)|GPIO_PIN(1));
                                        
for(;;) {          
    counter++;
    FTM0_SYNC|=FTM_SYNC_SWSYNC_MASK;//使能软件触发
}
        return 0;
}

回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
威望
163
贡献
68
兑换币
2
注册时间
2012-3-23
在线时间
33 小时
毕业学校
蚌埠学院
7#
发表于 2012-7-14 10:32:47 | 只看该作者
高手指教,pin4和pin5是干什么用的啊
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
威望
259
贡献
98
兑换币
2
注册时间
2012-4-2
在线时间
69 小时
毕业学校
杭州师大
8#
发表于 2012-8-27 11:36:30 | 只看该作者

                 SIM_SCGC5|=SIM_SCGC5_PORTC_MASK;
        PORTC_PCR4= PORT_PCR_MUX(4);// 设置引脚A6引脚为FTM0_CH3功能   
        PORTC_PCR3= PORT_PCR_MUX(4);

        SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟

FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止

        //设置通道0,工作在左边沿对其PWM模式//MSB=1,ELSB:ELSA=10

        FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低

        FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;

        FTM0_C3SC |= FTM_CnSC_MSB_MASK;//MSB=1,模式选择边沿对齐
        
        FTM0_C2SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低

               FTM0_C2SC &= ~FTM_CnSC_ELSA_MASK;

               FTM0_C2SC |= FTM_CnSC_MSB_MASK;//MSB=1,模式选择边沿对齐

        FTM0_SC=0x0c;//中断禁止,时钟源来自总线时钟60MHz,16分频后得到3.75MHz,CLKS=01,PS=100,CPWMS=0,递增计数

        FTM0_MODE &= ~1;//FTM0使能

        FTM0_OUTMASK=0XF3;//通道3输出,屏蔽其它通道

        FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式

        FTM0_COMBINE=0;//DECAPEN=0,双边沿捕捉禁止,COMBINE=0,不级联

        FTM0_CNTIN=0;//FTM0计数器初始值为0

        FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms

        FTM0_C3V=5625;//高电平1.5ms
        FTM0_C2V=5625;

        FTM0_CNT=0;


独立控制两通道输出
回复 支持 反对

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
9#
发表于 2012-9-28 12:32:35 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

45

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2395
威望
1134
贡献
707
兑换币
726
注册时间
2013-1-26
在线时间
277 小时
毕业学校
湖北省鄂南高级中学
10#
发表于 2013-2-2 00:38:24 | 只看该作者

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 14:32 , Processed in 0.053260 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表