STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例

STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例


  • 利用ST Visual Develop配置环境和工程,利用ST Visual Programmer工具来烧录程序。安装cosmic stm8 32k C编译器 v4.3.4插件,是为了实现在ST Visual Develop环境下使用C语言来开发stm8系列单片机,在默认没有安装第三方插件情况下,ST Visual Develop工具是不支持C语言开发的。

🛠开发环境搭建

  • ST Visual Programmer STM8官方地址
  • https://www.st.com/zh/development-tools/stvp-stm8.html
    在这里插入图片描述
  • cosmic stm8 32k C编译器 v4.3.4插件
  • https://www.jb51.net/softs/626867.html#downintro2
1.ST Visual Develop开发和IAR开发环境对比相同的地方是,都需要先创建一个工作空间,然后再创建工程。

在这里插入图片描述

2. 添加头文件。
根据自己stm8型号选择对应的头文件。

头文件位置:C:\Program Files (x86)\STMicroelectronics\st_toolset\include
在这里插入图片描述

  • 安装了ST Visual Programmer STM8才有的。(上面提供有链接)

在这里插入图片描述

工程概览

在这里插入图片描述

  • mian.cstm8_interrupt_vector.c文件是在创建时,会自动生成。头文件需要自己的芯片型号添加进来。
  • 芯片型号可在工程当中重新修改型号:
    在这里插入图片描述
    在这里插入图片描述
  • 串口波特率计算内容请参考文章前面的相关篇内容。

🌼串口数据收发示例

#include"stm8s903k3.h"
#include"stdio.h"

#define _COSMIC_
/*
 由于不同的编译器 putcha 和 getchar 形参和返回值略有不同。
 因此此处采用宏定义的方式区别。
 _RAISONANCE_ 和 _COSMIC_ 这2个宏是由编译器自动添加的预编译宏
*/
#ifdef _RAISONANCE_
 #define PUTCHAR_PROTOTYPE int putchar (char c)
 #define GETCHAR_PROTOTYPE int getchar (void)
#elif defined (_COSMIC_)
 #define PUTCHAR_PROTOTYPE char putchar (char c)
 #define GETCHAR_PROTOTYPE char getchar (void)
#else /* _IAR_ */
 #define PUTCHAR_PROTOTYPE int putchar (int c)
 #define GETCHAR_PROTOTYPE int getchar (void)
#endif /* _RAISONANCE_ */


PUTCHAR_PROTOTYPE
{
 /* 发送一个字符 c 到UART1 */
	UART1_DR = c;
 /* 等待发送完毕 */
 while (!(UART1_SR&0x40));
 return (c);
}


GETCHAR_PROTOTYPE
{
 #ifdef _COSMIC_
  char c = 0;
 #else
  int c = 0;
 #endif
 /* 等待新数据到达  */
 while (!(UART1_SR&0x40));
 /* 读取数据寄存器 */
 c = UART1_DR;
 return (c);
}

void CLK_Init(void)
{
	//  CLK_ECKR = 0x01; //开启外部时钟寄存器
//  CLK_SWR = 0xb4; //HSE外部时钟源作为主时钟源
//  CLK_CKDIVR = 0x00;//不分频
  
  CLK_ICKR |= 0X01; //使能内部高速时钟 HSI
  CLK_CKDIVR = 0x00; // 不分频,16M
 //    CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M 
   while(!(CLK_ICKR&0x02)); //HSI准备就绪
     CLK_SWR = 0xE1;//HSI内部时钟源作为主时钟源(复位值)
}
void UART1_Init(void)
{
	 UART1_CR3 = 0x00;
	 /*disable LIN mode 
	-one stop bit
	-disable SCK
	*/
    UART1_CR2  = 0x00;
		/*disable TX interrupt
	  disable TX completion interrupt
		disable RX interrupt
		disable idle interrupt
		disable TX and RX
		没有发送断开帧
	*/
    UART1_CR3  = 0x00;
		/*one start bit 
	eight data bits 
	 wake up by idle bus
	 disable ECC and EEC interrupt
	 UART enable
	*/
	
/* 波特率:9600 */  
   UART1_BRR2 = 0x02;//
   UART1_BRR1 = 0x68;//
  /* 波特率:115200 */   
//    UART1_BRR2 = 0x0b;
 //   UART1_BRR1 = 0x08;
 UART1_CR2  = 0x0C; //enable TX and RX

}
/***
char putchar(char c)
{
	while(!(UART1_SR&0x40));
	UART1_DR = c;
	while(!(UART1_SR&0x40));
    return (c);
}
***/
void delay (unsigned int x)
{
	unsigned int i,j;
	for(i=x;i>0;i--)
		for(j=300;j>0;j--);
}
void main()
{	
	unsigned char c;
	CLK_Init();
	UART1_Init();
	UART1_CR2  = 0x0c;
	while(1)
	{
		printf("\n\r请输入一个按键");
		while(!(UART1_SR&0x20));
		c = UART1_DR;
		printf("\n\r输入按键为%c。",c);
		
	}

}

📚工程源码

链接:https://pan.baidu.com/s/1vQcTd21biHqHV45Ya0UC7g 
提取码:p3iw
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值