历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2019年08月21日 | STM32F103ZET定时器TIM1输出六路带死区互补PWM波形

2019-08-21 来源:eefocus

使用默认引脚输出6路PWM,#define FullRemap_TIM1则重映射 PIN脚;


遗留问题:调用TIM_CCxNCmd(TIM1, TIM_Channel_X, TIM_CCx_Enable);导致互补PWM无输出。


TIM_CCxCmd(TIM1, TIM_Channel_X, TIM_CCx);确可以正常开关PWM输出;


遇到问题:PA8、10、PB13、14、15均有输出,PA9无输出;


问题解决:虽然没初始化UART1模块,但打开RCC_APB2Periph_USART1时钟导致;


void Timer1_Init(void)

    TIM_OCInitTypeDef TIM_OCInitStructure; 

    GPIO_InitTypeDef GPIO_InitStructure; 

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 

    TIM_BDTRInitTypeDef TIM_BDTRInitStructure; 

     

NVIC_InitTypeDef NVIC_InitStructure;

     

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); 

 

#ifdef FullRemap_TIM1

    GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE); 

#endif

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; 

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_Init(GPIOA, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; 

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_Init(GPIOB, &GPIO_InitStructure); 

#ifdef FullRemap_TIM1

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9

    |GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14; 

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_Init(GPIOE, &GPIO_InitStructure); 

#endif

    TIM_TimeBaseStructure.TIM_Period    = 5999;//ARR 10K 

    TIM_TimeBaseStructure.TIM_CounterMode       = TIM_CounterMode_Up; 

    TIM_TimeBaseStructure.TIM_Prescaler = 99;//??????1us 

    TIM_TimeBaseStructure.TIM_ClockDivision     = TIM_CKD_DIV1; 

    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000; 

    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); 

     

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 

    TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable; 

    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; 

    TIM_OCInitStructure.TIM_Pulse = 1000;//CCR 

    TIM_OCInitStructure.TIM_OCPolarity   = TIM_OCPolarity_Low; 

    TIM_OCInitStructure.TIM_OCNPolarity  = TIM_OCNPolarity_Low; //关断后PWM默认输出状态

    TIM_OCInitStructure.TIM_OCIdleState  = TIM_OCIdleState_Reset; 

    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; 

    TIM_OC1Init(TIM1, &TIM_OCInitStructure); 

 

  TIM_OCInitStructure.TIM_Pulse = 2000;//CCR 

  TIM_OC2Init(TIM1, &TIM_OCInitStructure); 

 

    TIM_OCInitStructure.TIM_Pulse = 3000;//CCR 

  TIM_OC3Init(TIM1, &TIM_OCInitStructure); 

 

    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); 

TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable); 

TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable); 

 

    TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; 

    TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; 

    TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF; 

    TIM_BDTRInitStructure.TIM_DeadTime = 0;

    TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable; 

    TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High; 

    TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable; 

TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure); 

 

NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

NVIC_Init(&NVIC_InitStructure); 

 

    TIM_ITConfig(TIM1,TIM_IT_Update, ENABLE);

    TIM_ARRPreloadConfig(TIM1, ENABLE); 

    TIM_ClearITPendingBit(TIM1, TIM_IT_Update);

TIM_CtrlPWMOutputs(TIM1, ENABLE); 

    TIM_Cmd(TIM1, ENABLE); 

 

//TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);

//TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);

//TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);

//TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);

//TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);

//TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);

}

void TIM1_UP_IRQHandler(void) //

{

if(TIM_GetITStatus(TIM1,TIM_IT_Update)!=RESET)

{

TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

}

}



推荐阅读

史海拾趣

Cornerstone Sensors公司的发展小趣事

Cornerstone Sensors公司成立于电子行业的蓬勃发展时期。创立初期,公司就明确了以传感器技术为核心的发展方向。公司聚集了一批优秀的工程师和科学家,致力于研发高精度、高稳定性的传感器产品。经过数年的技术积累和产品研发,Cornerstone Sensors逐渐在传感器领域崭露头角,其产品质量和技术水平得到了行业的广泛认可。

3E SECURITY公司的发展小趣事

3E SECURITY公司自创立之初,便以技术创新为核心竞争力。在电子安全领域,公司不断投入研发,推出了一系列具有自主知识产权的安全产品。其中,一款智能安全监控系统凭借其高度集成和智能化特点,迅速在市场上占据了一席之地。通过不断的技术革新,3E SECURITY逐渐在电子安全行业树立了技术领先的形象,吸引了大量合作伙伴和客户的关注。

