、、、pwm函数、、、
void TIM3_CH1_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR |= 1<<1;//使能tim3时钟
RCC->APB2ENR |= 1<<0;//映射使能
RCC->APB2ENR |= 1<<4;//c端口使能
AFIO->MAPR &=0XFFFF3FF;//清除映射端口
AFIO->MAPR |= 1<<11;//映射设置
GPIOC->CRL |=0X00000000;//端口清除
GPIOC->CRL |=0X0B000000;//复功能推挽输出 50hz
GPIOC->ODR |=1<<6;
TIM3->ARR |=arr;
TIM3->PSC |=psc;
TIM3->CCMR1 |=7<<6;//pwm2
TIM3->CCER |=1<<0;//输出使能
//TIM3->CCER |=1<<1;//低电平有效
TIM3->CCMR1 |=1<<3;//预装载使能
TIM3->CR1 |=1<<7;//使能计数缓存器
TIM3->CR1 |=1<<0;//使能
}
、、、主函数、、、
int main()
{
u16 i=0;
u16 fx;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
TIM3_CH1_PWM_Init(500,72-1); //计数500 不分频
while(1)
{
if(fx==0)
{
i++;
if(i==300)
{
fx=1;
}
}
else
{
i--;
if(i==0)
{
fx=0;
}
}
TIM3->CCR1 = i;
delay_ms(10);
}