STM8S 串口控制步进电机

本文详细介绍了STM8S103F单片机的开发流程,包括使用IAR IDE创建工程、配置STM8S103F型号、设置ST-LINK烧录工具以及使用STVP软件进行程序烧录。同时,还展示了如何编写串口接收程序,并通过串口助手控制电机正反转。整个过程涵盖了从开发到烧录的完整步骤。
摘要由CSDN通过智能技术生成

STM8s103F的工具链

单片机的工具链包含软件和硬件两个部分,软件部分就是IDE(集成开发环境),硬件部分就是下载器,对于51单片机来说软件部分就是Keil软禁,下载器就是STC-ISP,用一个USB转TTL线进行串口下载就可以了。对于STM8S103F单片机是不支持串口下载的,部分型号支持,用串口下载程序真的很麻烦。硬件部分用的是ST-LINK软件部分选用的是IAR集成开发环境和STVP烧录软件。

软件部分

IAR软件和STVP软件的安装和下载网上有两种方法,一种是官网下,另一种就是淘宝客服会给你的破解版。
1、IAR创建工程
在这里插入图片描述
选择使用C语言编程,第一个选项是汇编语言,第二个是C++语言。
在这里插入图片描述
这里命名test文件并保存到D盘的小程序文件夹中。
在这里插入图片描述
在这里插入图片描述
选择单片机的型号
在这里插入图片描述
配置烧录工具为ST-LINK
在这里插入图片描述
在这里插入图片描述
编写代码后点击保存命名文件test并将其保存到小程序文件中,这样一个文件就建立完成了。编写好的文件下次可通过eww后缀直接打开。
2、STVP烧录软件的使用
将STLINK与STVP软件相连。STVP软件可以将固件程序下载到单片机的FLSH存储器中,可以修改STM8系列单片机EEPROM存储器中的内容,也可以修改STM8系列单片机的选项字节参数。
在这里插入图片描述
选择单片机型号
在这里插入图片描述
打开一个HEX文件点击第二个红的的烧录按钮将其烧录到单片机中。
注意:生成HEX文件要在IAR环境中进行配置,这里点击选项中的输出转换器进行配置,配置完成后点击在这里插入图片描述
即可生成最新的HEX文件。
在这里插入图片描述

串口接收程序编写

使用串口助手发送数据,向单片机内烧入串口接收程序。

#include "IOSTM8S103F3.h"
#include "stdio.h"
#define uchar unsigned char
void UART1_Init();
void stepmotor_zz();
void stepmotor_fz();
void delay(uchar ms);
uchar UART1_ReceiveByte();
uchar  zz[8]={0x88,0xc8,0x48,0x68,0x28,0x38,0x18,0x98};//定义一个八拍运动的数组
uchar  fz[8]={0x88,0x98,0x18,0x38,0x28,0x68,0x48,0xc8};
int main( void )
{
  uchar re;
  UART1_Init();//初始化串口;
  while(1){
    re=UART1_ReceiveByte();//读取数据时RXNE位自动清零;   
    if(re!=0){             //若接收到的数据为0则停止运动;
      if(re==1)            //若接收到的数据为1则正转;
       stepmotor_zz();
      else if(re==2)       //若接收到的数据为2则反转;
        stepmotor_fz(); 
    }
  }
}   
 
void UART1_Init(void){     //初始化波特率模块;
  UART1_CR1=0x00;//发送和接收数据为8位;
  UART1_BRR2=0x03;
  UART1_BRR1=0x68;
  //设置串口收发波特率为9600bps,单片机的主时钟频率为16MHZ,
  //16000000/9600=1667,将其转化为16进制为0x0683;
  UART1_CR2=0x24;//使能接收,开启接收中断;
}


uchar UART1_ReceiveByte(void){  //接收数据模块;
  uchar UART1_SBUF;
  while(!(UART1_SR&0x20));//采用查询的方式判断是否开始接收数据即RXNE位为1时开始接受数据;
  UART1_SBUF=UART1_DR;
  return UART1_SBUF;
}

void stepmotor_zz(void){    //电机正转模块;
  uchar i,j;
  for(i=0;i<5;i++){
    for(j=0;j<8;j++){
      PC_DDR|=0x20;//端口C的DDR5位为输出模式;
        PC_CR1|=0x20;//推挽输出模式;
        PC_CR2|=0x00;//输出速度最大为10MHZ
        PC_ODR^=zz[j];//电机正转
        delay(25);
    }
  }
}

void stepmotor_fz(void){  //电机反转模块
  uchar i,j;
  for(i=0;i<5;i++){
    for(j=0;j<8;j++){
      PC_DDR|=0x20;//端口C的DDR5位为输出模式;
        PC_CR1|=0x20;//推挽输出模式;
        PC_CR2|=0x00;//输出速度最大为10MHZ
        PC_ODR^=fz[j];//电机反转
        delay(25);
    }
  }
}

void delay(uchar ms)   //延时模块;
{
 	uchar i;
	while(ms--)
	{
	 	for(i=0;i<120;i++);
	}
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值