亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lh79520_pwm_driver.c

?? Sharp Lh79520 PWM驅動源碼.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************************************
 * $Workfile:   lh79520_pwm_driver.c  $
 * $Revision:   1.0  $
 * $Author:   LiJ  $
 * $Date:   Jul 07 2003 16:40:00  $
 *
 * Project: LH79520 PWM driver
 *
 * Description:
 *     This file contains driver support for the PWM module on the
 *     LH79520
 *
 * Revision History:
 * $Log:   //smaicnt2/pvcs/VM/sharpmcu/archives/sharpmcu/software/csps/lh79520/source/lh79520_pwm_driver.c-arc  $
 * 
 *    Rev 1.0   Jul 07 2003 16:40:00   LiJ
 * Initial revision.
 * 
 * SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
 * OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
 * AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES, 
 * SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
 *
 * SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY 
 * FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A 
 * SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT. USE OF THIS SOURCE
 * FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
 *
 *  COPYRIGHT (C) 2001 SHARP MICROELECTRONICS OF THE AMERICAS, INC.
 *      CAMAS, WA
 *
 ***********************************************************************/

#include "lh79520_rcpc.h"
#include "lh79520_iocon.h" 
#include "lh79520_pwm_driver.h"

/***********************************************************************
 * PWM driver private data
 **********************************************************************/

/* PWM device configuration structure */
STATIC PWM_CFG_T pwmcfg;

/***********************************************************************
 * PWM driver public functions
 **********************************************************************/
#define PWM_RCPC_PRESCALE(n)        (_BITMASK(15) & (n))

/***********************************************************************
 *
 * Function: pwm_open
 *
 * Purpose: Open the PWM controller
 *
 * Processing:
 *     If init is not FALSE, return 0x00000000 to the caller. Otherwise,
 *      return a pointer to the PWM config structure to the caller.
 *
 * Parameters:
 *     ipbase: PWM descriptor device address
 *     arg   : Not used
 *
 * Outputs: None
 *
 * Returns: The pointer to a PWM config structure or 0
 *
 * Notes: None
 *
 **********************************************************************/
INT_32 pwm_open(void *ipbase, INT_32 arg)
{
    INT_32 status = 0;

    if ((pwmcfg.init == FALSE) && ((PWM_REGS_T *) ipbase == PWM))
    {
        /* Device is valid and not previously initialized */
        pwmcfg.init = TRUE;

        /* Save and return address of peripheral block */
        pwmcfg.regptr = (PWM_REGS_T *) ipbase;

        /* Return pointer to PWM configuration structure */
        status = (INT_32) &pwmcfg;
    }

    return status;
}

/***********************************************************************
 *
 * Function: pwm_close
 *
 * Purpose: Close the PWM controller
 *
 * Processing:
 *     If init is not TRUE, then return _ERROR to the caller as the
 *     device was not previously opened. Otherwise, disable the PWM, set 
 *     init to FALSE, and return _NO_ERROR to the caller.
 *
 * Parameters:
 *     devid: Pointer to PWM config structure
 *
 * Outputs: None
 *
 * Returns: The status of the close operation
 *
 * Notes: None
 *
 **********************************************************************/
STATUS pwm_close(INT_32 devid)
{
    PWM_CFG_T *pwmcfgptr = (PWM_CFG_T *) devid;
    STATUS status = _ERROR;

    if (pwmcfgptr->init == TRUE)
    {
        status = _NO_ERROR;
        pwmcfgptr->init = FALSE;
    }

    return status;
}

/***********************************************************************
 *
 * Function: pwm_ioctl
 *
 * Purpose: PWM configuration block
 *
 * Processing:
 *     This function is a large case block. Based on the passed function
 *     and option values, set or get the appropriate PWM
 *     parameter.
 *
 * Parameters:
 *     devid: Pointer to PWM config structure
 *     cmd:   ioctl command
 *     arg:   ioctl argument
 *
 * Outputs: None
 *
 * Returns: The status of the ioctl operation
 *
 * Notes: None
 *
 **********************************************************************/
