1. 前言:精确控制步进电机的原理见我之前写的一篇博文:https://blog.csdn.net/weixin_39589455/article/details/89409634

程序:
1.此处是pwm输出,及普通的设置,用到TIM1的CH1通道,这里不加太多注释,可参考我的另一篇博文:https://blog.csdn.net/weixin_39589455/article/details/87902849
唯一不同的是加入了中断计数

void TIM1_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;NVIC_InitTypeDef   NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_TIM1,ENABLE);//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);;GPIO_DeInit(GPIOA); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);     TIM_TimeBaseStructure.TIM_Period=arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE );TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//TIM_OCInitStructure.TIM_Channel=TIM_Channel_1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=0;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;TIM_OC1Init(TIM1, &TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);TIM_CtrlPWMOutputs(TIM1,ENABLE);TIM_ARRPreloadConfig(TIM1, ENABLE);TIM_CtrlPWMOutputs(TIM1,ENABLE);NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM1,ENABLE);
}

中断服务程序:此处的100为脉冲数,使电机转45°。由于:360/800=0.45即每个脉冲使电机转0.45°,故电机转动100*0.45=45度

void TIM1_UP_IRQHandler(void)
{if(TIM_GetITStatus (TIM1 ,TIM_IT_Update )!=RESET ){TIM_ClearITPendingBit(TIM1 ,TIM_IT_Update );Pulse_Cnt++;if(Pulse_Cnt>100){Pulse_Cnt = 0;TIM_Cmd(TIM1,DISABLE);}}
}

3.主函数

int main(void)
{pwm_init();moto_shun();
}

注:这里使用中断来实现控制,比较占用片内资源,如果有其他方法欢迎和我讨论呀

源代码:https://download.csdn.net/download/weixin_39589455/11129458

【stm32开发日志】用stm32精确控制步进电机角度相关推荐

  1. STM32开发 | Clion搭建STM32开发环境

    目录 前言 1.软件以及所需工具 2.添加到环境变量 1) 将 MinGW.OpenOCD 以及 arm-none-eabi-gcc 文件夹下的 bin 文件添加到系统环境变量中. 2) 测试是否添加 ...

  2. STM32开发实例 基于STM32单片机的蓝牙手环

    一.系统设计 本次是基于STM32单片机的简易蓝牙手环,手指放在心率检测处,心率传感器就能实时的检测使用者的心率的变化,并在显示屏上进行显示:通过DS18B20检测体温,体温数值也会在显示屏上进行显示 ...

  3. STM32开发实例 基于STM32单片机的氛围灯

    一.系统设计 我想做的是个基于WIFI 的智能氛围灯,这个灯用app控制,首先这个灯在APP上面可以选择颜色(注:RGB)和亮度调节.音乐律动模式可跟随手机上播放的音乐改变亮度.光照模式白天关灯晚上开 ...

  4. STM32开发实例 基于STM32单片机的城市地下管廊监测

    一.系统设计 整个城市地下管廊智能监测系统主要是为了防止地下管道中的环境参数导致危险事故发生,给人们的生命财产安全造成很大的威胁,而且这种管道一旦发生事故其影响是非常巨大的.接下来在本次开发的系统中将 ...

  5. STM32开发实例 基于STM32单片机的炼钢厂环境检测

    一.系统设计 由 STM32F103C8T6单片机最小系统+DHT11温度传感器+MQ-2烟雾传感器+MQ-4甲烷浓度传感+ESP8266无线传感模块+继电器*2.采用STM32F103C8T6单片机 ...

  6. STM32开发实例 基于STM32单片机的智能机房系统

    一.系统设计 由 STM32F103C8T6单片机最小系统+DHT11温湿度传感器+  ACS712测电流模块,MO-2烟雾传感器+ESP8266无线传输模块.可以通过RSP8266将温湿度值,烟雾浓 ...

  7. STM32开发实例 基于STM32单片机的生鲜仓库系统

    一.系统设计 由 STM32F103C8T6单片机最小系统+光电管+DHT11+MQ-2+乙烯模块+二氧化碳模块+ESP8266+UNV6288语音播报模块2个小灯.系统内可以通过ESP8266将接收 ...

  8. STM32开发实例 基于STM32单片机的室外环境监测系统

    一.系统设计 由 STM32F103C8T6单片机最小系统+ESP8266+OLED12864+按键4个+小灯+蜂鸣器+DHT11+PM2.5粉尘传感器.OLED12864可以显示温湿度,粉尘浓度,可 ...

  9. STM32开发实例 基于STM32单片机的温室监测系统

    一.系统设计 由 STM32F103C8T6单片机最小系统 + DHT11温湿度检测 +MQ-135二氧化碳浓度传感器+水滴模块(检测土壤湿度)+光敏电阻模块+ESP8266无线传输模块.通过温湿度. ...

最新文章

  1. UrlReWriter 使用经验小结
  2. GitHub---最简单的使用
  3. Python笔记(七)
  4. CSS3秘笈复习:第一章第二章第三章
  5. Projective Dynamics: Fusing Constraint Projections for Fast Simulation
  6. puppet安装配置及测试
  7. WordPress学习笔记(二)插件安装
  8. 数据库大作业-学生宿舍管理系统
  9. day09 CDN绕过漏洞回链接口探针全网扫描反向邮件
  10. mongodb创建图书管理_基于vue 和 node Mongodb 的 图书管理系统
  11. 如何用wps画三线图(最方便最快的方法)
  12. leetcode#246 中心对称数
  13. 实现多余文字显示省略号
  14. 机器学习sklearn-线性回归
  15. 将m3u8格式转化为想要的格式
  16. 基于PP-ShiTu的商品识别系统
  17. 【Dubbo实战】基础学习篇(一)
  18. opus 源码下载 以及 相关资料
  19. 通过 BTC Relay 来实现链与链的连接
  20. 区块链是什么 通俗点

热门文章

  1. 【性能】688- 前端性能优化——从 10 多秒到 1.05 秒
  2. 2010年中考英语复习:熟记固定词组做好完形填空
  3. 华为发布手机鸿蒙系统,承认华为鸿蒙很难?OPPO高管“嘲讽”鸿蒙,有何意图?...
  4. 200G QSFP56 FR4光模块专题
  5. 5 Go与微信开发与Web安全
  6. Tekton系列之安装篇【一】
  7. uni-app中使用native.js调用android API实现双卡发送短信
  8. python实现对文章标题重写的小技巧!
  9. 你最想去的城市有哪些?有哪些好的旅游城市?
  10. 彻底删除系统自带的office2007