舵机驱动——STM32F407ZGT6探索者——HAL库+Keil MDK
1、材料准备
开发板:正点原子STM32F407ZGT6探索者
舵机:SG90
舵机线材分辨:褐色 / 红色 / 橘黄色 —— GND / VCC / PWM_signal
与开发板接线:褐色 / 红色 / 橘黄色 —— GND / +5V / PF6(任选的PF6)
2、知识准备
2.1、舵机需要的信号频率为50HZ,对应周期是 0.02 ,所以 arr 设置为 20000 -1 ,psc 设置为 168-1,原因是这么设置可刚好按如下算出频率是50HZ;
2.2、定时器工作频率 Ft = 84 MHz ,单位:Mhz,来源:此次任选采用PF6针脚,而PF6可重映射到TIM10_CH1,而TIM10挂载在APB2上,APB2上的定时器时钟频率是168HZ(前提是这块开发板的SYSCLK直接设置到最大频率168MHz)。还想看168的图解来源请直接打开CuceMX或CubeIDE在“时钟树配置栏目”看到。
2.3、计算方法
定时器溢出时间计算方法: Tout = ( (arr + 1) * (psc + 1) ) / Ft us.
周期 = (2 0000 * 168)/ (168 000 000) = 0.02 秒;
频率 = 1 / 周期 = 50 HZ ;
3、代码块
gtim.h
gtim.c
main.c
4、注释:
4.1、此块代码可以直接拿去用,也可以按照需求改 main.c 里 while(1) 里面的语句完成自定义控制。
4.2、PF6 与 “ATK MODULE” 处插 “ WIFI模块——正点原子ATK ESP 01 ” 占用冲突,请务必取下WIFI模块再拷贝代码运行或者非要用WiFi模块那就不用PF6改用其他带定时器pwm输出的引脚。
合集:
单片机开发
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库