基于STM32F407的HMI USART串口屏步进电机控制程序
目录
前言
一、效果
二、屏幕设计
三、部分代码
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串口屏步进电机控制程序相关推荐
- 【我的电赛日记(一)】HMI USART串口屏
HMI USART串口屏 作为在电赛中负责软件部分的成员,学会使用单片机进行数据和信息的显示是必要的,大部分人会选择使用oled或者TFT屏幕去进行显示,但是使用过的人都知道这样会比较复杂,会加大程序 ...
- USART HMI智能串口屏与单片机双向通讯
目录 ·HMI串口屏介绍 ·HMI串口屏开发实操 ·准备 ·界面认识 ·写命令 ·下载 ·HMI串口屏与单片机(stm32)双向通信 [ 功能实现: STM32控制串口屏对应的数值.文本完成相应变化 ...
- HMI智能串口屏——在STM32开发板上的实战应用及其详解
HMI智能串口屏--在STM32开发板上的实战应用及其详解 一.HMI智能串口屏使用步骤 二.附录 一.HMI智能串口屏使用步骤 安装USART HMI软件 (一般买的串口屏里面,商家送的资料里面都有 ...
- usart hmi(串口屏)常用命令
1. 关于页面与页面之间的跳转 page 页面刷新指令 命令格式 :page PID (PID:页面ID或页面名称) 例如:在一个hmi工程里有几个页面A1,A2,A3等,如果想从页面A1切换到页面 ...
- cubemx stm32 陶晶驰 串口屏 基于YXY通信原理的串口屏驱动代码
陶晶驰串口屏 资料 陶晶驰串口屏是本质是一个MCU,屏幕是MCU的模块,一般是一块TFT屏幕.在串口屏厂商提供的软件上面编写界面,然后通过串口直接烧到串口屏的MCU上,然后在屏幕上展示出来. 串口屏资 ...
- 【STM32】基于STM32F407中断方式实现串口通信
目录 一.中断介绍 二.中断方式实现串口通信 1. 新建工程 2. 工程设置 3.代码编写 4. 烧录验证 三.总结 四.参考 一.中断介绍 具体介绍参考文章: [STM32]基于STM32F407的 ...
- STM32F407与大彩串口屏的调试经验总结
博主在一次电赛训练题中使用到了广州大彩公司的F系列串口屏, 遇到了很多坑, 也学到了很多东西,在这里给大家分享一下. 1.确定固件版本号 固件版本号代表了设备烧入的程序版本,获取版本的方法如下: 1. ...
- 基于stm32F103ZE单片机的USART串口使用
文章目录 寄存器及自定义变量 状态寄存器 USART_SR USART_RX_BUF[USART_REC_LEN] u16 USART_RX_STA 串口初始化 uart_init(u32 bound ...
- STM32与串口屏交互(USART HMI)
STM32与串口屏交互(USART HMI) 一.前期准备 二.串口屏上位机使用方法以及界面设计 三.STM32软件编程 四.单片机发送数据的字符串指令汇总 五.总结 不管是备战电赛还是准备毕设,一块 ...
最新文章
- springboot集成themeleaf报Namespace 'th' is not bound
- ELK实时日志分析平台的搭建部署及使用
- 在MySql中,这四种方法可以避免重复插入数据!
- ASP.NET高级配置Web.config和Machine.Config
- WPF 用Main函数方式启动程序
- java在底层捕获异常_Java正确捕获异常的真实类
- hidden symbol `pthread_atfork'
- 网页的根标记是 html,网页的根标记是,主体标记是_________。
- TOP6410上windowsce6.0移植笔记(一)
- 麒麟系统安装打印机共享_国产操作系统麒麟——文档打印 解决方案
- 颜色对照表(四)(16进制、RGB、CMYK、HSV、中英文名)
- 关于通过请求获取的验证码不正确的解决的破解方法
- matlab求函数偏导
- 【异常解决】DolphinScheduler-2.0.5 工作流实例无法调度和停止异常
- RobotStudio 示教器编程:MoveC指令
- 域名管理——DNS服务
- HTML圆和圆角柜形的制作,圆角柜是典型的明式家具,详细解析圆角柜的智慧法则...
- 2岁内婴幼儿过敏患病率达40.9%
- 微信支付回调到底回调了什么?
- try to re connect to a new server ,server is not appointed,will choose a random server