2023-04-11 08:51:37 +08:00

141 lines
6.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* <20><><EFBFBD>Ҫ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˴<C3B4><CBB4><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>STC<54><43><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> */
/*---------------------------------------------------------------------*/
#ifndef __PWM_H
#define __PWM_H
#include "config.h"
#define ENO1P 0x01
#define ENO1N 0x02
#define ENO2P 0x04
#define ENO2N 0x08
#define ENO3P 0x10
#define ENO3N 0x20
#define ENO4P 0x40
#define ENO4N 0x80
#define ENO5P 0x01
#define ENO6P 0x04
#define ENO7P 0x10
#define ENO8P 0x40
#define PWMA 1
#define PWMB 2
#define PWM1_SW_P10_P11 0
#define PWM1_SW_P20_P21 1
#define PWM1_SW_P60_P61 2
#define PWM2_SW_P12_P13 0
#define PWM2_SW_P22_P23 (1 << 2)
#define PWM2_SW_P62_P63 (2 << 2)
#define PWM3_SW_P14_P15 0
#define PWM3_SW_P24_P25 (1 << 4)
#define PWM3_SW_P64_P65 (2 << 4)
#define PWM4_SW_P16_P17 0
#define PWM4_SW_P26_P27 (1 << 6)
#define PWM4_SW_P66_P67 (2 << 6)
#define PWM4_SW_P34_P33 (3 << 6)
#define PWM5_SW_P20 0
#define PWM5_SW_P17 1
#define PWM5_SW_P00 2
#define PWM5_SW_P74 3
#define PWM6_SW_P21 0
#define PWM6_SW_P54 (1 << 2)
#define PWM6_SW_P01 (2 << 2)
#define PWM6_SW_P75 (3 << 2)
#define PWM7_SW_P22 0
#define PWM7_SW_P33 (1 << 4)
#define PWM7_SW_P02 (2 << 4)
#define PWM7_SW_P76 (3 << 4)
#define PWM8_SW_P23 0
#define PWM8_SW_P34 (1 << 6)
#define PWM8_SW_P03 (2 << 6)
#define PWM8_SW_P77 (3 << 6)
typedef struct
{
u8 PWM1_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM2_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM3_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM4_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM5_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM6_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM7_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u8 PWM8_Mode; // ģʽ, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
u16 PWM_Period; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>, 0~65535
u16 PWM1_Duty; // PWM1ռ<31>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM2_Duty; // PWM2ռ<32>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM3_Duty; // PWM3ռ<33>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM4_Duty; // PWM4ռ<34>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM5_Duty; // PWM5ռ<35>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM6_Duty; // PWM6ռ<36>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM7_Duty; // PWM7ռ<37>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM8_Duty; // PWM8ռ<38>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u8 PWM_DeadTime; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0~255
u8 PWM_CC1Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC1NEnable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC2Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC2NEnable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC3Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC3NEnable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC4Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC4NEnable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC5Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC6Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC7Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_CC8Enable; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2B6>/<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_Reload; // <20><><EFBFBD><EFBFBD>Ƚϵ<C8BD>Ԥװ<D4A4><D7B0>ʹ<EFBFBD><CAB9>, ENABLE,DISABLE
u8 PWM_Fast; // <20><><EFBFBD><EFBFBD>ȽϿ<C8BD><CFBF>ٹ<EFBFBD><D9B9><EFBFBD>ʹ<EFBFBD><CAB9>, ENABLE,DISABLE
u8 PWM1_SetPriority; // <20><><EFBFBD><EFBFBD>PWM1<4D><31><EFBFBD>ȼ<EFBFBD>, Priority_0,Priority_1,Priority_2,Priority_3
u8 PWM2_SetPriority; // <20><><EFBFBD><EFBFBD>PWM2<4D><32><EFBFBD>ȼ<EFBFBD>, Priority_0,Priority_1,Priority_2,Priority_3
u8 PWM3_SetPriority; // <20><><EFBFBD><EFBFBD>PWM3<4D><33><EFBFBD>ȼ<EFBFBD>, Priority_0,Priority_1,Priority_2,Priority_3
u8 PWM4_SetPriority; // <20><><EFBFBD><EFBFBD>PWM4<4D><34><EFBFBD>ȼ<EFBFBD>, Priority_0,Priority_1,Priority_2,Priority_3
u8 PWM5_SetPriority; // <20><><EFBFBD><EFBFBD>PWM4<4D><34><EFBFBD>ȼ<EFBFBD>, Priority_0,Priority_1,Priority_2,Priority_3
u8 PWM_EnoSelect; // <20><><EFBFBD>ͨ<EFBFBD><CDA8>ѡ<EFBFBD><D1A1>, ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
u8 PWM_PreLoad; // Ԥװ<D4A4><D7B0>, ENABLE,DISABLE
u8 PWM_PS_SW; // <20>л<EFBFBD><D0BB>˿<EFBFBD>, PWM1_SW_P10_P11,PWM1_SW_P20_P21,PWM1_SW_P60_P61
u8 PWM_CEN_Enable; // ʹ<>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u8 PWM_BrakeEnable; // ɲ<><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>, ENABLE,DISABLE
u8 PWM_MainOutEnable; // <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>, ENABLE,DISABLE
} PWMx_InitDefine;
typedef struct
{
u16 PWM1_Duty; // PWM1ռ<31>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM2_Duty; // PWM2ռ<32>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM3_Duty; // PWM3ռ<33>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM4_Duty; // PWM4ռ<34>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM5_Duty; // PWM5ռ<35>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM6_Duty; // PWM6ռ<36>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM7_Duty; // PWM7ռ<37>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
u16 PWM8_Duty; // PWM8ռ<38>ձ<EFBFBD>ʱ<EFBFBD><CAB1>, 0~Period
} PWMx_Duty;
extern PWMx_Duty PWMB_Duty;
u8 PWM_Configuration(u8 PWM, PWMx_InitDefine *PWMx);
void UpdatePwm(u8 PWM, PWMx_Duty *PWMx);
void PWM_config(void);
#endif