stm32舵机驱动程序分享

发布者:bemaii最新更新时间:2023-07-20 来源: elecfans关键字:stm32  舵机  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

  STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按内核架构分为不同产品:

  其中STM32F系列有:

  STM32F103“增强型”系列

  STM32F101“基本型”系列

  STM32F105、STM32F107“互联型”系列

  增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,相当于0.5mA/MHz。


  在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。

  STM32f103 舵机控制程序

  #include “timer.h”

  //TIM2 PWM部分初始化

  //PWM输出初始化

  //arr:自动重装值

  //psc:时钟预分频数

  void TIM2_PWM_Init(u16 arr,u16 psc)

  {

  GPIO_InitTypeDef GPIO_InitStructure;

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

  TIM_OCInitTypeDef TIM_OCInitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能定时器2时钟

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟

  GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE); //Timer3部分重映射 TIM2_CH2-》PA1

  //设置该引脚为复用输出功能,输出TIM2 CH2的PWM脉冲波形 GPIOA.1

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM_CH2

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA

  //初始化TIM2

  TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值

  TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值

  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

  //初始化TIM2 Channel2 PWM模式

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能

  TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高

  TIM_OC2Init(TIM2, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM2 OC2

  TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR2上的预装载寄存器

  TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器

  TIM_Cmd(TIM2, ENABLE); //使能TIM2

  }

  #ifndef __TIMER_H

  #define __TIMER_H

  #include “sys.h”

  void TIM2_PWM_Init(u16 arr,u16 psc);

  #endif

  #include “delay.h”

  #include “timer.h”

  /*舵机控制周期限制在20ms,脉宽部分为0.5ms--2.5ms

  0.5ms对应0度

  1ms对应45度

  1.5ms对应90度

  2ms对应135度

  2.5ms对应180度

  */

  int main(void)

  {

  u16 pwmval=0;

  delay_init(); //延时函数初始化

  TIM2_PWM_Init(1999,719); //不分频PWM频率=100000/2000=50hz

  while(1)

  {

  pwmval=1850;

  TIM_SetCompare2(TIM2,pwmval);

  }

  }


关键字:stm32  舵机  驱动程序 引用地址:stm32舵机驱动程序分享

上一篇:STM32CubeMX之串口接收不定长数据
下一篇:STM32的优势在哪里?如何使用DMA来进行ADC操作?

推荐阅读最新更新时间:2024-11-09 11:19

