目录

前言

一、效果

二、屏幕设计

三、部分代码

1.main.c

2.usart.c

3.其余代码

总结:参考+工程代码


前言

前段时间老师给了我一个项目,让我用HMI USART串口屏控制步进电机,事成之后有报酬嘿嘿,现在做完了,总结一下,废话不多说,直接上效果,工程代码在总结处。

一、效果

《关于我用HMI USART串口屏做了一个步进电机控制器这件事》

二、屏幕设计

主界面:

移动控制界面:

间歇运动界面:

三、部分代码

1.main.c

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "usmart.h"
#include "key.h"
#include "driver.h"
#include "exti.h"u32 frequency=2000;//1000-4000
long num=2000;//0-160*1000
unsigned char str[8];
u32 speed;
int left=0,right=1;
void RST(int front)
{if(front==left){while(1)//左复位{if(!KEY0||page!=14){delay_ms(10);if(!KEY0||page!=14)break;}elseLocate_Rle(150000,4000,CW);}}else{while(1)//左复位{if(!KEY1||page!=15){delay_ms(30);if(!KEY1||page!=15)break;}elseLocate_Rle(150000,4000,CCW);}}TIM_Cmd(TIM8, DISABLE);
}
int main(void)
{  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);      //初始化延时函数uart_init(9600);     //初始化串口波特率为9600usmart_dev.init(84);     //初始化USMART         LED_Init();                   //初始化LEDEXTIX_Init();       //初始化外部中断输入 Driver_Init();            //驱动器初始化TIM8_OPM_RCR_Init(999,168-1); //1MHz计数频率  单脉冲+重复计数模式page=0;
//    RST(left);while(1) {       switch(page){case 0:TIM_Cmd(TIM8, DISABLE);  //使能TIM8break;case 2:Locate_Rle(distance,frequency,CW); break;//顺时针转向右case 1:Locate_Rle(distance,frequency,CCW);  break;//逆时针转向左case 3:frequency=1000;//速度设置break;case 4:frequency=2000;break;case 5:frequency=3000;break;case 6:frequency=4000;break;case 7:frequency=100;distance=20;//速度位移设置break;case 8:frequency=1000;distance=200;break;case 9:frequency=1000;distance=1000;break;case 10:frequency=1000;distance=2000;break;case 13:flag=1;     //间歇运动while(flag){Locate_Rle(distance,frequency,CW);}flag=1;delay_ms(1000);while(flag){Locate_Rle(distance,frequency,CCW);}flag=1;delay_ms(1000);break;case 14: RST(left);page=0;break;   case 15: RST(right);page=0;break; case 16: break;   case 17: break; }}
}

2.usart.c

