打印
[STM32F1]

PWM输出没有反应

[复制链接]
2578|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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。

使用特权

评论回复
5
liuliuzhou|  楼主 | 2015-7-20 16:44 | 只看该作者
amanda_s 发表于 2015-7-20 16:24
对比官方的例程,仔细检查初始化代码。
GPIO和TIMER的clock是否正确的使能,GPIO的初始化是否正确...。
PA0 ...

可是TIM5的输出通道1,默认就是与PA0相连的。

使用特权

评论回复
6
liuliuzhou|  楼主 | 2015-7-20 16:46 | 只看该作者
可是TIM5的输出通道1,默认就是与PA0相连的。

捕获1.PNG (63.5 KB )

捕获1.PNG

使用特权

评论回复
7
songchenping| | 2015-7-20 17:25 | 只看该作者
PA0默认是模拟输入的。你得设置成AF。

使用特权

评论回复
8
fanxsd| | 2015-7-20 17:27 | 只看该作者
你用的是哪个 片子具体型号,然后查看数据手册 看看是否支持TIM5.例如STM32F103X8   、 STM32F103XB 是没有支持TIM5的。

使用特权

评论回复
9
cgm88888| | 2015-7-20 19:52 | 只看该作者
没使能时钟

使用特权

评论回复
10
liuliuzhou|  楼主 | 2015-7-21 09:44 | 只看该作者

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5 , ENABLE);
如果这是使能时钟的话,我已经使能了。

使用特权

评论回复
11
liuliuzhou|  楼主 | 2015-7-21 09:46 | 只看该作者
fanxsd 发表于 2015-7-20 17:27
你用的是哪个 片子具体型号,然后查看数据手册 看看是否支持TIM5.例如STM32F103X8   、 STM32F103XB 是没有 ...

我用的是STM32F103VE系列的,是支持TIM5的。

使用特权

评论回复
12
liuliuzhou|  楼主 | 2015-7-21 09:56 | 只看该作者
songchenping 发表于 2015-7-20 17:25
PA0默认是模拟输入的。你得设置成AF。

PA0我不是设置成了开漏输出吗?设置成AF那不是要映射到其他管脚?

使用特权

评论回复
13
songchenping| | 2015-7-21 10:10 | 只看该作者
liuliuzhou 发表于 2015-7-21 09:56
PA0我不是设置成了开漏输出吗?设置成AF那不是要映射到其他管脚?

不是映射的。你得设置啊。默认的都是GPIO,你的设置AF功能选择啊。

使用特权

评论回复
14
-|continue;|-| | 2015-7-21 10:13 | 只看该作者
songchenping 发表于 2015-7-20 17:25
PA0默认是模拟输入的。你得设置成AF。

为头像:handshake

使用特权

评论回复
15
liuliuzhou|  楼主 | 2015-7-21 10:25 | 只看该作者
songchenping 发表于 2015-7-21 10:10
不是映射的。你得设置啊。默认的都是GPIO,你的设置AF功能选择啊。

,刚刚接触STM,没听懂什么意思。

使用特权

评论回复
16
songchenping| | 2015-7-21 10:42 | 只看该作者
liuliuzhou 发表于 2015-7-21 10:25
,刚刚接触STM,没听懂什么意思。

每个管脚的第一功能都是普通的IO口,即GPIO,如果想用到其他映射功能,就得设置AF寄存器,你可以仔细看一下手册。

使用特权

评论回复
17
liuliuzhou|  楼主 | 2015-7-21 11:15 | 只看该作者
songchenping 发表于 2015-7-21 10:42
每个管脚的第一功能都是普通的IO口,即GPIO,如果想用到其他映射功能,就得设置AF寄存器,你可以仔细看一 ...

恩恩,搞定了,万分感谢。

使用特权

评论回复
18
liuliuzhou|  楼主 | 2015-7-21 11:23 | 只看该作者
还想问各位大神,怎么控制脉冲数?有看见网上说用同一定时器的另一通道来设置定时产生中断,可是我不是把这个定时器都设定了PWM输出了吗?

使用特权

评论回复
19
liuliuzhou|  楼主 | 2015-7-21 12:16 | 只看该作者

使用特权

评论回复
20
songchenping| | 2015-7-21 12:42 | 只看该作者
liuliuzhou 发表于 2015-7-21 11:23
还想问各位大神,怎么控制脉冲数?有看见网上说用同一定时器的另一通道来设置定时产生中断,可是我不是把这 ...

有些定时器有好几个通道,不同的通道可以实现不同的功能。

使用特权

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

本版积分规则

11

主题

42

帖子

1

粉丝