2025-06-27 00:32:57 +08:00
|
|
|
|
/***
|
|
|
|
|
***************************************************************************
|
|
|
|
|
* @file lcd_pwm.c
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm,<EFBFBD><EFBFBD>ΪLCD<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿı䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĺ<EFBFBD><EFBFBD>⣬
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>Ӧͨ<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
* TIM_OC2Init();
|
|
|
|
|
* TIM_OC2PreloadConfig();
|
|
|
|
|
* TIM_SetCompare2();
|
|
|
|
|
******************************************************************************
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
***************************************************************************
|
|
|
|
|
***/
|
|
|
|
|
#include "lcd_pwm.h"
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
static u16 LCD_PwmPeriod = 500; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
static u32 LCD_PwmPrescaler = 90 - 1; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ƶֵ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
static u8 g_pulse=100;
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TIM4 PWM CH2 IO<49>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//
|
|
|
|
|
void LCD_PWM_GPIO(void)
|
|
|
|
|
{
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//IO<49><4F>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
RCC_AHB1PeriphClockCmd (LCD_PWM_CLK, ENABLE);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//IO<49><4F><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
GPIO_PinAFConfig(LCD_PWM_PORT,LCD_PWM_PinSource,LCD_PWM_AF);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//IO<49><4F><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //<2F>ٶ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC> TIM4_CH2 <20><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_Pin = LCD_PWM_PIN;
|
|
|
|
|
GPIO_Init(LCD_PWM_PORT, &GPIO_InitStructure);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD PWM ռ<>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pulse - ռ<>ձȣ<D5B1><C8A3><EFBFBD>Χ 0-100
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//
|
|
|
|
|
void LCD_PwmSetPulse (u8 pulse)
|
|
|
|
|
{
|
|
|
|
|
u16 compareValue ;
|
|
|
|
|
g_pulse=pulse;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
compareValue = pulse * LCD_PwmPeriod / 100; //<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD>ñȽ<C3B1>ֵ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
TIM_SetCompare2(LCD_TIM,compareValue);
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 LCD_PwmGetPulse (void)
|
|
|
|
|
{
|
|
|
|
|
return g_pulse;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD PWM <20><>ʼ<EFBFBD><CABC>
|
|
|
|
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pulse - LCD<43><44><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>
|
|
|
|
|
// ˵<><CBB5><EFBFBD><EFBFBD>LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWMƵ<4D>ʹ̶<CAB9>Ϊ10KHz
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//
|
|
|
|
|
void LCD_PWMinit(u8 pulse)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
|
|
|
|
|
TIM_OCInitTypeDef TIM_OCInitStructure;
|
|
|
|
|
g_pulse=pulse;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
LCD_PWM_GPIO (); //<2F><>ʼ<EFBFBD><CABC>IO<49><4F>
|
|
|
|
|
RCC_APB1PeriphClockCmd(LCD_TIM_CLK,ENABLE); ///ʹ<><CAB9>ʱ<EFBFBD><CAB1>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
TIM_TimeBaseInitStructure.TIM_Period = LCD_PwmPeriod; //<2F><><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
TIM_TimeBaseInitStructure.TIM_Prescaler= LCD_PwmPrescaler; //<2F><>Ƶϵ<C6B5><CFB5>
|
|
|
|
|
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //<2F><><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
TIM_TimeBaseInit(LCD_TIM,&TIM_TimeBaseInitStructure);//<2F><>ʼ<EFBFBD><CABC>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//PWM<57><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWMģʽ1
|
|
|
|
|
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //ʹ<>ܱȽ<DCB1><C8BD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
TIM_OC2Init(LCD_TIM, &TIM_OCInitStructure); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> 2
|
|
|
|
|
TIM_OC2PreloadConfig(LCD_TIM, TIM_OCPreload_Enable); //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>رȽ<D8B1><C8BD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> 2 <20><>ֵ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
TIM_ARRPreloadConfig(LCD_TIM,ENABLE);//ʹ<><CAB9><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
TIM_Cmd(TIM4,ENABLE); //ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
LCD_PwmSetPulse (pulse); //<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|