野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29482|回复: 1

STM32F103C8T6 RTOS + 定时器PWM失效

[复制链接]
发表于 2021-2-28 12:52:03 | 显示全部楼层 |阅读模式
请教各位一个问题
代码使用RTOS(UCOSII + 定时器PWM) 控制电机.
但是发现一个奇怪的想象,在调用后发现,有时候函数执行完毕,没有任何反应,使用示波器测量后发现,未产生PWM.

代码如下:

  1. [list=1]
  2. [*]GPIO_InitTypeDef   GPIO_InitStructure;
  3. [*]    TIM_OCInitTypeDef TIM_OCInitStructure;
  4. [*]
  5. [*]    cpu_sr = OS_CPU_SR_Save();
  6. [*]
  7. [*]    GPIO_InitStructure.GPIO_Pin   = xxxxx;
  8. [*]    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9. [*]    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  10. [*]    GPIO_Init(xxxxx, &GPIO_InitStructure);
  11. [*]    GPIO_ResetBits(xxxxx, xxxxx);
  12. [*]
  13. [*]    GPIO_InitStructure.GPIO_Pin   = xxxxx;
  14. [*]    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  15. [*]    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
  16. [*]    GPIO_Init(xxxxx, &GPIO_InitStructure);
  17. [*]
  18. [*]    TIM_Cmd(TIM4, DISABLE);
  19. [*]    TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
  20. [*]    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  21. [*]    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  22. [*]    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_Low;
  23. [*]    TIM_OCInitStructure.TIM_Pulse = 500;
  24. [*]    TIM_OC2Init(TIM4, &TIM_OCInitStructure);
  25. [*]
  26. [*]    TIM4->EGR = TIM_PSCReloadMode_Immediate;
  27. [*]    TIM_Cmd(TIM4, ENABLE);
  28. [*]
  29. [*]    OS_CPU_SR_Restore(cpu_sr);
  30. [/list]
复制代码


目前在不停的测试中发现几点:
1. 如果更改优化等级的话,会生效,但是其他的函数又会出现问题.
2. 目前如果不使用PWM,一切正常,函数调用也正常.
3. 定时器使用的1K频率.

想请问下各位,是不是哪里弄错了?


回复

使用道具 举报

发表于 2021-3-1 09:13:36 | 显示全部楼层
看代码似乎是有用到刹车输入?试试检查下刹车输入引脚的电平
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 11:52 , Processed in 0.025621 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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