IC解密STM8S单片机通过蓝牙与智能手机实现串口通讯
IC解密串口通讯具有悠久历史的,最基本、最简单的通讯方式,即使在当前这个注重移动和无线互联的时代,也少不了串口通讯的身影。比如对小数据量数据的无线传输,虽然物理链路用蓝牙或WIFI传输,但最后到单片机数据交互上,可能还是用了串口通讯。
STM8S系列单片机有1~3个通用异步收发器(UART)支来持串口通讯,在这个部分里,将以STM8S单片机通过蓝牙与智能手机通讯,实现一个echo功能(单片机将收到来自于手机的数据原样返回给手机),来讲解如何使用单片机的串口功能。

1、电路设计
电IC解密路采用一款蓝牙转串口的模块实现蓝牙通讯,这款蓝牙模块有四个引脚,VCC、GND、TXD、RXD,只要将模块的VCC、GND引脚与电源连接,TXD、RXD引脚与单片机的RXD(即PD6)、TXD(即PD5)引脚相连就可以了。注意TXD和RXD一定要交叉相连,即蓝牙模块的TXD接单片机的RXD,蓝牙模块的RXD接单片机的TXD。
电路图如下,M1是蓝牙模块,电路原理很简单,就不多解释了:
2、软件设计
蓝牙模块里面已经实现了蓝牙的连接、认证等操作,并把蓝牙协议之上的应用数据转换为串口协议,在单片机软件上,只需要实现串口上数据读写。
即要实现的功能就是接受串口数据,并把收到的数据再用串口发送出去。
1)串口设置
STM8S标准库函数中提供了三个设置相关的函数:UART1_DeInit(),UART1_Init(),UART1_ITConfig()。第一个UART1_DeInit()是重置UART1,没有输入参数。重点是第二个UART1_DeInit()设置串口工作状态。先来看看函数接口定义:
void UART1_Init(uint32_t BaudRate, UART1_WordLength_TypeDef WordLength,
UART1_StopBits_TypeDef StopBits, UART1_Parity_TypeDef Parity,
UART1_SyncMode_TypeDef SyncMode, UART1_Mode_TypeDef Mode)
每个参数的作用如下:
BaudRate: 波特率
WordLength : 字节长度,取值为UART1_WORDLENGTH_8D或UART1_WORDLENGTH_9D
StopBits: 停止位,支持1个/0.5个/2个/1.5个停止位,取值为UART1_STOPBITS_1/UART1_STOPBITS_0_5/UART1_STOPBITS_2/UART1_STOPBITS_1_5。
Parity:奇偶校验位,UART1_PARITY_NO/UART1_PARITY_EVEN/UART1_PARITY_ODD
SyncMode:单片机UART_CK输出同步时钟的设置,不用UART_CK输出选择UART1_SYNCMODE_CLOCK_DISABLE即可。
Mode: 串口通信模式,

芯片解密