新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2016-3-7
- 在线时间
- 13 小时
|

楼主 |
发表于 2016-6-12 11:55:14
|
显示全部楼层
问题没发全,重发一下:
大家好,我最近用高级定时器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);
} |
|