芯片:STM32F103RBT6,库:3.4.0,晶振:外部8MHz
时钟设置
void RCC_cfg()
{ ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
FLASH_SetLatency(FLASH_Latency_2);
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08) {}
}
}
两种方法输出PWM:
1、定时器比较输出法:示波器显示的结果6kHz.
TIM_Pulse = 2000;TIM_Period = 65535;TIM_Prescaler = 2;
TIM_SetCompare1(TIM2, 2000);
这种比较输出法我不知道是怎么计算出来的。
2、PWM输出法:示波器显示结果1.2MHz.
TIM_Pulse = 14;TIM_Period = 29;TIM_Prescaler = 0;
这种方法和我计算出来的不一样啊,为什么?按照我计算的TIM_Period = 59,才输出的1.2MHz,请高手指点小弟一下吧。
|