完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
已经确定了设备每次会发送9字节数据,但是每次都只能读取到两字节数据,而且串口的配置都没问题 /* 接收数据回调函数 */ |
|
相关推荐
2个回答
|
|
参考官方示例一次读一个。读取数据线程会尝试读取一个字符数据,如果没有数据则会挂起并等待信号量,当串口设备接收到一个数据时会触发中断并调用接收回调函数,此函数会发送信号量唤醒线程,此时线程会马上读取接收到的数据。
static void serial_thread_entry(void *parameter) { char ch; while (1) { /* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */ while (rt_device_read(serial, -1, &ch, 1) != 1) { /* 阻塞等待接收信号量,等到信号量后再次读取数据 */ rt_sem_take(&rx_sem, RT_WAITING_FOREVER); } /* 读取到的数据通过串口错位输出 */ ch = ch + 1; rt_device_write(serial, 0, &ch, 1); } } |
|
|
|
uart_rx_ind()是串口接收回调函数,中断接收每次进中断都会触发一次。你可以加个计数,一共会释放9次信号量,官方给的例程应该可以的,但是不要在uart_rx_ind()中仿真打断点,这个回调函数本质上会在串口中断中执行,打断点会导致后面数据收不到。之前开发试过打断点收到的是2字节数据
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
666 浏览 0 评论
2891 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2327 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2801 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
30297 浏览 11 评论
72477 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 23:19 , Processed in 0.605502 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号