STATUS pwm_ioctl(INT_32 devid,
                 INT_32 cmd,
                 INT_32 arg)
{
    PWM_REGS_T *pwm;
    PWM_CFG_T *pwmcfgptr = (PWM_CFG_T *) devid;
    STATUS status = _ERROR;

    UNS_32 pclk, pwm0clk, pwm1clk,prescale;
    UNS_32 div;
    UNS_16 period;
    UNS_32 duty_cycle, prev_dc, prev_dc_percent;
    
    if (pwmcfgptr->init == TRUE)
    {
        status = _NO_ERROR;
        pwm = pwmcfgptr->regptr;

        switch (cmd)
        {
            case PWM0_ENABLE:
                /* Enable PWM0 output, arg = 1, enable PWM0. arg = 1,
                disable PWM0 */
                if (arg == 1)
                {
                    RCPC->periphclkctrl &= ~RCPC_CLKCTRL_PWM0_DISABLE;
                    /* Prescaler for PWM0 is 1 in RCPC on enable */
                    RCPC->pwm0prescale = PWM_RCPC_PRESCALE(1);

                    IOCON->miscmux |= MISCMUX_PWM0;
                    
                    /* Normal output */
                    PWM0->sync = PWM_SYNC_NORMAL;
                    
                }
                else if (arg == 0)
                {
                    RCPC->periphclkctrl |= RCPC_CLKCTRL_PWM0_DISABLE;
                    RCPC->pwm0prescale = 0x1;
                    IOCON->miscmux &= ~MISCMUX_PWM0;  
                }
                else
                {
                    status = _ERROR;
                }
                break;
                
            case PWM1_ENABLE:
                /* Enable PWM1 output, arg = 1, enable PWM1. arg = 1,
                disable PWM1 */
                if (arg == 1)
                {
                    RCPC->periphclkctrl &= ~RCPC_CLKCTRL_PWM1_DISABLE;
                    RCPC->pwm1prescale = PWM_RCPC_PRESCALE(1);
                    IOCON->miscmux |= MISCMUX_PWM1;  
                }
                else if (arg == 0)
                {
                    RCPC->periphclkctrl |= RCPC_CLKCTRL_PWM1_DISABLE;
                    RCPC->pwm1prescale = 0x1;
                    IOCON->miscmux &= ~MISCMUX_PWM1;  
                }
                else
                {
                    status = _ERROR;
                }
                break;
                
            case PWM0_SET_MODE:
                /* Set PWM0 working mode, arg = 1, PWM0 working as synchronous
                mode, output start sync. with SYNC pin. arg = 0, PWM0 working
                in normal mode */
                if (arg == 1)
                {
                    PWM0->sync = PWM_SYNC_SYNC;
                    IOCON->miscmux |= MISCMUX_PWM0SYNC;
                }
                else if (arg == 0)
                {
                    PWM0->sync = PWM_SYNC_NORMAL;
                }
                else
                {
                    status = _ERROR;
                }
                break;
                
            case PWM0_START:
                /* Start PWM0 output, no arg */
                PWM0->en = PWM_EN_ENABLE;
                break;
                
            case PWM0_STOP:
                /* Stop PWM0 output, no arg */
                PWM0->en = ~PWM_EN_ENABLE;
                break;
                
            case PWM1_START:
                /* Start PWM1 output, no arg */
                PWM1->en = PWM_EN_ENABLE;
                break;
                
            case PWM1_STOP:
                /* Stop PWM1 output, no arg */
                PWM1->en = ~PWM_EN_ENABLE;
                break;
                
            case PWM0_SET_FREQ:
                /* Set PWM0 frequency, arg = is the frequency in Hz */

                pclk = (CLOCK_MAINOSC * 21)/(RCPC->hclkprescale * 2);
                prescale = RCPC->pwm0prescale;
                if (prescale > 0)
                {
                    pwm0clk = pclk / (prescale * 2);
                }
                else
                {
                    //this should not happen
                    status = _ERROR;
                    break;
                }
                div = pwm0clk / arg;
                while (div > 32768 && prescale <= 32768)
                {
                    prescale += 1;
                    RCPC->pwm0prescale = prescale;
                    pwm0clk = pclk / (prescale * 2);
                    div = pwm0clk / arg;
                }
                PWM0->tc = div;

                break;
                
            case PWM0_SET_DUTY_CYCLE:
                /* Set PWM0 duty cycle, arg = 1 to 100 for 1% to 100 % */
                period = (UNS_16) PWM0->tc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青娱乐精品在线视频| 麻豆精品蜜桃视频网站| 中文字幕av在线一区二区三区| 国产午夜三级一区二区三| 亚洲欧洲成人精品av97| 欧美成人在线直播| 亚洲欧美日韩系列| 玉米视频成人免费看| 久久久亚洲欧洲日产国码αv| 欧美亚洲国产怡红院影院| 国产在线麻豆精品观看| 尤物av一区二区| 国产精品美女www爽爽爽| 欧美xxxxxxxxx| 99久久夜色精品国产网站| 国产真实乱子伦精品视频| 欧美亚洲国产一区在线观看网站| www.在线成人| 国产亚洲欧美激情| 欧美日韩精品久久久| 国产99久久久久| 国产成人av影院| 国产福利91精品一区二区三区| 日韩国产欧美一区二区三区| 欧美亚洲动漫另类| 亚洲色欲色欲www在线观看| 国产黑丝在线一区二区三区| 久久在线观看免费| 欧美zozo另类异族| 国内精品伊人久久久久影院对白| 日韩精品一区二区三区在线观看| 在线观看91av| 亚洲一区二区三区影院| 亚洲图片欧美视频| 91麻豆精品国产自产在线观看一区| 在线成人午夜影院| 91传媒视频在线播放| 欧美在线视频你懂得| 中文字幕不卡的av| 亚洲欧美国产77777| 精品一区中文字幕| 国产成人免费在线观看| 国产三级三级三级精品8ⅰ区| 亚洲国产精品成人综合| 粉嫩绯色av一区二区在线观看 | 精品一区二区在线免费观看| 久久精品免费观看| 国产片一区二区三区| av在线不卡观看免费观看| 色综合 综合色| 欧美自拍偷拍一区| 91麻豆精品国产| 久久久噜噜噜久久人人看| 中文字幕一区二区三区不卡| 午夜亚洲福利老司机| 亚洲线精品一区二区三区八戒| 午夜国产精品影院在线观看| 91精品国产色综合久久久蜜香臀| 国内成人自拍视频| 综合av第一页| 九九热在线视频观看这里只有精品| 成a人片亚洲日本久久| 色8久久人人97超碰香蕉987| 麻豆91在线播放免费| 久久理论电影网| 五月天激情小说综合| 久久综合精品国产一区二区三区 | 8v天堂国产在线一区二区| 精品午夜一区二区三区在线观看| 不卡的电影网站| 欧美成人三级在线| 亚洲精品菠萝久久久久久久| 久久国产三级精品| 国产精品天干天干在线综合| 视频一区二区不卡| 国产亚洲精久久久久久| 免费高清不卡av| 国产精品传媒视频| 6080日韩午夜伦伦午夜伦| 另类小说综合欧美亚洲| 91亚洲精华国产精华精华液| www欧美成人18+| 日韩视频一区二区| 91亚洲国产成人精品一区二区三| 久久伊人中文字幕| 人人精品人人爱| 亚洲欧美日韩中文字幕一区二区三区 | 中国av一区二区三区| 9191精品国产综合久久久久久| 国产亚洲一区二区三区四区| 在线观看91精品国产入口| 韩国女主播成人在线观看| 亚洲影视资源网| 国产三级欧美三级| 日本不卡123| 成人激情小说乱人伦| 精品国产一区二区三区不卡| 日韩 欧美一区二区三区| 成人一区在线观看| 奇米精品一区二区三区四区| 亚洲一区在线观看网站| 精品福利av导航| 欧美日韩亚州综合| 欧美在线观看18| 国产精品麻豆久久久| 久久99日本精品| 蜜桃av噜噜一区二区三区小说| 日韩电影在线观看一区| 视频一区二区中文字幕| 午夜精彩视频在线观看不卡| 欧美丰满少妇xxxbbb| 欧美精品99久久久**| 欧美日韩在线精品一区二区三区激情| 粉嫩在线一区二区三区视频| 国产真实乱对白精彩久久| 国产三级精品在线| 欧美国产精品劲爆| 18欧美亚洲精品| 欧美激情中文字幕| 亚洲激情欧美激情| 日本一区二区三区久久久久久久久不 | 欧美色成人综合| 欧美一区二区三区影视| 国产在线不卡一区| 日韩午夜在线播放| 国产成人av电影在线播放| 六月婷婷色综合| 色婷婷激情综合| 91免费国产在线| 亚洲欧洲制服丝袜| 91精品国产入口| 国产乱一区二区| 91在线丨porny丨国产| 午夜欧美2019年伦理| 精品国产免费视频| 色先锋资源久久综合| 欧美三级日韩在线| 精品久久一二三区| 国产欧美日韩在线观看| 欧美性一区二区| 国产欧美一区二区三区沐欲| 欧洲一区二区av| 激情文学综合网| 中文字幕在线视频一区| 一区二区三区在线观看动漫| 欧美电影免费观看高清完整版| 国产精品人成在线观看免费| 亚洲va韩国va欧美va精品| 久久精品国产久精国产| 国产精品99久久久久久似苏梦涵| 亚洲午夜久久久久久久久电影院| 成人黄色小视频在线观看| 在线精品视频免费播放| 7777精品伊人久久久大香线蕉 | 国产精品一区二区三区99| 亚洲免费电影在线| 亚洲大片一区二区三区| 国产精品全国免费观看高清 | 91精品国产一区二区| 中文字幕一区二区三区蜜月| 777色狠狠一区二区三区| 91啪九色porn原创视频在线观看| 欧美久久久久久久久久| 国产成人高清视频| 久久99精品视频| 91麻豆精品国产自产在线| 中文一区在线播放| 麻豆91在线观看| 欧美日韩成人激情| 91成人在线免费观看| 洋洋成人永久网站入口| 亚洲男女毛片无遮挡| 亚洲一区日韩精品中文字幕| 天堂蜜桃91精品| 欧美喷潮久久久xxxxx| 奇米精品一区二区三区在线观看 | 国产高清无密码一区二区三区| 粉嫩av一区二区三区粉嫩| 在线观看成人小视频| 日韩欧美在线网站| 国产不卡免费视频| 色av一区二区| 免费av成人在线| 国产成人综合网| 亚洲国产精品t66y| 国产精品色哟哟| 亚洲va国产天堂va久久en| 精品无人区卡一卡二卡三乱码免费卡| 国产精品一区二区三区网站| 亚洲免费视频成人| 蜜臀av性久久久久av蜜臀妖精| 成人在线视频一区| 911国产精品| 成人污污视频在线观看| 99热精品一区二区| 91精品在线免费| 中文字幕精品在线不卡| 日韩高清电影一区| 国产精品国产三级国产aⅴ中文| 欧美精品一卡二卡|