OpenEdv-开源电子网

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

stm32f103zet6 最小系统板,输出PWM波周期恒定为250us左右,无法更改

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-5-25
在线时间
1 小时
发表于 2014-8-13 14:03:43 | 显示全部楼层 |阅读模式
5金钱
各位大神,求助以下,困了好多天了,自己做的最小系统板,在做PWM输出实验时,采用ST官方例程,输出的PWM波形恒定为250us左右,无论修改什么值都不引起周期变化。占空比的更改只在第一次用官方例程的时候那四个值有用,如果换成自己的选的值则完全没有效果。
[mw_shl_code=c,true]#include "stm32f10x.h" #include "stm32f10x_it.h" #include "stm32f10x_conf.h" #include "delay.h" TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; uint16_t CCR1_Val = 333; uint16_t PrescalerValue = 0; /* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void); void GPIO_Configuration(void); int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ /* System Clocks Configuration */ RCC_Configuration(); /* GPIO Configuration */ GPIO_Configuration(); /* ----------------------------------------------------------------------- TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles: The TIM3CLK frequency is set to SystemCoreClock (Hz), to get TIM3 counter clock at 24 MHz the Prescaler is computed as following: - Prescaler = (TIM3CLK / TIM3 counter clock) - 1 SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-density and Connectivity line devices and to 24 MHz for Low-Density Value line and Medium-Density Value line devices The TIM3 is running at 36 KHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1) = 24 MHz / 666 = 36 KHz TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50% TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5% TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25% TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5% ----------------------------------------------------------------------- */ /* Compute the prescaler value */ PrescalerValue = 2; /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 665; TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel1 */ 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); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); /* TIM3 enable counter */ TIM_Cmd(TIM3, ENABLE); while (1) {} } /** * @brief Configures the different system clocks. * @param None * @retval None */ void RCC_Configuration(void) { /* TIM3 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* GPIOA and GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); } /** * @brief Configure the TIM3 Ouput Channels. * @param None * @retval None */ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ` GPIO_Init(GPIOA, &GPIO_InitStructure); } /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ [/mw_shl_code]


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

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2014-8-13 18:38:04 | 显示全部楼层
修改 TIM_TimeBaseStructure.TIM_Period = 665;这个没有用吗
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-5-25
在线时间
1 小时
 楼主| 发表于 2014-8-14 09:49:46 | 显示全部楼层
回复【2楼】awsawzj:
---------------------------------
没有用啊,不管改什么值,都不变化,有点只有第一次下载进去的程序固化在里面的意思了
回复

使用道具 举报

29

主题

340

帖子

0

精华

高级会员

Rank: 4

积分
799
金钱
799
注册时间
2013-12-17
在线时间
100 小时
发表于 2014-8-14 10:33:30 | 显示全部楼层
看一下原子写的,他那个是能改的
就算有一天梦想成真,而你做好准备了吗?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-5-25
在线时间
1 小时
 楼主| 发表于 2014-8-14 10:35:14 | 显示全部楼层
回复【4楼】老虎的菜:
---------------------------------
我一开始就是用原子的,后面不能改才用的库里面
回复

使用道具 举报

29

主题

340

帖子

0

精华

高级会员

Rank: 4

积分
799
金钱
799
注册时间
2013-12-17
在线时间
100 小时
发表于 2014-8-14 10:38:37 | 显示全部楼层
回复【5楼】shuideleiheng:
---------------------------------
。。。。 不能改什么  是占空比 还是周期 。我一直都能改啊  最近做的就是pwm
就算有一天梦想成真,而你做好准备了吗?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-5-25
在线时间
1 小时
 楼主| 发表于 2014-8-14 19:12:51 | 显示全部楼层
回复【6楼】老虎的菜:
---------------------------------
都不能改,频率的话就和图中波形一样,不管如何设置值,都不改变,稳定在那个值,占空比的话现在是时而能改,时而不能改
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-14 23:04:32 | 显示全部楼层
回复【7楼】shuideleiheng:
---------------------------------
那就仿真一下,看看寄存器值,是否真被你修改了
只要寄存器的CCRx被你改了,占空比肯定得变(当然至少修改CCRx的频率,不能大于PWM的周期,否则可能某些设置被"忽略了")
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-5-25
在线时间
1 小时
 楼主| 发表于 2014-8-14 23:54:38 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,仿真值是好的,就是从端口出来接到示波器之后就显示不准确了,不明白哪里出现了问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 00:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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