STM32——MDK4与MDK5中对于数据类型的不同
首先我们来看MD4中的对于数据类型的定义: 然后我们跳转到其定义处查看对其的定义: typedef unsigned long u32; typedef unsigned short u16; typedef unsigned char u8; /*首先我们来认识typedef,这是用来为复杂的声明定义简单的别名,也就是说,我们可以用它来给我们的数据类型来进行定义。*/ /* 然后我们再来看之后的unsigned,unsigned用于限定后面的为无符号类型,如果后面不加什么的话,就默认为unsigned int。*/ /*unsigned long 无符号长数据 unsigned char 无符号字符型 u
[单片机]
谈谈晶振的原理以及晶振和STM32的关系
01 压电效应 压电效应: 某些电介质在沿一定方向上受到外力的作用而变形时,其内部会产生极化现象,同时在它的两个相对表面上出现正负相反的电荷。 正压电效应: 当外力去掉后,电介质又会恢复到不带电的状态。 逆压电效应: 当作用力的方向改变时,电荷的极性也随之改变。相反,当在电介质的极化方向上施加电场,这些电介质也会发生变形,电场去掉后,电介质的变形随之消失。 当在晶体表面上施加机械压力时,与机械压力成比例的电压出现在晶体上。该电压会导致晶体失真,失真的量将与施加的电压成比例,并且还与施加在晶体上的交流电压成正比,从而导致晶体以其固有频率振动。这种压电效应会产生机械振动或振荡,可用来代替以前的振荡器中的标准LC振荡电路。 下图展示了:
[单片机]
谈谈晶振的原理以及晶振和<font color='red'>STM32</font>的关系
STM32Cube.AI v7.2现可支持深度量化神经网络
意法半导体近期发布的 STM32Cube.AI v7.2 带来了对深度量化神经网络的支持功能,从而可以在现有微控制器上运行更准确的机器学习应用软件。STM32Cube.AI 于 2019 年推出,用于把神经网络转换为适合STM32 MCU 的代码。该解决方案依附于 STM32CubeMX,这是一个帮助开发人员初始化STM32芯片的图形界面软件。同时,STM32Cube.AI 还用到 X-CUBE-AI软件包,其中包含用于转换训练好的神经网络的程序库。开发人员可以参照我们的入门指南,从STM32CubeMX内部开始使用 X-CUBE-AI并体验新功能。 目前,新增加的深度量化神经网络支持已经出现在我们与施耐德电气合作开发的人数
[物联网]
STM32Cube.AI v7.2现可支持深度量化神经网络
mini2440 简单按键中断模式驱动程序
Makefile KERN_DIR = /home/grh/kernel_source_code/linux-2.6.32.2 all : make -C $(KERN_DIR) M=`pwd` modules arm-linux-gcc key_interrupt_app.c -o key_interrupt_app clean : make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order obj-m += key_interrupt.o copy : cp key_interrupt.ko key_interrupt_app
[单片机]
mini2440 简单按键中断模式<font color='red'>驱动程序</font>
STM32外设驱动库分析及如何实现
一、如何控制单片机? 单片机的内存映射图解析 这里以STM32F429芯片为例,讲解下单片机芯片内存映射图。从此图中可以看到芯片的外设被分配了512M的空间,然而真正的外设其实没有使用到512M的内存空间。 然后我们操作外设时,只需要操作它对应的内存地址即可。更加详细的外设内存地址,可以参考芯片的用户手册(不是数据手册)的Memory map章节。 因为单片机是将外设映射到内存地址上,所以我们可以像操作内存一样来操作外设(写/读)。 我们在操作内存时是通过地址来进行操作的,由于单片机已经将外设与内存进行了映射,所以我们在操作单片机外设时只需要操作外设映射的内存地址就行。 内存如何操作? 在C语言中操作内存,我们
[单片机]
<font color='red'>STM32</font>外设驱动库分析及如何实现
基于FPGA的嵌入式运动控制器设计方案
运用低功耗Cortex—M3微控制器STM32F103VBT6和FPGA芯片设计一种基于CAN总线的运动控制器。介绍系统的体系结构、主要硬件设计和软件结构。利用FPGA高速处理能力实现控制算法,与外界通信采用STM32和CAN总线技术,系统稳定可靠,另外,将设计好的FPGA程序或是C程序进行封装,系统的可移植性强。 如今,运动控制正朝着高速度、高精度、开放式的方向发展,从而对执行部件提出了更高的要求。过去的运动控制器主要是基于单片机或者PLC加上分立数字电路设计,受制于器件本身的性能,导致电路执行速度慢、体积庞大、集成程度低,升级难度大。而采用微处理器、DSP、FPGA等现代手段构成的只能控制系统是新一代运动控制发展的方向。本
[单片机]
基于FPGA的嵌入式运动控制器设计方案
如何将ThreadX移植到STM32平台
现在一些小型系统中也往往有多任务处理的需求,这就为实时操作系统提供了用武之地。事实上国内外各种各样的RTOS有很多,而且基本都在走开源的路线,ThreadX也不例外,在这一篇中我们就来学习ThreadX初步应用并将其移植到STM32平台中。 1 、前期准备 在开始将ThreadX一直到STM32平台之间我们需要做一些前期准备。首先我们需要准备一个硬件平台,这次我们采用STM32F407IG控制单元来作为目标平台。其次我们需要准备一个该硬件平台下可以正常运行的裸机项目。这两点其实我们都已经具备了。 最主要的我们需要获得ThreadX的源码,这是我们移植它的基础。ThreadX的源码已经开源到Github上,其地址为:http
[单片机]
如何将ThreadX移植到<font color='red'>STM32</font>平台
详解STM32低功耗模式
低功耗模式 本文讨论下STM32低功耗模式,先看如下手册。 对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,低功耗模式有三种: 睡眠模式,CM3 内核停止,外设仍然运行,此功耗是最高的 停止模式,所有时钟都停止,此功耗较低,典型大概在20uA左右 待机模式,1.8V 内核电源关闭,此功耗最低,典型大概在2uA左右 一般做开发大多都是选择停机模式,因为停机模式功耗较低,而且任一中断或事件都能唤醒。待机模式虽然功耗最低,电流只差10个微安,但是只有特定的事件和引脚可以唤醒,实时性不是很好。 先来看下官方库进入低功耗的方式。 void PWR_EnterSleepMode(uint8_t PWR_SLEEPE
[单片机]
详解<font color='red'>STM32</font>低功耗模式
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved