OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2927|回复: 2

大家好,我用TIM1的通道1产生互补的PWM,碰到一个问题

[复制链接]

7

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-3-7
在线时间
13 小时
发表于 2016-6-12 11:54:38 | 显示全部楼层 |阅读模式
5金钱
大家好,我最近用高级定时器1的通道1产生互补的PWM,软件仿真没有问题,但是下载到战舰STM32后用示波器看不到死区时间?请帮忙解决下,谢谢。

下面是我的高级定时器1配置代码main函数和TIME1_Init(u16 pre,u16 arr):
main函数如下:
int main(void)
{
u16 key;
delay_init();       
LED_Init();

TIME1_Init(7199,4499);
TIM_SetCompare1(TIM1,2999);       
while(1)
        {
         LED1=!LED1;
        delay_ms(100);
        }
}
TIM1配置函数如下:
#include "time1.h"
//TIM1通道1产生互补PWM(带死区)
//CH1--PA8 CH2--PB13
void TIME1_Init(u16 pre,u16 arr)
{
GPIO_InitTypeDef GPIO_InitStruct;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_BDTRInitTypeDef TIM_BDTRInitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);       

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;   //PA8
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;   
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);       
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;   //PB13
GPIO_Init(GPIOB,&GPIO_InitStruct);
       
TIM_TimeBaseInitStruct.TIM_Prescaler=pre;//分频
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInitStruct.TIM_Period=arr;//重装载值
TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);

TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_OutputNState=TIM_OutputNState_Enable;
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCNPolarity_High;
TIM_OC1Init(TIM1,&TIM_OCInitStruct);

TIM_BDTRInitStruct.TIM_OSSRState=TIM_OSSRState_Disable;
TIM_BDTRInitStruct.TIM_OSSIState=TIM_OSSIState_Disable;
TIM_BDTRInitStruct.TIM_LOCKLevel=TIM_LOCKLevel_OFF;
TIM_BDTRInitStruct.TIM_DeadTime=0x02;//配置死去时间
TIM_BDTRInitStruct.TIM_Break=TIM_Break_Disable;
TIM_BDTRInitStruct.TIM_BreakPolarity=TIM_BreakPolarity_Low;
TIM_BDTRInitStruct.TIM_AutomaticOutput=TIM_AutomaticOutput_Disable;
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStruct);
TIM_CtrlPWMOutputs(TIM1,ENABLE);

TIM_Cmd(TIM1,ENABLE);
}


最佳答案

查看完整内容[请看2#楼]

参考论坛其他网友的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-12 11:54:39 | 显示全部楼层
参考论坛其他网友的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-3-7
在线时间
13 小时
 楼主| 发表于 2016-6-15 19:00:46 | 显示全部楼层
原子哥  帮我看下怎么回事?发帖都已经好几天了
大家用高级定时器,没有遇到过这样的问题吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 10:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表