首先我们确认好的输出PWM引脚是
PA6 TIM3 CH1 作为输出1
PA7 TIM3 CH2 作为输出2
还是打开32固件库关于PWM输出的文件
路径如下
\STM32固件库v3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\TIM\PWM_Output
找到主函数 把里面内容全部复制到我们创建的函数
void TIM3_PWM_Init(void)里面
void TIM3_PWM_Init(void){
}
因为代码量太大影响读阅读所以就不贴出来了
接着我们复制解构体名称
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
然后我们把预分屏值写入
uint16_t PrescalerValue = 0;
然后是CCR1的值写入
uint16_t CCR1_Val = 333;
然后我们把其余CCR配置的函数删除
被其余CCR的函数如下
/* PWM1 Mode configuration: Channel2 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* PWM1 Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR3_Val;
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* PWM1 Mode configuration: Channel4 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
TIM_OC4Init(TIM3, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
接着针对我们报错的两个函数进行配置
其实固件库是利用函数引用
我们只需要把其相应的函数模块替换名称就可以了
首先是RCC的 文件
void RCC_Configuration(void)
{
/* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
}
我们用到的PWM输出是
TIM3 CCR2 对应的就是PA7引脚
TIM2 CCR2 对应的就是PA1引脚
所以我们只保留 TIM3 和PA口 和 复用的时钟
/* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* GPIOA and GPIOB