OpenEdv-开源电子网

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

谁能告诉我STM32如何通过定时器1配置互补PWM或者单路,谁能给我个例程

[复制链接]

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-8
在线时间
9 小时
发表于 2015-12-8 20:41:19 | 显示全部楼层 |阅读模式
5金钱
谁能告诉我STM32如何通过定时器1配置互补PWM或者单路,谁能给我个例程

最佳答案

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

http://www.openedv.com/posts/list/62861.htm
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-8 20:41:20 | 显示全部楼层
http://www.openedv.com/posts/list/62861.htm
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-8
在线时间
9 小时
 楼主| 发表于 2015-12-9 08:24:37 | 显示全部楼层
回复【2楼】229382777@qq.com:
---------------------------------
我需要用库函数的 。。。。。。
回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-8
在线时间
9 小时
 楼主| 发表于 2015-12-9 08:26:53 | 显示全部楼层
void TIM1_Init(u16 arr,u16 psc)  //Advanced TIM
{  
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;


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

                                        
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //???????ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);



TIM_TimeBaseStructure.TIM_Period = arr; //?è???????????ü??????×°????????×?????×°???????÷????????  80K
TIM_TimeBaseStructure.TIM_Prescaler =psc; //?è??????×÷??TIMx?±?????????????¤·?????  ??·???
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM?ò??????????
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //?ù??TIM_TimeBaseInitStruct?????¨????????????TIMx???±???ù??????

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;  //?????¨?±?÷????:TIM?????í???÷??????2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±???????????
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //±???????????
TIM_OCInitStructure.TIM_Pulse = 0;  //?è????×°??????±????????÷????????
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  //????????:TIM????±?????????
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;  //????????:TIM????±?????????
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);  
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);   //????TIMx??CCR1?????¤×°???????÷

TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);


TIM_ARRPreloadConfig(TIM1, ENABLE);    //????TIMx??ARR?????¤×°???????÷ 
TIM_Cmd(TIM1, ENABLE);     //????TIMx???è
TIM_CtrlPWMOutputs(TIM1, ENABLE);   //pwm?????????????¨???????ò??



#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"


#include "timer.h"
#include "pwm.h"
//Mini STM32??·?°?·????ú??8
//PWM???? ???é
//??????×?@ALIENTEK
//????????:www.openedv.com  
 int main(void)
 {
u16 pwm_value=225;
int dir=1;
SystemInit();

NVIC_Configuration();
uart_init(9600);
  LED_Init();
 
// KEY_Init();          //°??ü??????
TIM1_Init(899,0);  //PWM????=72000/9000/150=50hz

while(1)
{
  delay_ms(20);  

pwm_value = pwm_value + dir;
if(pwm_value > 900)
dir = -1;
if(pwm_value < 225)
dir = 1;
TIM_SetCompare1(TIM1,pwm_value);        

}  

 }


这是我的但是就是没输出
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-12-9 08:27:35 | 显示全部楼层
回复【3楼】a5908252:
---------------------------------
都差不多啊,库函数还不是操作寄存器,你直接看下寄存器对应哪个函数就好了.....
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-8
在线时间
9 小时
 楼主| 发表于 2015-12-9 09:38:09 | 显示全部楼层
就是TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; 
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; 
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
三句话什么意思
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 20:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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