【杰理蓝牙开发】AC695x 串口使用

本文主要记录 杰理蓝牙串口的使用,可通过两种方式实现串口数据接收

0. 个人简介 && 授权须知

image-20230911133730620

📋 个人简介

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的菜鸟打工人。😎
  • 📝 个人主页:欢迎访问我的博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:杰理蓝牙开发专栏 🍁 🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

转载文章,禁止声明原创;不允许直接二次转载,转载请根据原文链接联系作者

若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
但对于未注明转载来源/原文链接的文章,我将保留追述的权利。

作者:积跬步、至千里

image-20230911133724204

1. 串口数据接收

1.1 方式1:通过串口中断回调函数接收数据

  • 串口接收中断发生,打包 event ,包括 事件的类型,参数,值
  • sys_event_notify(&e);,通知系统有事件A发生
  • uart_event_handler(),在应用层的串口事件处理函数中,解析数据
    • 如果事件A发生,uart_bus->read ,读取数据
    • 若果事件B发生,xxxxxxxxxxxxxxxxxxxxxxxx

【代码架构】

u_arg.isr_cbfun = uart_isr_hook;   // 串口中断回调函数接口
uart_bus = uart_dev_open(&u_arg);  // 打开设备

static void uart_isr_hook(void *arg, u32 status)
{
    if (status == UT_RX) {
        // 打包事件信息参数
        xxxxxxxxxxxxx
        // 通知系统事件发生
        sys_event_notify(&e);
    }
}


// 应用层事件处理函数
static void uart_event_handler(struct sys_event *e)
{
    if(事件A发生){
        读取串口数据,打包处理
    }
}
SYS_EVENT_HANDLER(SYS_DEVICE_EVENT, uart_event_handler, 0);

1.2 方式2:通过 freertostask 接收串口数据

u_arg.isr_cbfun = uart_isr_hook;   // 串口中断回调函数接口
uart_bus = uart_dev_open(&u_arg);  // 打开设备

os_task_create(uart_u_task, (void *)uart_bus, 31, 512, 0, "uart_u_task"); //创建数据接收任务

static void uart_u_task(void *arg)
{
    while(1){
       // 读取数据,没有读取到数据时,阻塞信号量,不往下执行 
       uart_bus->read(uart_rxbuf, sizeof(uart_rxbuf), 0); 
        
        // 数据打包处理
        xxxxxxxxxxxxxxxxxxxx
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步、至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值