如题,我想用TIM1的通道1(PA8),用作PWM输出,然后将PA8连接至PC10(LCD的背光控制引脚),来实现LCD屏幕亮度渐变的效果。
首先,注释掉LCD_Init中的 LCD_LED=1;//点亮背光,然后注释掉LED_Init中的PA8设置,然后修改 PWM_Init,如下:
void PWM_Init(u16 arr,u16 psc)
{
RCC->APB2ENR|=1<<11; //TIM1时钟使能
GPIOA->CRH&=0XFFFFFFF0;//PA8输出
GPIOA->CRH|=0X0000000B;//复用功能输出
GPIOA->ODR|=1<<8;//PA8上拉
TIM1->ARR=arr;//设定计数器自动重装值
TIM1-> SC=psc;//预分频器不分频
TIM1->CCMR1|=7<<4; //CH1 PWM2模式
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCER|=1<<0; //OC1 输出使能
TIM1->CR1=0x0080; //ARPE使能
TIM1->CR1|=0x01; //使能定时器1
}
再修改timer.h中的#define LED0_PWM_VAL TIM1->CCR1
main函数如下:
int main(void)
{
u8 dir=1;
u16 pwmval=0;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LED_Init();
LCD_Init();
  WM_Init(900,0);
while(1)
{
LCD_Clear(BLUE);
delay_ms(10);
if(dir)pwmval+=50;
else pwmval-=50;
if(pwmval>3000)dir=0;
if(pwmval==0)dir=1;
LED0_PWM_VAL=pwmval;
}
}
烧了程序后,屏幕没反应,之前有做过直接用TIM3的CH2(原开发板实验的通道),可行,但是修改成TIM1的CH1就不行了,求教哪里出错了~~~~
|