你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的PWM波问题

[复制链接]
kingsings 提问时间:2015-10-19 23:39 /
本帖最后由 kingsings 于 2015-10-21 21:06 编辑

           我用的是STM32F407,8MHz外部晶振,设置TIM3定时器,预分配系数84-1,重装载数2500-1,目标400Hz(2500us),但是用示波器测量是2580us,不知道这是本来就会这样,还是我的配置不对。请教高人!谢谢。
           配置代码如下:
         
  1. //主函数部分

  2. #include "drivers_usart.h"
  3. #include "drivers_oled.h"
  4. #include "drivers_keyboard.h"
  5. #include "drivers_pwm.h"

  6. bool view;

  7. void Delay(__IO uint32_t nCount);
  8. void Delay(__IO uint32_t nCount)
  9. {
  10.     while(nCount--){}
  11. }


  12. int main(void)
  13. {

  14.         TIM3_PWM_Init(2499,83);

  15.         while(1)
  16.         {
  17.                        
  18.         }//end of while(1)
  19. }

  20. //TIM3_PWM_Init函数
  21. void TIM3_PWM_Init(u32 arr,u32 psc)
  22. {
  23.   GPIO_InitTypeDef GPIO_InitStructure;
  24.   TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
  25.   TIM_OCInitTypeDef    TIM_OCInitStructure;

  26.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //TIM3 时钟使能
  27.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能porta时钟

  28.   GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3); //GA6复用为TIM3

  29.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //GPIOA6
  30.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;            
  31.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  32.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;            
  33.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;               
  34.   GPIO_Init(GPIOA,&GPIO_InitStructure);                           

  35.   TIM_TimeBaseStructure.TIM_Prescaler=psc;   
  36.   TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
  37.   TIM_TimeBaseStructure.TIM_Period=arr;   
  38.   TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  39.   TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

  40.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  41.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  42.   TIM_OCInitStructure.TIM_Pulse = 0xff;
  43.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  44.   TIM_OC1Init(TIM3, &TIM_OCInitStructure);   

  45.   TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);   

  46.   TIM_ARRPreloadConfig(TIM3,ENABLE);
  47.   TIM_Cmd(TIM3, ENABLE);   
  48. }// end of void TIM14_PWM_Init(u32 arr,u32 psc)
复制代码

     
  1. ************************ PLL Parameters *************************************/
  2. #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
  3. /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
  4. #define PLL_M      8     //原来为25
  5. #else /* STM32F411xE */
  6. #if defined (USE_HSE_BYPASS)
  7. #define PLL_M      8   
  8. #else /* STM32F411xE */   
  9. #define PLL_M      16
  10. #endif /* USE_HSE_BYPASS */
  11. #endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */
复制代码

               还有系统文件的HSE_VALUE已经设置为8000000。

收藏 2 评论15 发布时间:2015-10-19 23:39

举报

15个回答
神棍狗大侠 回答时间:2015-10-20 07:57:21
把你的配置代码贴上来 大家可以看看
f145f145 回答时间:2015-10-20 09:00:45
分频精度不高导致误差太大?
你好我好大家好! 回答时间:2015-10-20 09:11:24
帮顶                    
回答时间:2015-10-20 09:24:38
楼主把配置代码发一下。
黑驴蹄子 回答时间:2015-10-20 09:33:28
代码看一下算下时间
yanlinwei 回答时间:2015-10-20 11:50:23
配置代码看看,算算呗
aoxiangwode2008 回答时间:2015-10-20 13:35:26
发代码看一下。
kingsings 回答时间:2015-10-21 21:06:22
神棍狗大侠 发表于 2015-10-20 07:57
把你的配置代码贴上来 大家可以看看

已经贴上代码了,帮忙看一下
kingsings 回答时间:2015-10-21 21:07:10

已经贴上代码了,帮忙看一下
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版