OpenEdv-开源电子网

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

由TIM1输出pwm与定时TIM3有冲突?

[复制链接]

20

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2014-10-16
在线时间
44 小时
发表于 2015-8-13 09:37:19 | 显示全部楼层 |阅读模式
5金钱
各位大神,我程序由TIM1_CH1输出pwm波形,定时器3定时20ms,如果把定时器3屏蔽,波形输出正常,如果打开,波形就乱了,它们之间会产生冲突么?代码如下:
[mw_shl_code=c,true] int main(void) { u16 adcx; u8 t=0,s=0; float temp; delay_init(); //延时函数初始化 uart_init(9600); //串口初始化为9600 // LED_Init(); //初始化与LED连接的硬件接口 // EXTIX_Init(); //外部中断初始化 LCD_Init(); KEY_Init(); //初始化与按键连接的硬件接口 Adc_Init(); //ADC初始化 NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级 TIM3_Int_Init(199,7199);//10Khz的计数频率,计数到200为20ms TIM1_PWM_Init(3599,0);//不分频。PWM频率=72000/(3599+1)=20Khz TIM_SetCompare1(TIM1,3000); // LED0=0; while(1) {} } void TIM1_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIO外设时钟使能 //设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形 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_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 TIM_OC1Init(TIM1, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx TIM_CtrlPWMOutputs(TIM1,ENABLE); //MOE 主输出使能 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //CH1预装载使能 TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的预装载寄存器 TIM_Cmd(TIM1, ENABLE); //使能TIM1 } void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能 TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//使能或者失能指定的TIM中断 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 TIM_Cmd(TIM3, ENABLE); //使能TIMx外设 } void TIM3_IRQHandler(void) //TIM3中断 { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源 // LED1=!LED1; } } [/mw_shl_code]


最佳答案

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

回复【7楼】待机唤醒: --------------------------------- TIM1 CH2  A9一般用作串口通信了   你看看是不是这个的问题
奋斗才能新生
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-13 09:37:20 | 显示全部楼层
回复【7楼】待机唤醒:
---------------------------------
TIM1 CH2  A9一般用作串口通信了   你看看是不是这个的问题
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-13 09:53:56 | 显示全部楼层
先初始化TIM1   再初始化TIM3
回复

使用道具 举报

20

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2014-10-16
在线时间
44 小时
 楼主| 发表于 2015-8-13 10:37:00 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
现在可以了,谢谢啦,能说下原因么?
奋斗才能新生
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-13 10:42:54 | 显示全部楼层
是个BUG   暂时没找到原因
回复

使用道具 举报

20

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2014-10-16
在线时间
44 小时
 楼主| 发表于 2015-8-13 10:52:28 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
回复【4楼】lycreturn:
---------------------------------
我现在输出两路波形TIM1——CH1.   CH2,但是只有CH1有波形,CH2没有,这个可以解决么?
int main(void)
 { 
u16 adcx;
u8 t=0,s=0;
float temp;
delay_init();       //延时函数初始化   
uart_init(9600);   //串口初始化为9600
// LED_Init();    //初始化与LED连接的硬件接口
//  EXTIX_Init(); //外部中断初始化  
  LCD_Init();
KEY_Init();           //初始化与按键连接的硬件接口  
  Adc_Init();    //ADC初始化
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级  


TIM1_PWM_Init(3599,0);//不分频。PWM频率=72000/(899+1)=80Khz 
TIM_SetCompare1(TIM1,1000);
TIM_SetCompare2(TIM1,1000); 
 
TIM3_Int_Init(199,7199);//10Khz的计数频率,计数到200为20ms   
//    LED0=0;
奋斗才能新生
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-13 11:17:06 | 显示全部楼层
回复【5楼】待机唤醒:
---------------------------------
CH2也要配置对才行,按照CH1配置CH2
回复

使用道具 举报

20

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2014-10-16
在线时间
44 小时
 楼主| 发表于 2015-8-13 12:49:22 | 显示全部楼层
回复【6楼】lycreturn:
---------------------------------
配置了,仍然不行,但是改成CH4就可以,我用最小系统版接的
奋斗才能新生
回复

使用道具 举报

20

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2014-10-16
在线时间
44 小时
 楼主| 发表于 2015-8-13 16:56:50 | 显示全部楼层
回复【8楼】lycreturn:
---------------------------------
应该是了,mini板这个口就是做串口通信,谢谢啦
奋斗才能新生
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-8-4
在线时间
0 小时
发表于 2017-8-4 11:52:29 | 显示全部楼层
lycreturn 发表于 2015-8-13 09:53
先初始化TIM1   再初始化TIM3

请问这是为啥呢?
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-8-6 17:35:56 | 显示全部楼层
楼主你好我按照你的定时器一的代码写了一遍为什么PWM输出一直是低电平
用keil5的逻辑分析仪看的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 01:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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