Files
pwm32e_pro/project/example/ble/ble_peripheral/app/src/PWM.h
T
2026-07-28 17:51:50 +08:00

159 lines
4.3 KiB
C

/*!
* \file pwm_test.h
*
* \brief The head file of pwm_test.c
*
* \copyright Revised BSD License, see section \ref LICENSE.
*
* \code
*
* _ __ _ ________ _
* | |/ /(_)___ / ____/ /_ (_)___
* | // / __ \/ / / __ \/ / __ \
* / |/ / / / / /___/ / / / / /_/ /
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
* /_/
* (C) 2022-2025 XinChip
*
* \endcode
*
* \author ( XinChip ) Alex-J
*
* \author ( XinChip )
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __PWM_H__
#define __PWM_H__
#ifdef __cplusplus
extern "C" {
#endif
/*-----------------------------------------------------------------------------------
INCLUDE HEADE FILES
------------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <math.h>
/*------------------------------------------------------------------------------------
Macros
-------------------------------------------------------------------------------------*/
#define MAXDUTY 255
#define MINDUTY 0
#define GAMMA 2.2
#define IO_PWM_W (GPIO_1)
#define IO_PWM_C (GPIO_2)
#define _deadTime (6)
extern uint16_t timeCnt;
extern uint16_t W_PWM;
extern uint16_t C_PWM;
extern uint16_t W_PWM_duty;//初始化暖光
extern uint16_t C_PWM_duty;
extern uint16_t deadTime; //2*deadTime+deadTime_C+deadTime_W=20;这个是修改死区的时间。这三个变量加起来要是20, 规定好了的,当时用的10的死区,后面修改了,不破坏原来的封装
extern uint16_t deadTime_C; //
extern uint16_t deadTime_W;
extern uint8_t driveMode;
extern uint8_t PWMMAX;
extern uint8_t Brightness;
#define BRIGHTNESS_MIN_PERCENT 1U
#define BRIGHTNESS_MAX_PERCENT 100U
#define BRIGHTNESS_RF_STEP_PERCENT 10U
#define SPEED_MIN_LEVEL 0U
#define SPEED_MAX_LEVEL 9U
#define DEVIATION_FREQ 10
#define DEVIATION_DUTYCYCLE 10
#define CAPTURE_DATA_MAX 101
#define CAPTURE_VALID_POS 4
/*------------------------------------------------------------------------------------
TypeDef
-------------------------------------------------------------------------------------*/
typedef enum
{
PWM_CAP_IDLE = 0,
PWM_CAP_FREQ,
PWM_CAP_DUTYCYCLE,
PWM_CAP_RIGHT,
PWM_CAP_ERROR,
} PWM_CAP_STA_TypeDef;
typedef enum
{
PWM_BRK_IDLE = 0,
PWM_BRK_START,
PWM_BRK_STOP,
} PWM_BRK_STA_TypeDef;
typedef enum
{
PWM_BRK_CAP_VALID,
PWM_BRK_CAP_RECOVERY,
PWM_BRK_CAP_ERROR,
} PWM_BRK_CAP_STA_TypeDef;
typedef struct pwm_ch_cap_freq
{
uint16_t ch0_cap_freq;
uint16_t ch1_cap_freq;
uint16_t ch2_cap_freq;
} pwm_ch_cap_freq_t;
typedef struct pwm_ch_cap_dutycycle
{
uint16_t ch0_cap_dutycycle;
uint16_t ch1_cap_dutycycle;
uint16_t ch2_cap_dutycycle;
} pwm_ch_cap_dutycycle_t;
typedef struct pwm_ch_cap_type
{
uint8_t ch0_cap_type;
uint8_t ch1_cap_type;
uint8_t ch2_cap_type;
} pwm_ch_cap_type_t;
typedef enum
{
PWM_CAP_TYPE_FREQ,
PWM_CAP_TYPE_DUTYCYCLE,
} PWM_CAP_TYPE_TypeDef;
/*------------------------------------------------------------------------------------
Global Variables
-------------------------------------------------------------------------------------*/
extern uint8_t pwm_red_idx;
extern uint8_t pwm_green_idx;
extern uint8_t pwm_blue_idx;
extern uint8_t sss;
/*------------------------------------------------------------------------------------
Exported Functions
-------------------------------------------------------------------------------------*/
void _PWM_INIT();
void PWM_SetDuty(uint8_t PWMX ,uint8_t duty);
void app_pwm_init(void);
void UpdateDisplay(void);
void UpdateDisplay_1(void);
void switch_pwm_pins(uint8_t red_pwm, uint8_t green_pwm, uint8_t blue_pwm);
void adc_Init();
void My_ADC_Get_Value();
void gpio_pullup_input_inter_test();
void Bridge_Init(void);
void Bridge_Off(void);
void Bridge_Service_1ms(void);
void Bridge_Deadtime_Expired(void);
uint8_t Bridge_PauseForFlash(void);
void Bridge_ResumeAfterFlash(uint8_t paused);
#ifdef __cplusplus
}
#endif
#endif /* __PWM_TEST_H__ */