STM32在定时器中控制步进电机

发布者:龙腾少年最新更新时间:2016-04-22 来源: eefocus关键字:STM32  定时器  控制步进电机 手机看文章 扫描二维码
随时随地手机看文章
写WEB程序的时候,发现如果加上步进电机控制的话,就会出现问题。原因是如果把电机控制放在uip循环中处理的话,因为控制电机涉及到时间问题。所以必须解决,想到的方法就是多任务的思想。把步进电机的处理放在定时器中断里面。这样的话就能避免问题了。顺便学习了库函数操作定时器。这里用到的定时器功能简单,只需要产生更新中断。

下面是定时器初始化代码

 
  1. //定时器3初始化  
  2. //arr:定时重装值  
  3. //psc:分频值  
  4. void TIM3_Init(uint16_t arr, uint16_t psc)  
  5. {  
  6.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
  7.     NVIC_InitTypeDef NVIC_InitStructure;  
  8.       
  9.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //开启TIM3时钟  
  10.       
  11.     //定时器3配置,重载值、分频值、分频系数、计数模式  
  12.     TIM_TimeBaseStructure.TIM_Period = arr;  
  13.     TIM_TimeBaseStructure.TIM_Prescaler = psc;  
  14.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
  15.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  16.       
  17.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  
  18.     TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);  //允许定时更新中断  
  19.       
  20.     //中断配置  
  21.     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  
  22.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  23.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
  24.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  25.     NVIC_Init(&NVIC_InitStructure);  
  26.       
  27.     TIM_Cmd(TIM3, ENABLE);  //使能定时器3  
  28. }  


定时器中断处理函数

  1. void TIM3_IRQHandler(void)  
  2. {  
  3.     static uint8_t i;   //相序计数器  
  4.       
  5.     if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  
  6.     {  
  7.         TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  
  8.         Motorcw(i);     //电机正转  
  9.         i++;  
  10.         if(i==4)  
  11.           i = 0;  
  12.     }  
  13. }  


电机正传代码函数

 
  1. void Motorcw(uint8_t i)  
  2. {  
  3.     GPIO_Write(GPIOC,phasecw[i]);  
  4. }  


这样的话就不能干扰到uip的正常事件处理了。

关键字:STM32  定时器  控制步进电机 引用地址:STM32在定时器中控制步进电机

上一篇:LPC2103学习之GPIO
下一篇:STM32用IO口控制步进电机的简单程序

推荐阅读最新更新时间:2024-03-16 14:51

基于ZigBee和STM32的室内智能照明系统的设计
在人们的传统意识中,照明系统仅以照明为目的。传统的照明系统中主要的控制方式有手动控制方式和自动控制方式。其中手动控制方式简单、有效,但是过于依赖人工操作,并且控制相对分散,不能有效管理;自动控制方式主要是由时钟元件、光电元件或两者组合的方式来实现对照明设备的控制,这种控制方式减少了对人员的依赖性,管理相 对集中,实现了照明控制的自动化,但却不能对照明系统进行调光控制。 此外,随着生活水平的不断提高,人们对日常生活的无线化、网络化、智能化、节能化的需求越来越强烈,以上两种传统的照明控制系统已经无法满足人们对日常生活品质的需求。基于上述原因提出了一种基于ZigBee和STM32的室内智能照明系统的设计。 1 系统总体设计
[单片机]
基于ZigBee和<font color='red'>STM32</font>的室内智能照明系统的设计
STM32输出PWM状态总结
输出极性(Polarity): 基于正逻辑,即高电平为1,低电平为0 1.输出极性高(Polarity_High):高电平1为有效状态(active),低电平0为无效状态(inactive) 2.输出极性低(Polarity_Low):低电平0为有效状态(active),高电平1为无效状态(inactive) PWM Mode: 分为边沿对齐和中心对齐模式 对应向上/下计数,中心对齐计数 PWM Mode 1: 向上计数:TIMx_CNT TIMx_CCR1 active ;TIMx_CNT =TIMx_CCR1 inactive 向下计数:TIMx_CNT TIMx_CCR1 inactive ;TIMx_CNT
[单片机]
stm32 在线升级之跳转函数
一、功能: 用于在程序间进行相互跳转; 二、示例 typedef void(*pFunction)(void); u32 JumpAddress; pFunction Jump_To_Application; void GotoAPPMain(void) { JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4); Jump_To_Application = (pFunction) JumpAddress; __set_MSP(*(__IO uint32_t*) ApplicationAddress); Jump_To_Application(); }
[单片机]
关于STM32单片机GPIO口上拉与下拉输入
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。 于是去看一下GPIO的结构图: I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. 将按键电路与I/O引脚结构图连起来看,就清晰多了,
[单片机]
关于<font color='red'>STM32</font>单片机GPIO口上拉与下拉输入
一个基于无操作系统的STM32单片机的单片机内存管理器
本代码基于无操作系统的STM32单片机开发,功能强大,可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便。直接贴代码: memory.h: memory.c:
[单片机]
一个基于无操作系统的<font color='red'>STM32</font>单片机的单片机内存管理器
STM32的一些基本知识总结
Cortex-M3缩略语 AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线 ARM ARM:ARM架构参考手册 ASIC:行业领域专用集成电路 ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP:数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿真器 IDE:集成开发环境 IRQ:中断请求(通常是外中断请求) ISA:指令系统架构 ISR:中断服务例程 I
[单片机]
<font color='red'>STM32</font>的一些基本知识总结
STM32-SPI使用(ZT)
SPI知识: 1) 高速同步串行口。3~4线接口(CS ,CLK ,MOSI,MISO),收发独立、可同步进行。 2)SPI分为主从模式,主模式提供时钟和片选选择信号. 3) 模式控制:CPOL用来控制时钟信号(clk)在空闲时候的状态;CPHA用来控制采样时刻时CLK的边缘动作。 CPOL CPHA 模式 0 0 CLK空闲时为低电平,CLK上升沿采样数据。 0 1 CLK空闲为低电平,CLK下降沿采样数据。 1
[单片机]
STM32单片机学习---PWM输出
实现功能:采用定时器2的通道2,使PA1输出频率1K,占空比40的PWM波形,用PA8随意延时取反led灯,指示程序运行。 首先熟悉一下定时器的PWM相关部分。 其实PWM就是定时器的一个比较功能而已。 CNT里的值不断++,一旦加到与CCRX寄存器值相等,那么就产生相应的动作。这点和AVR单片机很类似。既然这样,我们要产生需要的PWM信号,就需要设定PWM的频率和PWM的占空比。 首先说频率的确定。由于通用定时器的时钟来源是PCLK1,而我又喜欢用固件库的默认设置,那么定时器的时钟频率就这样来确定了,如下: AHB(72MHz)→APB1分频器(默认2)→APB1时钟信号(36MHz)→倍频器(*2倍)→通用定时
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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