初级会员

- 积分
- 60
- 金钱
- 60
- 注册时间
- 2014-11-7
- 在线时间
- 2 小时
|
5金钱
大家好,我用的是原子的STM32F103RCT6那款板子,在用TIM5输出PWM时,没有结果,2-4TIM都没问题,主要代码如下:
GPIO_InitTypeDef GPIO_InitStruct; //定义一个GPIO初始化结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; //定义定时器初始化结构体
TIM_OCInitTypeDef TIM_OCInitStruct; //TIM Output Compare Init structure definition
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; //设置GPIO口工作模式为推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO口电路工作速率为50MHz
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; //设置GPIO的引脚下标为0,即有PA0引脚输出PWM信号
GPIO_Init(GPIOA,&GPIO_InitStruct);
//<<<<<<<<<<<<<<<<<<<<<<定时器初始化>>>>>>>>>>>>>>>>>>>>>
TIM_TimeBaseStruct.TIM_Period = period; //当定时器从 0 计数到 period ,即为 period 次,为一个定时周期
TIM_TimeBaseStruct.TIM_Prescaler = 0; //设置预分频:不预分频,即为 36MHz
TIM_TimeBaseStruct.TIM_ClockDivision = 0; //设置时钟分频系数:不分频
TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStruct);
//<<<<<<<<<<<<<<<<<< WM初始化>>>>>>>>>>>>>>>>>>
//PWM1 Mode configuration:
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; //配置为 PWM 模式 1
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = CCR_Value; //设置跳变值,当计数器计数到这个值时,电平发生跳变
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//当定时器计数值小于 CCR1_Value 时为高电平
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能端口A端口时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //TIM5时钟使能
TIM_OC1Init(TIM5, &TIM_OCInitStruct); //使能通道1
TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM5, ENABLE);
// TIMx enable counter
TIM_Cmd(TIM5, ENABLE); //使能定时器
|
最佳答案
查看完整内容[请看2#楼]
参考下别人的代码:http://www.openedv.com/posts/list/42373.htm
|