打印

STM32的PWM问题

[复制链接]
1284|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复用

开启时钟应该放在最前面.

使用特权

评论回复
5
siabc|  楼主 | 2013-9-28 20:07 | 只看该作者
wozaiyanda 发表于 2013-9-28 16:31
不好意思,换个通道试试,有没有io占用的可能

不存在占用IO口的问题,怎个最小系统板就让他输出个PWM,没有外接其他器件

使用特权

评论回复
6
siabc|  楼主 | 2013-9-28 20:07 | 只看该作者
airwill 发表于 2013-9-28 16:33
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//开启GPIOA和GPIO复用

开启 ...

已经放在最前面了,还是不行啊:'(

使用特权

评论回复
7
wozaiyanda| | 2013-9-28 20:35 | 只看该作者
siabc 发表于 2013-9-28 20:07
不存在占用IO口的问题,怎个最小系统板就让他输出个PWM,没有外接其他器件 ...

你是用示波器观察的吗,程序是没有问题的,你看看芯片支持pwm否,或是测量等细节问题

使用特权

评论回复
8
siabc|  楼主 | 2013-9-28 21:10 | 只看该作者
wozaiyanda 发表于 2013-9-28 20:35
你是用示波器观察的吗,程序是没有问题的,你看看芯片支持pwm否,或是测量等细节问题 ...

果然用示波器就行了,Keil仿真不行,太相信仿真了

使用特权

评论回复
9
戈卫东| | 2013-9-28 21:50 | 只看该作者
我用你的码,不改动,输出脉宽大约30多US,周期大约300多US, 没有问题.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

38

帖子

0

粉丝