STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例相关的知识,希望对你有一定的参考价值。
STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例
- 相关篇《STM8S903K3T6C基于IAR寄存器开发串口通讯示例》
- 📺环境配置和工程创建到编译和测试全过程演示:
- 利用
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.c
和stm8_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
以上是关于STM8S903K3T6C基于ST Visual Develop开发串口数据收发示例的主要内容,如果未能解决你的问题,请参考以下文章
STM8S903K3T6C基于ST Visual Develop开发输入输出按键检测示例
STM8S903K3基于ST Visual Develop开发串口接收中断示例