void USART1_IRQHandler(void)                    //串口1中断服务程序
{u8 Res;
#if SYSTEM_SUPPORT_OS       //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.OSIntEnter();
#endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据if(page==11&&num_flag<2)//运动位移设置{numbuf[num_flag]=Res;num_flag++;if(num_flag==2){distance=(numbuf[1]*256+numbuf[0])*20;num_flag=0;page=0;}}else if(page==12&&num_flag<2)//间歇运动位移设置{numbuf[num_flag]=Res;num_flag++;if(num_flag==2){distance=(numbuf[1]*256+numbuf[0])*20;num_flag=0;page=13;}}else {switch(Res){case 0x00:page=0;break;case 0x01:page=1;break;case 0x02:page=2;break;case 0x03:page=3;break;case 0x04:page=4;break;case 0x05:page=5;break;case 0x06:page=6;break;case 0x07:page=7;break; case 0x08:page=8;break;case 0x09:page=9;break;case 0x0a:page=10;break;case 0x0b:page=11;break;case 0x0c:page=12;break;case 0x0e:page=14;break;case 0x0f:page=15;break;case 0x10:page=16;break;case 0x11:page=17;break;}}} 

3.其余代码

这个工程是基于正点原子步进电机控制程序的,工程代码我已经打包好上传,有需要的小伙伴可以在评论区留言。


总结:参考+工程代码

参考:步进电机和步进驱动器的介绍、接线、细分和控制方法

工程代码及屏幕设计文件:HMI USART串口屏步进电机控制.zip

基于STM32F407的HMI USART串口屏步进电机控制程序相关推荐

  1. 【我的电赛日记(一)】HMI USART串口屏

    HMI USART串口屏 作为在电赛中负责软件部分的成员,学会使用单片机进行数据和信息的显示是必要的,大部分人会选择使用oled或者TFT屏幕去进行显示,但是使用过的人都知道这样会比较复杂,会加大程序 ...

  2. USART HMI智能串口屏与单片机双向通讯

    目录 ·HMI串口屏介绍 ·HMI串口屏开发实操 ·准备 ·界面认识 ·写命令 ·下载 ·HMI串口屏与单片机(stm32)双向通信 [ 功能实现: STM32控制串口屏对应的数值.文本完成相应变化 ...

  3. HMI智能串口屏——在STM32开发板上的实战应用及其详解

    HMI智能串口屏--在STM32开发板上的实战应用及其详解 一.HMI智能串口屏使用步骤 二.附录 一.HMI智能串口屏使用步骤 安装USART HMI软件 (一般买的串口屏里面,商家送的资料里面都有 ...

  4. usart hmi(串口屏)常用命令

    1. 关于页面与页面之间的跳转 page  页面刷新指令 命令格式 :page PID (PID:页面ID或页面名称) 例如:在一个hmi工程里有几个页面A1,A2,A3等,如果想从页面A1切换到页面 ...

  5. cubemx stm32 陶晶驰 串口屏 基于YXY通信原理的串口屏驱动代码

    陶晶驰串口屏 资料 陶晶驰串口屏是本质是一个MCU,屏幕是MCU的模块,一般是一块TFT屏幕.在串口屏厂商提供的软件上面编写界面,然后通过串口直接烧到串口屏的MCU上,然后在屏幕上展示出来. 串口屏资 ...

  6. 【STM32】基于STM32F407中断方式实现串口通信

    目录 一.中断介绍 二.中断方式实现串口通信 1. 新建工程 2. 工程设置 3.代码编写 4. 烧录验证 三.总结 四.参考 一.中断介绍 具体介绍参考文章: [STM32]基于STM32F407的 ...

  7. STM32F407与大彩串口屏的调试经验总结

    博主在一次电赛训练题中使用到了广州大彩公司的F系列串口屏, 遇到了很多坑, 也学到了很多东西,在这里给大家分享一下. 1.确定固件版本号 固件版本号代表了设备烧入的程序版本,获取版本的方法如下: 1. ...

  8. 基于stm32F103ZE单片机的USART串口使用

    文章目录 寄存器及自定义变量 状态寄存器 USART_SR USART_RX_BUF[USART_REC_LEN] u16 USART_RX_STA 串口初始化 uart_init(u32 bound ...

  9. STM32与串口屏交互(USART HMI)

    STM32与串口屏交互(USART HMI) 一.前期准备 二.串口屏上位机使用方法以及界面设计 三.STM32软件编程 四.单片机发送数据的字符串指令汇总 五.总结 不管是备战电赛还是准备毕设,一块 ...

最新文章

  1. springboot集成themeleaf报Namespace 'th' is not bound
  2. ELK实时日志分析平台的搭建部署及使用
  3. 在MySql中,这四种方法可以避免重复插入数据!
  4. ASP.NET高级配置Web.config和Machine.Config
  5. WPF 用Main函数方式启动程序
  6. java在底层捕获异常_Java正确捕获异常的真实类
  7. hidden symbol `pthread_atfork'
  8. 网页的根标记是 html,网页的根标记是,主体标记是_________。
  9. TOP6410上windowsce6.0移植笔记(一)
  10. 麒麟系统安装打印机共享_国产操作系统麒麟——文档打印 解决方案
  11. 颜色对照表(四)(16进制、RGB、CMYK、HSV、中英文名)
  12. 关于通过请求获取的验证码不正确的解决的破解方法
  13. matlab求函数偏导
  14. 【异常解决】DolphinScheduler-2.0.5 工作流实例无法调度和停止异常
  15. RobotStudio 示教器编程:MoveC指令
  16. 域名管理——DNS服务
  17. HTML圆和圆角柜形的制作,圆角柜是典型的明式家具,详细解析圆角柜的智慧法则...
  18. 2岁内婴幼儿过敏患病率达40.9%
  19. 微信支付回调到底回调了什么?
  20. try to re connect to a new server ,server is not appointed,will choose a random server

热门文章

  1. 基于AI Earth的威宁草海水质反演
  2. 麦芽糖-链霉亲和素maltose-Streptavidins链霉亲和素-PEG-麦芽糖
  3. echarts地图基本使用
  4. oracle动态语句事务,oracle 动态SQL execute immediate
  5. 智慧高速公路服务区建设方案
  6. java smack jar_android-SmackInitialization:无法确定Smack版本
  7. c语言标志位设置原理
  8. 图像拼接(Image Stiching)方向论文微总结
  9. JQuery基础讲解
  10. 同态加密BGV与BFV方案对比与梳理