查看资料可得PWM频率=72M/(arr+1)(psc+1),我想得到500HZ的频率 理论上ARR=499,PSC=287 是可以得到500HZ的,但是为什么我仿真的时候才476HZ呢? 程序如下
void pwm_init(u16 arr,u16 psc) //PWM初始化函数    WM频率 f=72M/((arr+1)*(psc*1))
{
RCC->APB1ENR |= 1<<1; //开TIM3定时器的使能
GPIOA->CRH &= 0XFFFFFFF0;
GPIOA->CRH |= 0X00000004; //PA8浮空输入
GPIOA->CRL &= 0X0FFFFFFF;
GPIOA->CRL |= 0XB0000000; //PA7复用上拉
//**************************************
GPIOA->CRL &= 0XF0FFFFFF;
GPIOA->CRL |= 0X0B000000; //PA6复用上拉
GPIOA->ODR |= 1<<6;
TIM3->CCMR1 |= 7<<4; //CH1 PWM模式2
TIM3->CCER |= 1<<0;
//**************************************
GPIOA->ODR |= 1<<7;
TIM3->ARR = arr;
TIM3->  SC = psc;
TIM3->CCMR1 |= 6<<12; //CH2 PWM模式1
TIM3->CCER |= 1<<4;
TIM3->CR1 |= 1<<7;
TIM3->CR1 |= 1<<0;
}
|