提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、代码
  • 总结

前言

该文章适合于32单片机小白入手外设的一个代码篇章,主要通过按键来控制pwm占空比来控制舵机转动不同角度,使用了Timer4-CH4(oc4)-PB9 详细介绍及操作过程在文件main函数页面中!。


一、主要代码示例

代码如下(示例):

//main.c/*  //-----设备准备及接线:该例子测试于stm32f103zet6 正点原子开发板 +  180°舵机  +  公母杜邦线Timer4部分重映射  TIM4_CH3->PB9  橙色杜邦线VCC -> 5V                        红色杜邦线GND -> GND                       棕色杜邦线
*//*  //-----测试操作:按下开发板按键    key_up -->  180°舵机 舵机角度为 0° 的位置 (逆时针转动)key1   -->  180°舵机 舵机角度为 90° 的位置key0   -->  180°舵机 舵机角度为 180° 的位置*/#include "led.h"
#include "key.h"
#include "timer.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"int main(void)
{vu8 key=0;        LED_Init();            //led灯初始化KEY_Init();         //按键与硬件连接初始化delay_init();LED0=0;                 //红灯表示正常工作TIM4_PWM_Init(199,7199);  //利用pwm控制180°舵机  小周期0.1ms 大周期20ms,改变高电平在大周期20ms中的占比控制舵机转动角度//这里用的是pwm2模式,向上计数法,比较极性电平为低while(1)            {key=KEY_Scan(0);    //得到键值if(key){                           switch(key){                 case WKUP_PRES:    //按键key_up   20ms*5/200=0.5ms   0°  约每0.5ms转动45° TIM_SetCompare4(TIM4,5);break; case KEY1_PRES:    //按键KEY1     20ms*10/200=1ms    90°delay_ms(100);TIM_SetCompare4(TIM4,15);break;case KEY0_PRES:    //按键KEY0     20ms*25/200=2.5ms  180°TIM_SetCompare4(TIM4,25);break;}}else delay_ms(10); }     }
//time.c
#include "timer.h"
#include "usart.h"
#include "sys.h"//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM4_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStrue;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);   //使能定时器4时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟//GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);//=Timer4部分重映射  TIM4_CH3->PB9 //设置该引脚为复用输出功能,输出TIM4 CH3的PWM脉冲波形    GPIOB.9GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;   //复用推挽输出GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;  //TIM_CH3GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStrue);   //初始化该该端口 //初始化TIM4TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位//初始化TIM4 Channel2 PWM模式TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //High --> Low //输出极性:TIM输出比较极性低TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //比较输出使能TIM_OC4Init(TIM4,&TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM4 OC4TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable); //使能TIM在CH3上CCR4上的预装载寄存器TIM_Cmd(TIM4,ENABLE);  //使能TIM4
}

总结

一个基于stm32f103zet6简单的180°舵机控制代码,第一次写博客啦,应该写的不太好,望简单看看就好。

基于stm32f103zet6控制180°舵机的详细使用及测试(keil5软件)相关推荐

  1. SG90 180°舵机的使用

    SG90 180°舵机的使用 SG90的介绍 舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统,可以根据控制信号来输出指定的角度(常见的有0-90°.0-180°.0-3 ...

  2. 第六篇、基于Arduino uno,控制180度舵机(SG90)转动——结果导向

    0.结果 说明:让舵机转动,需要用PWM来控制,下面的程序是舵机从0度一直转到180度,然后又从180度转到0度的这样一个过程. 1.外观 说明:虽然舵机的型号有很多种,但是只要是180度的舵机,控制 ...

  3. STM32机器人控制开发教程No.3 使用遥控控制电机/舵机(基于HAL库)

    01 前言 本教程使用的机器人控制板拥有4个带编码器的电机接口,4个舵机接口,串口通信接口.SWD下载调试接口.航模遥控接口.USB5V输出接口以及方便与树莓派直接连接的40PIN接口等,板载资源丰富 ...

  4. 生成基于STM32f103zet6的宠物自动投食机的代码,实现定时、定量、自动的投食,并可以通过Tlink物联网平台控制投食机投喂食物和查看投食机的投喂状态...

    非常抱歉,由于我是一个语言模型,我没有办法为您生成完整的代码.但是,我可以为您提供一些有用的信息. 首先,生成基于STM32f103zet6的宠物自动投食机的代码需要一些基本的技能和知识,比如嵌入式系 ...

  5. 无线控制模块c语言编程,基于STM32F103ZET6无线语音控制小车设计与实现.doc

    基于STM32F103ZET6无线语音控制小车设计与实现 基于STM32F103ZET6无线语音控制小车设计与实现 摘要:本文以STM32F103ZET6单片机作为控制核心,通过LD3320语音识别模 ...

  6. 180°舵机如何控制?

    180°舵机最常见的是SG90舵机,用的也最多,非常便宜,某多多5.6块就可以买到一个,大概长这样: 前言 大二刚学单片机,觉得单片机很厉害,然后就想做一个宿舍智能开门装置.然后我就想其中最主要的问题 ...

  7. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  8. 基于51单片机密码锁-舵机开锁-CXM

    这个项目的起因还是因为每次进出寝室十分的麻烦才有了这个项目 所以我和我的铁子就决定搞个密码锁 我负责软件我的铁子负责硬件 目录 原理图 主要功能函数讲解 硬件 先简单介绍一下整个架构 原理图 主要功能 ...

  9. 基于STM32F103ZET6的RX8025SA时钟电路设计

    1. 现在网上大多例程都是关于RX8025T的.带温度补偿的时钟芯片手册, RX8025SA与RX8025T的区别: RX8025T内置高稳定性32.768kHz的DTCXO(数字温度补偿晶体振荡器) ...

最新文章

  1. Android开发之详解五大布局
  2. springMVC 过滤器与拦截器的执行顺序问题。springboot一样参考
  3. GSON反序列化时,字符串被转换成科学记数法的问题处理
  4. win7 右键增加打开 powershell选项
  5. 用hundred造句子_关于冬至的问候短句,冬至文案唯美句子
  6. 开源日志审计系统_一文掌握mysql数据库审计特点、实现方案及审计插件部署教程...
  7. Delphi运算符及优先级
  8. 批梯度下降 随机梯度下降_梯度下降及其变体快速指南
  9. 大小文件服务器区别,在提供静态包时,观察到Nginx和Express服务器之间文件大小的差异...
  10. 如何在mysql navicat 设置datetime类型的默认事件值
  11. 解决办法——Qtdemo软件无法加载example的问题
  12. Origin8 使用教程
  13. 桌面上的街舞之基础篇(09-04-29)
  14. 记录一次紫狐Rootkit应急响应过程
  15. 计算机基础(笔记)——计算机网络(链路层)
  16. 细节:基本数据类型中float与double的区别
  17. HCL(华三模拟器) 安装遇到的问题(1)
  18. Linux下安装Perl模块(含CPAN方法)
  19. Android——UIL实现图片缓存基本配置及使用
  20. STM32定时器3配置时钟的坑

热门文章

  1. Sonnet Suite Pro v11.52-ISO 1CD(三维高频电子设计)
  2. must end with the ';' delimiter.错误的解决
  3. Android Gradle Plugin 开发问题记录:Class xxx is final
  4. 微信的野心到底有多可怕?多可怕!
  5. excel拆分实例:如何快速制作考勤统计分析表
  6. Django debug page XSS漏洞(CVE-2017-12794)分析
  7. 深度学习之openvino预训练模型测试
  8. 如何提高自己的学习兴趣?
  9. python语音转文字代码
  10. 批量生成文件夹并命名,操作步骤