打印
[DemoCode下载]

ML51的PWM

[复制链接]
534|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xixi2017|  楼主 | 2019-12-29 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//***********************************************************************************************************

#include "ML51.h"

/**
* [url=home.php?mod=space&uid=247401]@brief[/url]       PWM Complementary mode PWM0 channel 0~5 output demo all with dead zone time insert.
* @param       None
* [url=home.php?mod=space&uid=266161]@return[/url]      None
* [url=home.php?mod=space&uid=1543424]@Details[/url]     Channel 0 high duty 10%, Channel 1 high duty 20% ..... Channel 5 high duty 60%.
*/

void main (void)
{

/* PWM0 initial setting  
   * include pwm.c in Library for PWM mode setting
   @note: the period setting of all PWM0 should be same, for example following 0x6FF.
*/
  
    PWM0_ClockSource(PWM_FSYS,128);                                    // define PWM0 clock source and divider.

/* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
*  high Duty 10% = 955 us  */
    MFP_P05_PWM0_CH0;                                                  // multi function pin define P0.5 as PWM0 channel 0 output
    P05_PUSHPULL_MODE;
    MFP_P24_PWM0_CH1;                                                  // multi function pin define P2.4 as PWM0 channel 1 output
    P24_PUSHPULL_MODE;
    PWM0_ConfigOutputChannel(0,Complementary,EdgeAligned,0x6FF,10);    // setting PWM channel 0 as 10% duty high of 0x6FF PWM period = 0x00B3
  
/* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
*  high Duty 30% = 2866 us  */
    MFP_P03_PWM0_CH2;                                                  // multi function pin define P0.3 as PWM0 channel 2 output
    P03_PUSHPULL_MODE;
    MFP_P22_PWM0_CH3;                                                  // multi function pin define P2.2 as PWM0 channel 3
    P22_PUSHPULL_MODE;
    PWM0_ConfigOutputChannel(2,Complementary,EdgeAligned,0x6FF,30);    // setting PWM channel 2 as 30% duty high of 0x6FF PWM period = 0x0219
   
/* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
*  high Duty 50% = 4776 us  */  
    MFP_P01_PWM0_CH4;                                                  // multi function pin define P0.1 as PWM0 channel 4
    P01_PUSHPULL_MODE;
    MFP_P20_PWM0_CH5;                                                  // multi function pin define P0.5 as PWM0 channel 0
    P20_PUSHPULL_MODE;
    PWM0_ConfigOutputChannel(4,Complementary,EdgeAligned,0x6FF,50);    // setting PWM channel 4 as 50% duty high of 0x6FF PWM period = 0x037F
   
    PWM0_DeadZoneEnable(PWM0_CH23,0x155);
   
    PWM0_RUN();
   
    while(1);
}





使用特权

评论回复
沙发
xixi2017|  楼主 | 2019-12-29 15:34 | 只看该作者
51也提供了库函数,高级吧

使用特权

评论回复
板凳
xixi2017|  楼主 | 2019-12-29 15:35 | 只看该作者
这个是互补输出形式的PWM。。

使用特权

评论回复
地板
yiy| | 2019-12-29 17:13 | 只看该作者
51都集成这么牛的PWM外设了。

使用特权

评论回复
5
wahahaheihei| | 2019-12-29 21:12 | 只看该作者
niu ,设置管脚,然后设置模式。周期。占空比。

使用特权

评论回复
6
wahahaheihei| | 2019-12-29 21:13 | 只看该作者
PWM0_ConfigOutputChannel(2,Complementary,EdgeAligned,0x6FF,30);
用了PWM0的不同通道,不知道这个通道是不是固定的。

使用特权

评论回复
7
mintspring| | 2019-12-29 23:56 | 只看该作者
讲的非常好。

使用特权

评论回复
8
mintspring| | 2019-12-29 23:57 | 只看该作者
NO,是官方的例子做的好。

使用特权

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

本版积分规则

131

主题

1783

帖子

1

粉丝