/******************************************************************************* * @note Copyright (C) 2017 Shanghai Panchip Microelectronics Co., Ltd. * All rights reserved. * * @file drv_pwm.h * @brief PWM驱动 * 机体坐标系(z朝下,x为机头,y为右侧): * * PWM对应的IO口: * ----------+----------+----------+---------- * PWM0_CH0 | | P1.2(8) | P2.2(24) * ----------+----------+----------+---------- * PWM0_CH1 | | P1.3(9) | P2.3(25) * ----------+----------+----------+---------- * PWM0_CH2 | | | P2.4(26) * ----------+----------+----------+---------- * PWM0_CH3 | | | P2.5(27) * ----------+----------+----------+---------- * PWM0_CH4 | | P1.4(10) | P2.6(28) * ----------+----------+----------+---------- * PWM0_CH5 | P0.4(15) | | * ----------+----------+----------+---------- * * @history - V1.0, 2017-04-20, xiaoguolin, first implementation. *******************************************************************************/ #ifndef __LIB_DIRVER_PWM_PAN159_H #define __LIB_DIRVER_PWM_PAN159_H #ifdef __cplusplus extern "C"{ #endif #include "Mini58Series.h" #define __PWM_PAN159_PORT(P) ((P)<<6) #define __PWM_PAN159_PIN(B) ((B)<<3) #define __PWM_PAN159_CHN(C) ((C)<<0) #define PWM_PAN159_PWM0_CH0_P12 (__PWM_PAN159_CHN(0)|__PWM_PAN159_PORT(1)|__PWM_PAN159_PIN(2)) /* 01 010 000 = 0x50 */ #define PWM_PAN159_PWM0_CH0_P22 (__PWM_PAN159_CHN(0)|__PWM_PAN159_PORT(2)|__PWM_PAN159_PIN(2)) /* 10 010 000 = 0x90 */ #define PWM_PAN159_PWM0_CH1_P13 (__PWM_PAN159_CHN(1)|__PWM_PAN159_PORT(1)|__PWM_PAN159_PIN(3)) /* 01 011 001 = 0x59 */ #define PWM_PAN159_PWM0_CH1_P23 (__PWM_PAN159_CHN(1)|__PWM_PAN159_PORT(2)|__PWM_PAN159_PIN(3)) /* 10 011 001 = 0x99 */ #define PWM_PAN159_PWM0_CH2_P24 (__PWM_PAN159_CHN(2)|__PWM_PAN159_PORT(2)|__PWM_PAN159_PIN(4)) /* 10 100 010 = 0xA2 */ #define PWM_PAN159_PWM0_CH3_P25 (__PWM_PAN159_CHN(3)|__PWM_PAN159_PORT(2)|__PWM_PAN159_PIN(5)) /* 10 101 011 = 0xAB */ #define PWM_PAN159_PWM0_CH4_P14 (__PWM_PAN159_CHN(4)|__PWM_PAN159_PORT(1)|__PWM_PAN159_PIN(4)) /* 01 100 100 = 0x64 */ #define PWM_PAN159_PWM0_CH4_P26 (__PWM_PAN159_CHN(4)|__PWM_PAN159_PORT(2)|__PWM_PAN159_PIN(6)) /* 10 110 100 = 0xB4 */ #define PWM_PAN159_PWM0_CH5_P04 (__PWM_PAN159_CHN(5)|__PWM_PAN159_PORT(0)|__PWM_PAN159_PIN(4)) /* 00 100 101 = 0x25 */ #define PWM_PAN159_PORT_MSK __PWM_PAN159_PORT(0x03) #define PWM_PAN159_PIN_MSK __PWM_PAN159_PIN(0x07) #define PWM_PAN159_CHN_MSK __PWM_PAN159_CHN(0x07) #define PWM_PAN159_PORT(PWMx) ((PWMx)>>6) #define PWM_PAN159_PIN(PWMx) (((PWMx)&PWM_PAN159_PIN_MSK)>>3) #define PWM_PAN159_CHN(PWMx) ((PWMx)&PWM_PAN159_CHN_MSK) #define PWM_PAN159_CMPDAT ((volatile uint32_t*)(0x40040000+0x24)) #define PWM_PAN159_OEN (*(volatile uint32_t*)(0x40040000+0x5C)) #define PWM_PAN159_CHN_ISLOCKED(CHN_BITS) (PWM_PAN159_OEN&(CHN_BITS)) #define PWM_PAN159_CHN_LOCK(CHN_BITS) (PWM_PAN159_OEN&=~(CHN_BITS)) #define PWM_PAN159_CHN_UNLOCK(CHN_BITS) (PWM_PAN159_OEN|=(CHN_BITS)) #define PWM_PAN159_CHN_OUT(CHN,VAL) (PWM_PAN159_CMPDAT[(CHN)]=(VAL)) #define pwm_pan159_islocked(pwm_port) PWM_PAN159_CHN_ISLOCK(1<