您的位置 首页 5G

STM8S单片机经过蓝牙与智能手机完成串口通讯的规划

STM8S单片机通过蓝牙与智能手机实现串口通讯的设计-STM8S系列单片机有1~3个通用异步收发器(UART)支来持串口通讯,在这个部分里,将以STM8S单片机通过蓝牙与智能手机通讯,实现一个echo功能(单片机将收到来自于手机的数据原样返回给手机),来讲解如何使用单片机的串口功能。

串口通讯具有悠长前史的,最基本、最简略的通讯方法,即便在当时这个重视移动和无线互联的年代,也少不了串口通讯的身影。比如对小数据量数据的无线传输,尽管物理链路用蓝牙或WIFI传输,但最终到单片机数据交互上,或许仍是用了串口通讯。

STM8S系列单片机有1~3个通用异步收发器UART)支来持串口通讯,在这个部分里,将以STM8S单片机经过蓝牙与智能手机通讯,完成一个echo功用(单片机将收到来自于手机的数据原样回来给手机),来解说怎么运用单片机的串口功用。

STM8S单片机经过蓝牙与智能手机完成串口通讯的规划

1、电路规划

电路选用一款蓝牙转串口的模块完成蓝牙通讯,这款蓝牙模块有四个引脚,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: 串口通讯形式,UART1_MODE_RX_ENABLE/UART1_MODE_TX_ENABLE/UART1_MODE_TX_DISABLE/UART1_MODE_RX_DISABLE/UART1_MODE_TXRX_ENABLE

这儿选用的蓝牙模块,与单片机的串口通讯默许是波特率9600,1个中止位,无奇偶校验位,不需求同步时钟,而要完成的echo功用要用到串口发送和接纳,所以这儿的详细参数应该是:

UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

第三个函数UART1_ITConfig()是设置串口通讯的中止程序:

void UART1_ITConfig(UART1_IT_TypeDef UART1_IT, FuncTIonalState NewState)

UART1_IT:指定中止类型,串口的中止品种较多,要点运用的是UART1_IT_RXNE_OR:即接纳完数据的中止。

NewState:表明要指定的中止是启用仍是封闭。

这儿只需求设置启用接纳数据的中止即可,所以这儿的详细参数应该是:

UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

留意在设置中止形式后,还需求启用中止,运用enableInterrupts()函数启用。

2)数据收发

数据发送比较简略,运用下面连个函数直接发送即可。

void UART1_SendData8(uint8_t Data);

void UART1_SendData9(uint16_t Data);

数据接纳杂乱一点,需求设置串口中止处理函数,产生串口接纳中止后,再调用下面两个函数获取串口收到的数据。

uint8_t UART1_ReceiveData8(void);

uint16_t UART1_ReceiveData9(void);

串口接纳中止向量是UART1_RX_IRQHandler中止中,所以要在stm8s_it.c的下面方位刺进中止处理的代码:

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)

{

/ * In order to detect unexpected events during development,

it is recommended to set a breakpoint on the following instrucTIon.

* /

//在这儿刺进接纳数据的处理,用比如用UART1_ReceiveData8()读出串口接纳到的数据

}

3)源代码

整个echo功用,软件要完成的是a)主函数main()中对串口进行设置,然后进入空循环,b)串口接纳中止处理函数中读取串口的数据,并从串口重复发送回去。完好的源代码如下:

main.c

void main(void)

{

UART1_DeInit();

UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);//UART1_MODE_TX_ENABLE);

UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

while (1);

}

stm8s_it.c

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)

{

UART1_SendData8(UART1_ReceiveData8());

}

3、衔接智能手机进行串口数据收发测验

将上面程序编译,下载到STM8S单片机上,先用智能手机与蓝牙模块配对,然后用蓝牙串口调试的APP(这类东西APP比较多,这儿用的是叫“蓝牙串口”的APP)与现已配对的蓝牙模块衔接上,最终发送数据(发送“test string”),能够看到单片机现已收到了数据,并原样发送回来了。

4、总结

本篇首要解说了STM8S单片机串口的设置和数据的收发处理,共触及以下知识点:

1)串口作业形式的设置

2)串口中止的设置和中止处理函数的编写

3)串口数据发送和接纳。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/345651.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部