[STM32F1] PWM输出没有反应

[复制链接]
3162|20
 楼主| liuliuzhou 发表于 2015-7-20 14:56 | 显示全部楼层 |阅读模式
void TIM_Configuration(void)
{
        /* 定义 TIM_TimeBase 初始化结构体 TIM_TimeBaseStructure */
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        /* 定义 TIM_OCInit 初始化结构体 TIM_OCInitStructure */
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       
        /*
        *          计数重载值为999
        *          分频值为(72000)
        *          时钟分割0
        *          向上计数模式
        */
        TIM_TimeBaseStructure.TIM_Period = 999;
        TIM_TimeBaseStructure.TIM_Prescaler = 72000-1;  
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;       
        TIM_TimeBaseInit(TIM5 , &TIM_TimeBaseStructure);

        /*         设置 OC1 通道
        *          工作模式为 PWM 输出模式
        *          使能比较匹配输出极性
        *          时钟分割0
        *          向上计数模式

        *        得到的占空比分别为 50%,
        */

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  //频率=72000K/((71999+1)*(999+1))=1Hz
)        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;       
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

        TIM_OCInitStructure.TIM_Pulse =500 ;        //占空比500/(999+1)=50%
        TIM_OC1Init(TIM5, &TIM_OCInitStructure);

        /* 使能预装载寄存器 */
        TIM_OC1PreloadConfig(TIM5 , TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM5, ENABLE);
        /* 启动 TIM 计数 */
        TIM_Cmd(TIM5 , ENABLE);       

}

void GPIO_Configuration(void)
{
        /* 定义 GPIO 初始化结构体 GPIO_InitStructure */
        GPIO_InitTypeDef GPIO_InitStructure;

        /* 设置 GPIOA 上的 TIM5 1通道对应引脚 PA.0,*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_SetBits(GPIOA, GPIO_Pin_1);

}
我用示波器查看没有脉冲输出,各位大神,哪出问题了?我用的是自制的板子,至于PA0,PA1


 楼主| liuliuzhou 发表于 2015-7-20 15:14 | 显示全部楼层
我用的是自制的板子,只有PA0,PA1.
 楼主| liuliuzhou 发表于 2015-7-20 15:20 | 显示全部楼层
我把PA1设置为常亮,PA0设置为PWM输出,求大神解惑。
amanda_s 发表于 2015-7-20 16:24 | 显示全部楼层
对比官方的例程,仔细检查初始化代码。
GPIO和TIMER的clock是否正确的使能,GPIO的初始化是否正确...。
PA0设置要为GPIO_Mode_AF_PP。
 楼主| liuliuzhou 发表于 2015-7-20 16:44 | 显示全部楼层
amanda_s 发表于 2015-7-20 16:24
对比官方的例程,仔细检查初始化代码。
GPIO和TIMER的clock是否正确的使能,GPIO的初始化是否正确...。
PA0 ...

可是TIM5的输出通道1,默认就是与PA0相连的。
 楼主| liuliuzhou 发表于 2015-7-20 16:46 | 显示全部楼层
可是TIM5的输出通道1,默认就是与PA0相连的。
捕获1.PNG
songchenping 发表于 2015-7-20 17:25 | 显示全部楼层
PA0默认是模拟输入的。你得设置成AF。
fanxsd 发表于 2015-7-20 17:27 | 显示全部楼层
你用的是哪个 片子具体型号,然后查看数据手册 看看是否支持TIM5.例如STM32F103X8   、 STM32F103XB 是没有支持TIM5的。
cgm88888 发表于 2015-7-20 19:52 来自手机 | 显示全部楼层
没使能时钟
 楼主| liuliuzhou 发表于 2015-7-21 09:44 | 显示全部楼层

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5 , ENABLE);
如果这是使能时钟的话,我已经使能了。
 楼主| liuliuzhou 发表于 2015-7-21 09:46 | 显示全部楼层
fanxsd 发表于 2015-7-20 17:27
你用的是哪个 片子具体型号,然后查看数据手册 看看是否支持TIM5.例如STM32F103X8   、 STM32F103XB 是没有 ...

我用的是STM32F103VE系列的,是支持TIM5的。
 楼主| liuliuzhou 发表于 2015-7-21 09:56 | 显示全部楼层
songchenping 发表于 2015-7-20 17:25
PA0默认是模拟输入的。你得设置成AF。

PA0我不是设置成了开漏输出吗?设置成AF那不是要映射到其他管脚?
songchenping 发表于 2015-7-21 10:10 | 显示全部楼层
liuliuzhou 发表于 2015-7-21 09:56
PA0我不是设置成了开漏输出吗?设置成AF那不是要映射到其他管脚?

不是映射的。你得设置啊。默认的都是GPIO,你的设置AF功能选择啊。
-|continue;|- 发表于 2015-7-21 10:13 | 显示全部楼层
songchenping 发表于 2015-7-20 17:25
PA0默认是模拟输入的。你得设置成AF。

为头像:handshake
 楼主| liuliuzhou 发表于 2015-7-21 10:25 | 显示全部楼层
songchenping 发表于 2015-7-21 10:10
不是映射的。你得设置啊。默认的都是GPIO,你的设置AF功能选择啊。

,刚刚接触STM,没听懂什么意思。
songchenping 发表于 2015-7-21 10:42 | 显示全部楼层
liuliuzhou 发表于 2015-7-21 10:25
,刚刚接触STM,没听懂什么意思。

每个管脚的第一功能都是普通的IO口,即GPIO,如果想用到其他映射功能,就得设置AF寄存器,你可以仔细看一下手册。
 楼主| liuliuzhou 发表于 2015-7-21 11:15 | 显示全部楼层
songchenping 发表于 2015-7-21 10:42
每个管脚的第一功能都是普通的IO口,即GPIO,如果想用到其他映射功能,就得设置AF寄存器,你可以仔细看一 ...

恩恩,搞定了,万分感谢。
 楼主| liuliuzhou 发表于 2015-7-21 11:23 | 显示全部楼层
还想问各位大神,怎么控制脉冲数?有看见网上说用同一定时器的另一通道来设置定时产生中断,可是我不是把这个定时器都设定了PWM输出了吗?
 楼主| liuliuzhou 发表于 2015-7-21 12:16 | 显示全部楼层
songchenping 发表于 2015-7-21 12:42 | 显示全部楼层
liuliuzhou 发表于 2015-7-21 11:23
还想问各位大神,怎么控制脉冲数?有看见网上说用同一定时器的另一通道来设置定时产生中断,可是我不是把这 ...

有些定时器有好几个通道,不同的通道可以实现不同的功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

42

帖子

1

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