打印
[DemoCode下载]

用新唐m0516驱动BLDC电机初始化PWM的例子

[复制链接]
5147|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
新浪|  楼主 | 2014-11-21 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void init_TPWM(void)
{
         P2_MFP  &= ~(P20_AD8_PWM0 |
                 P21_AD9_PWM1 |
                 P22_AD10_PWM2|
                 P23_AD11_PWM3|
                                                                 P24_AD12_PWM4|
                                                                 P25_AD13_PWM5
                                                                 );
    P2_MFP  |= (PWM0|PWM1|PWM2|PWM3|PWM4|PWM5);                  //设置P2.0~5为PWM0~5功能   
   
    P2_PMD  &= ~(Px0_PMD | Px1_PMD | Px2_PMD | Px3_PMD| Px4_PMD | Px5_PMD);
    P2_PMD  |= (Px0_OUT | Px1_OUT | Px2_OUT | Px3_OUT| Px4_OUT | Px5_OUT);      //设置P2.0~5为推挽输出模式

    APBCLK  |= (PWM01_CLKEN | PWM23_CLKEN|PWM45_CLKEN | PWM67_CLKEN);                  //使能PWM0,1和PWM2,3时钟PWM4,5和PWM6,7时钟
   
    CLKSEL1  = CLKSEL1 & (~(PWM01_CLK | PWM23_CLK));
       
    CLKSEL1 |= ( PWM01_HCLK | PWM23_HCLK);
       
    CLKSEL2 = CLKSEL2&(~(PWM45_CLK | PWM67_CLK));
                CLKSEL2 |=(PWM45_HCLK | PWM67_HCLK);
    PPRA  = PWM_PRESCALAE | DEAD_ZONE_INTERVAL;              //设置PWM0,1和pWM2,3时钟预分频值和PWM1,3死区长度
    PPRB  = PWM_PRESCALAE | DEAD_ZONE_INTERVAL;                                                         //设置PWM4,5和pWM6,7时钟预分频值和PWM5,6死区长度
       
    CSRA  = CSRA & (~(CSR0 | CSR1 | CSR2 | CSR3));
    CSRA |= (CSR0_CLK_1|CSR1_CLK_1|CSR2_CLK_1|CSR3_CLK_1);  //设置PWM0~3时钟分频值
                CSRB  = CSRB & (~(CSR4 | CSR5 | CSR6 | CSR7));
    CSRB |= (CSR4_CLK_1|CSR5_CLK_1|CSR6_CLK_1|CSR7_CLK_1);  //设置PWM4~7时钟分频值
   
    PCRA |= ( PWM01TYPE_CEN|PWM23TYPE_CEN|CH1INV_ON|CH3INV_ON|DZEN01| DZEN23);   //设定PWM2,3为互补输出模式,并且PWM2反向
    PCRA |= (CH0_AU_RL | CH1_AU_RL | CH2_AU_RL | CH3_AU_RL); //设定PWM0,1,2,3为自动重载模式
       
                PCRB |= ( PWM45TYPE_CEN|PWM67TYPE_CEN|CH5INV_ON|DZEN45| DZEN67);    //设定PWM4,5为互补输出模式
    PCRB |= (CH4_AU_RL | CH5_AU_RL | CH6_AU_RL | CH7_AU_RL); //设定PWM4,5,6,7为自动重载模式

    CNR0A = CNR2A = CNR0B = CNR2B = T_S;                  //设定PWM0,1,2,3,4,5,6,7周期
    CMR0A = CMR2A = T_S_2;                                   //设定PWM0,1,3,4高占空比50%
    CMR0B = T_S_2;                                                                                                                                                                  //设定PWM4,5高占空比50%
                CMR2B = 45;                                                                                                                                                                                //设定PWM6,7高占空比

    PIERB    |= ( PWMIE6|INT67TYPE);                                                                 //使能PWM6中断        //采样时间为中点
    NVIC_ISER |= PWMB_INT;                                //使能NVIC PWMB中断向量

}
评分
参与人数 1威望 +1 收起 理由
黄小煜 + 1 很给力!
沙发
从小木丁丁| | 2014-11-21 19:56 | 只看该作者
学习了,建议楼主整理一下代码

使用特权

评论回复
板凳
mintspring| | 2014-11-24 16:44 | 只看该作者
牛叉,楼主电机控制高手啊

使用特权

评论回复
地板
gaoyang9992006| | 2014-11-24 17:13 | 只看该作者
代码排版不是很给力,内容不错

使用特权

评论回复
5
NoTCsmile| | 2015-3-23 14:10 | 只看该作者
学习下

使用特权

评论回复
6
yzslion| | 2015-4-19 21:39 | 只看该作者
大家好,来这里主要是希望各位能够有兴趣应聘或者帮忙介绍能够从事电机驱动设计的工程师,我公司目前因公司发展需要急需要招聘2-3名软件工程师以及2-3硬件设计工程师,有使用过ST ARM和新唐单片机设计过BLDC或者PMSM电机驱动者最好,一旦**我公司,我们将会为你提供最好的平台任你发展,具体薪资待遇面议。有兴趣发邮件给我:yzslion@126.com  张先生,也可以加我QQ:1174791222
上海晶傲电子科技有限公司
晶傲威电气(常州)有限公司

使用特权

评论回复
7
meihongge| | 2015-5-19 22:22 | 只看该作者
其实我也大致的看了一些新塘M051的学习资料,一直想问像这种 P21_AD9_PWM1是不是应该有个宏定义到地址的的?

使用特权

评论回复
8
天灵灵地灵灵| | 2015-5-21 21:32 | 只看该作者
PWM01TYPE_CEN|PWM23TYPE_CEN|CH1INV_ON|CH3INV_ON|DZEN01| DZEN23
这句什么意思?

使用特权

评论回复
9
ccw1986| | 2015-5-22 09:17 | 只看该作者
谢谢楼主的分享
认真看看学习一下

使用特权

评论回复
10
捉虫天师| | 2015-5-22 22:46 | 只看该作者
天灵灵地灵灵 发表于 2015-5-21 21:32
PWM01TYPE_CEN|PWM23TYPE_CEN|CH1INV_ON|CH3INV_ON|DZEN01| DZEN23
这句什么意思?

逻辑或啊,用于把参数传递给寄存器。

使用特权

评论回复
11
捉虫天师| | 2015-5-22 22:52 | 只看该作者
代码备注的很清楚,一看就会了。

使用特权

评论回复
12
天灵灵地灵灵| | 2015-5-24 18:20 | 只看该作者
捉虫天师 发表于 2015-5-22 22:46
逻辑或啊,用于把参数传递给寄存器。

我知道啊,不知道这代表什么啊,没看懂。

使用特权

评论回复
13
yiyigirl2014| | 2015-5-26 20:35 | 只看该作者
像这种 P21_AD9_PWM1是不是应该有个宏定义到地址,这肯定是的

使用特权

评论回复
14
天灵灵地灵灵| | 2015-6-16 10:18 | 只看该作者
PWM驱动电机的原理是什么啊?如何对电机定位,需要传感器吗

使用特权

评论回复
15
643757107| | 2015-6-16 19:55 | 只看该作者
BLDC电机一般都是用PWM驱动的吗,总是看到这两个词在一起。

使用特权

评论回复
16
dongliushui| | 2018-3-13 22:04 | 只看该作者
学习学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:上海电机驱动交流会QQ群:120592868

16

主题

56

帖子

1

粉丝