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++);
}
}