OpenEdv-开源电子网

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

求助,STM32如何用两个定时器产生两路不同频率的PWM,我同时开启了两个定时器,但是主函数调用若写在while(1)中只显示一路,另一路不正常,while(1)去掉就正常

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-7-26
在线时间
0 小时
发表于 2015-7-26 22:48:37 | 显示全部楼层 |阅读模式
5金钱
求助,STM32如何用两个定时器产生两路不同频率的PWM,我同时开启了两个定时器,但是主函数调用若写在while(1)中只显示一路,另一路不正常,while(1)去掉就正常。可是要求必须要在while(1)里
[mw_shl_code=c,true]#include "PWM_out.h" //TIM3????PWM?????????????÷??????????????4?·PWM void TIM3_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); GPIO_InitStructure.GPIO_Pin= GPIO_Pin_6|GPIO_Pin_1;//PA6??TIM3??ch1,PA1??TIM2??ch2 GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP; //???ì???? GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); } void TIM3_Mode_Config(u16 CCR1_Val) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period=36000; TIM_TimeBaseStructure.TIM_Prescaler=0; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //?????·PWM?è?? TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse=CCR1_Val; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC1Init(TIM3,&TIM_OCInitStructure); //?????¨??1 TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3,ENABLE); TIM_Cmd(TIM3,ENABLE); } void TIM2_Mode_Config(u16 CCR2_Val) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period=1199; TIM_TimeBaseStructure.TIM_Prescaler=1199; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); //?????·PWM?è?? TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse=CCR2_Val; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC2Init(TIM2,&TIM_OCInitStructure); //?????¨??2 TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2,ENABLE); TIM_Cmd(TIM2,ENABLE); } [/mw_shl_code]
主函数是
[mw_shl_code=c,true]#include "stm32f10x.h" #include "PWM_out.h" int main() { TIM3_GPIO_Config(); TIM3_Mode_Config(18000);//PA6???ú?è?? TIM2_Mode_Config(600);//PA1???ú?è?? }[/mw_shl_code]
求助,跪求

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2015-5-6
在线时间
19 小时
发表于 2015-7-27 09:23:55 | 显示全部楼层
第一,TIM2的IO你初始化了吗
第二,初始化为什么要放在while里面?库函数有直接改psc的函数,,你找找看看
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-7-26
在线时间
0 小时
 楼主| 发表于 2015-7-27 18:40:32 | 显示全部楼层
回复【2楼】胡桃:
---------------------------------
第一:TIM2的IO已经初始化了。
第二:你的初始化是指定时器初始化吗?,我里面的数字是设置占空比的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 16:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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