通用定时器产生pwm信号失败

syjsyj000 2017-08-02 10:32:02
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_tim.h"
TIM_TimeBaseInitTypeDef TIM3_TimeBaseStructure;
TIM_OCInitTypeDef TIM3_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
void rcc_configuration(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB,ENABLE);
}
void time_init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);

TIM3_TimeBaseStructure.TIM_Prescaler=2;
TIM3_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM3_TimeBaseStructure.TIM_Period =24000;
TIM3_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM3_TimeBaseStructure.TIM_RepetitionCounter=0x0;
TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure);

TIM3_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM3_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM3_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM3_OCInitStructure.TIM_Pulse=18000;
TIM_OC2Init(TIM3,&TIM3_OCInitStructure);

TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_Cmd(TIM3,ENABLE);
}
int main(void)
{
rcc_configuration();
time_init();
while(1)
{
TIM3_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM3_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM3_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM3_OCInitStructure.TIM_Pulse=18000;
TIM_OC2Init(TIM3,&TIM3_OCInitStructure);
}
}
...全文
186 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
六翅金蝉 2017-08-02
  • 打赏
  • 举报
回复
用到重映射的时候,是不是要把复用时钟打开?还有你死循环里面不要加那几行程序。
zgl7903 2017-08-02
  • 打赏
  • 举报
回复
定时器初始化不需要在死循环里执行吧?

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