当前位置:   article > 正文

STM32之舵机转动————寄存器版_stm32f407控制wheeltec s20f舵机

stm32f407控制wheeltec s20f舵机

以STM32F407VGT6单片机为例---------控制舵机转动的角度0-180°

  1. #include "pwm.h"
  2. /*
  3. 函数名:tim3_ch4_pwm
  4. 函数功能:舵机配置
  5. 返回值:void
  6. 形参:void
  7. 函数说明:
  8. 红色线 --- 5V
  9. 棕色线 --- GND
  10. 橘色线 --- PB1 --- TIM3_CH4
  11. */
  12. void tim3_ch4_pwm(void)
  13. {
  14. /*IO控制器配置*/
  15. //端口时钟使能
  16. RCC->AHB1ENR |= (1<<1);
  17. //端口模式配置-------复用模式
  18. GPIOB->MODER &= ~(3<<2);
  19. GPIOB->MODER |= (2<<2); //复用
  20. //输出类型
  21. GPIOB->OTYPER &= ~(1<<1);
  22. //输出速度
  23. GPIOB->OSPEEDR &= ~(3<<2);
  24. //上下拉
  25. GPIOB->PUPDR &= ~(3<<2);
  26. //复用功能寄存器
  27. GPIOB->AFR[0] &= ~(0xf<<4);
  28. GPIOB->AFR[0] |= (2<<4); //PB1复用到TIM13_CH1
  29. /*通用定时器控制器配置*/
  30. //定时器时钟使能
  31. RCC->APB1ENR |= 1 << 1;//打开TIM3时钟
  32. //CR1
  33. TIM3->CR1 &=~ (3 << 5);//选择边沿对齐模式
  34. TIM3->CR1 &=~ (1 << 4);//递增计数
  35. TIM3->CR1 &=~ (1 << 3);//循环计数
  36. //设置一个1ms周期 ARR:1000 PSC:84
  37. //PSC
  38. TIM3->PSC = 840 - 1;
  39. //ARR
  40. TIM3->ARR = 2000 - 1;
  41. /*输出比较配置*/
  42. //SMCR
  43. TIM3->SMCR &=~ (7 << 0);//选择内部时钟源
  44. //CCMRx
  45. TIM3->CCMR2 &=~ (3 << 8);//配置通道1为输出
  46. TIM3->CCMR2 |= 1 << 11;//使能通道1输出比较影子寄存器预装载
  47. TIM3->CCMR2 |= 6 << 12;//选择为PWM1模式
  48. //CCER
  49. TIM3->CCER |= 1 << 12;//使能输出比较
  50. TIM3->CCER &=~ (1 << 13);//有效电平为高电平
  51. //PSC
  52. //CCRx
  53. TIM3->CCR4 = 500; //比较寄存器初始值
  54. //EGR
  55. TIM3->EGR |= (1<<0); //人为产生更新事件,更新到影子寄存器
  56. //使能通道1
  57. //计数器使能
  58. TIM3->CR1 |= (1<<0);
  59. }
  60. void SetServoAngle(unsigned char angle)
  61. {
  62. unsigned short pulse = 0;
  63. //针对舵机可转角度限辐
  64. if(angle <= 5) angle = 5;
  65. if(angle >= 175) angle = 175;
  66. //将角度值转换为脉冲值
  67. pulse = (unsigned short)(50 + angle * 100 / 90.0); //此转换公式需根据pwm的arr及psc配置来做相应变化
  68. TIM3->CCR4 = pulse;
  69. }
  1. #include "main.h"
  2. #include "pwm.h"
  3. int main()
  4. {
  5. tim3_ch4_pwm();//舵机初始化
  6. printf("初始化成功!!!!!!!\r\n");
  7. SetServoAngle(90);//转动角度90°
  8. while(1)
  9. {
  10. }
  11. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/281076
推荐阅读
相关标签
  

闽ICP备14008679号