串口命令自动发送_WIFI模块开发教程之W600基础篇3:串口通讯

前言

UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。是在应用程序开发过程中使用频率最高的数据总线。本文使用RT_Thread通用 I/O 设备管理接口来访问串口硬件,从W600 UART1中读取数据,并原样返回。

一、API简介

RT_Thread支持设备API函数如下表所示:

9ada1ecc58fc899a117435f657987cbe.png

API详细说明,请参考RT_Thread官方文档中心串口设备描述,地址如下:https://www.rt-thread.org/document/site/

二、使用实例

1.环境配置

使用ENV工具配置串口资源,选择Hardware Drivers Config

c975e601f5755951fb9033ccba8534b2.png

选择on-chip Peripheral Drivers --->

cd6ba040c48f4b42359cff19f9051c5f.png

查看默认已经打开了串口1(PB11:RX, PB12:TX)

776a32773d502f456f2fc15d8b5d49ef.png

2.中断接收并发送

#include #include //  用于接收消息的信号量 */static struct rt_semaphore rx_sem;rt_device_t user_uart;static rt_err_t user_uart_input(rt_device_t dev, rt_size_t size){    rt_sem_release(&rx_sem);    return RT_EOK;}static void user_uart_thread_entry(void *args){    char ch;    while (1)    {        while (1 != rt_device_read(user_uart, -1, &ch, 1))        {            rt_sem_take(&rx_sem, RT_WAITING_FOREVER);        }        //send back        rt_device_write(user_uart, 0, &ch, 1);    }    }int main(void){    rt_err_t ret = RT_EOK;    char str[] = "hello world!";    user_uart = rt_device_find("uart1");    if (!user_uart)    {        rt_kprintf("find uart1 failed!");        return RT_ERROR;    }    rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);    rt_device_open(user_uart, RT_DEVICE_FLAG_INT_RX);    rt_device_set_rx_indicate(user_uart, user_uart_input);    rt_device_write(user_uart, 0, str, sizeof(str) - 1);    rt_thread_t uart_thread = rt_thread_create("user_uart", user_uart_thread_entry, RT_NULL, 1024, 25, 10);    if (uart_thread != NULL)    {        rt_thread_startup(uart_thread);    }else    {        ret = RT_ERROR;    }        return ret;}

三、下载运行

在ENV控制台,输入scons命令,在build/Bin目录下生成rtthread_1M.FLS,烧录运行后,将模块PB12连接串口小板的RX,PB11连接串口小板的TX,共地。

57f4e4e636e19b7bc3ab8d865c9024f8.png

上电后,模块会向串口小板发送hello world!,然后通过串口工具发送

hello RT_Thread,模块收到串口工具发送信息后,会自动返回。

be20c5eb7357d1ee2c8553692fd68434.png

作者:小驿

寄语:如果决定要出发,就不要把时间浪费在犹豫上!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值