STM32的PWM问题

[复制链接]
1740|8
 楼主| siabc 发表于 2013-9-28 14:23 | 显示全部楼层 |阅读模式
如下程序有哪里写的不对吗?求指教.输不出PWM信号


#include "stm32f10x.h"
int main()
{
        GPIO_InitTypeDef my_GPIOA; //my_GPIOA是结构体变量
        TIM_TimeBaseInitTypeDef my_timer_base_init;
        TIM_OCInitTypeDef my_timer_oc;

        //配置GPIO
        my_GPIOA.GPIO_Pin=GPIO_Pin_7;
        my_GPIOA.GPIO_Speed=GPIO_Speed_50MHz;
        my_GPIOA.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//开启GPIOA和GPIO复用
        GPIO_Init(GPIOA,&my_GPIOA);
       

        //配置TIMER3
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
        TIM_DeInit(TIM3);
        TIM_InternalClockConfig(TIM3); //使用内部时钟
        my_timer_base_init.TIM_Prescaler=2;
        my_timer_base_init.TIM_CounterMode=TIM_CounterMode_Up;
        my_timer_base_init.TIM_Period=1000-1;
        my_timer_base_init.TIM_ClockDivision=0;
        TIM_TimeBaseInit(TIM3,&my_timer_base_init);


        //配置TIMER3的PWM
        my_timer_oc.TIM_OCMode=TIM_OCMode_PWM1;       
        my_timer_oc.TIM_Pulse=100;
        my_timer_oc.TIM_OCPolarity=TIM_OCPolarity_High;
        my_timer_oc.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OC2Init(TIM3,&my_timer_oc);//通道2输出
        TIM_Cmd(TIM3,ENABLE);
        while(1);
}
wozaiyanda 发表于 2013-9-28 16:28 | 显示全部楼层
加上my_timer_oc.TIM_OutputState = TIM_OutputState_Enable试试
wozaiyanda 发表于 2013-9-28 16:31 | 显示全部楼层
wozaiyanda 发表于 2013-9-28 16:28
加上my_timer_oc.TIM_OutputState = TIM_OutputState_Enable试试

不好意思,换个通道试试,有没有io占用的可能
airwill 发表于 2013-9-28 16:33 | 显示全部楼层
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//开启GPIOA和GPIO复用

开启时钟应该放在最前面.
 楼主| siabc 发表于 2013-9-28 20:07 | 显示全部楼层
wozaiyanda 发表于 2013-9-28 16:31
不好意思,换个通道试试,有没有io占用的可能

不存在占用IO口的问题,怎个最小系统板就让他输出个PWM,没有外接其他器件
 楼主| siabc 发表于 2013-9-28 20:07 | 显示全部楼层
airwill 发表于 2013-9-28 16:33
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//开启GPIOA和GPIO复用

开启 ...

已经放在最前面了,还是不行啊:'(
wozaiyanda 发表于 2013-9-28 20:35 | 显示全部楼层
siabc 发表于 2013-9-28 20:07
不存在占用IO口的问题,怎个最小系统板就让他输出个PWM,没有外接其他器件 ...

你是用示波器观察的吗,程序是没有问题的,你看看芯片支持pwm否,或是测量等细节问题
 楼主| siabc 发表于 2013-9-28 21:10 | 显示全部楼层
wozaiyanda 发表于 2013-9-28 20:35
你是用示波器观察的吗,程序是没有问题的,你看看芯片支持pwm否,或是测量等细节问题 ...

果然用示波器就行了,Keil仿真不行,太相信仿真了
戈卫东 发表于 2013-9-28 21:50 | 显示全部楼层
我用你的码,不改动,输出脉宽大约30多US,周期大约300多US, 没有问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部