Altmustech公司的发展小趣事

随着业务规模的不断扩大,Altmustech开始实施全球化布局战略。公司在全球范围内设立研发中心和生产基地,与各地合作伙伴建立紧密的合作关系。这一战略使得公司能够更好地利用全球资源,提高生产效率,降低成本,同时也有助于提升公司在国际市场上的竞争力。

Aeroflex公司的发展小趣事

Altmustech公司的创立源于一次技术突破。创始人李博士带领的团队成功研发了一款高效能、低成本的半导体芯片,这一创新技术解决了当时电子行业面临的能效问题,迅速引起了市场的关注。随着技术的不断完善和产品的推出,Altmustech逐渐在半导体市场上崭露头角,为公司的快速发展奠定了坚实的基础。

Cramer公司的发展小趣事

随着5G技术的普及,Cramer公司紧跟时代潮流,开始研发5G通信设备。他们与多家通信巨头合作,共同推进5G技术的发展。经过不懈的努力,Cramer公司成功研发出了一款高性能的5G路由器。这款产品的推出,使得Cramer公司在5G市场上取得了先机,并为其带来了丰厚的回报。

Aavid Niagra公司的发展小趣事

随着电子产品的更新换代速度加快,散热技术也面临着更高的要求。Aavid Niagra公司敏锐地捕捉到了这一市场变化,加大了在研发方面的投入,推出了一系列创新性的散热产品。这些产品不仅提高了电子设备的性能稳定性,还大大降低了能耗,赢得了客户的广泛好评。公司的技术创新能力成为了其持续发展的核心竞争力。

问答坊 | AI 解惑

步进电机的控制问题

在职硕士的毕业论文,步进电机的驱动电源设计 要求:1.将步进电机的控制电路、驱动电路以及其它相关电路融为一体,使之具备低功耗和高可靠性的特点;           2.具备较好的通用性,可以进行二相、三相、四相、五 ...…

查看全部问答>

软件滤波方法及程序

本帖最后由 paulhyde 于 2014-9-15 03:03 编辑 10种软件滤波方法,以及整理好的对应的程序源代码~~ 很有用的~    …

查看全部问答>

求:基于单片机的点阵显示屏设计论文

本人求一份基于单片机的点阵显示屏设计论文,有意者联系QQ1210979462,待遇QQ聊!…

查看全部问答>

PB5.0,编译出现错误:error C2220: warning treated as error - no object file generated

平台:PB5.0         小弟做一个内核时候,在build阶段出现一个错误,具体如下: BUILD: [00:0000000029:PROGC ] Compiling \\WINCE500\\PLATFORM\\855gme\\Src\\Kernel\\Libs\\Kitl\\ directory. BUILD: [01:000 ...…

查看全部问答>

USB三种速度的区分

USB 2.0分三种速度: LS(低速) 1.5Mbps FS(全速)  12Mbps HS(高速) 480Mbps LS主要应用在低端的键盘鼠标,实际速度很低,除了可能几分钱的价格优势,不推荐使用。 通用领域的MCU(SoC),多数都只能达到FS,例如cy24x94,7s64,214x,STM ...…

查看全部问答>

请问DNS的解析速率正常范围是多少啊?是不是太高或太低都不好啊?

提这个问题是因为需要监控DNS解析速率这个指标,并设定其上下限门限值。所以请有经验的兄弟们给个解析速率的上下限经验值哈。谢谢!…

查看全部问答>

SKYPE 喇叭和听筒的切换?

WINCE 5.0的系统的PDA上使用SKYPE打电话时和不使用SKYPE时,发出的声音都是从喇叭里出的,我想打电话时喇叭应该关闭,声音从听筒里出来。怎样实现听筒和喇叭的切换?(高分)…

查看全部问答>

EK-stm32f用不了了,晕死!

                                 IAR4.41A 我现在能编译,但一DEBUG IAR 就死机了,换了几个USB口也这样,原来能DEBUG的项目也下不 ...…

查看全部问答>

火焰传感器与单片机接法??

火焰传感器与单片机接法???电路图,急需啊,求救…

查看全部问答>

求助:烧程序过程中遇到了问题

我用MSPFET软件向 1611片子里烧程序,设置是BSL格式,为什么运行起来总是显示同步错误?LED闪两下就不工作了…

查看全部问答>