打印
[DemoCode下载]

MS51PWM实现中断功能

[复制链接]
725|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
稳稳の幸福|  楼主 | 2020-6-30 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

/************************************************************************************************************/
/*  File Function: MS51 ADC / Bandgap input demo code                                                       */
/************************************************************************************************************/
#include "MS51_32K.h"

/************************************************************************************************************/
/*   PWM interrupt subroutine                                                                               */
/************************************************************************************************************/
void PWM0_ISR (void) interrupt 13

{
    _push_(SFRS);
  
    clr_PWM0CON0_PWMF;               // clear PWM interrupt flag
  
    _pop_(SFRS);
}

/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main(void)
{

/**********************************************************************
  PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>
                = (16MHz/8)/(0x3FF + 1)
                = 2.7KHz
***********************************************************************/
    ENABLE_PWM0_CH2_P05_OUTPUT;
    P05_PUSHPULL_MODE;
    PWM0_CH2_INTERRUPT_SELECT;   

    PWM0_CLOCK_DIV_8;
    PWM0PH = 0x03;                     /*Setting PWM period  */
    PWM0PL = 0xFF;
    PWM0C2H = 0x0;                      /*PWM0 high duty = 1/2 PWM period */
    PWM0C2L = 0xFF;  

    ENABLE_PWM0_INTERRUPT;                     /*Enable PWM interrupt  */
    ENABLE_GLOBAL_INTERRUPT;
    set_PWM0CON0_LOAD;
    set_PWM0CON0_PWM0RUN;
    while(1);
}


使用特权

评论回复
沙发
稳稳の幸福|  楼主 | 2020-6-30 20:55 | 只看该作者
例子给出了如何设置PWM频率

使用特权

评论回复
板凳
稳稳の幸福|  楼主 | 2020-6-30 20:56 | 只看该作者
如何实现PWM中断,相关的说明可以看技术手册。

使用特权

评论回复
地板
dongnanxibei| | 2020-6-30 21:36 | 只看该作者
PWM功能非常有用。

使用特权

评论回复
5
huahuagg| | 2020-6-30 22:01 | 只看该作者
为何要用输出推挽模式。

使用特权

评论回复
6
huahuagg| | 2020-6-30 22:01 | 只看该作者
增加PWM的驱动能力吗

使用特权

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

本版积分规则

175

主题

3190

帖子

8

粉丝