完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
背景
想必大家拿到RVB2601都会跑一下自带的helloworld例程,其中消息是通过LOGD函数打出的。
与此同时,由于带了stdlib库,printf函数也是可以使用的,可以正常地在putty上打印出消息来。但是如果我们如果与上位机交互,scanf是无法使用的。 值得注意的是,如果有与我一样用putty连接RVB2601的朋友们,会碰到在虚拟串口窗口上打不出字的情况,可以在putty的configuration中找到connection-serial-flow control,putty默认用的是XON/XOFF,将其改成None即可。 使用cli_getchar的尝试 接下来就可以处理读取数据的函数,常用的scanf()函数在这里是没有定义的,只能考虑从uart获取数据,uart_getchar()函数于此也是不可用的,如果从头写一个从uart获取消息的功能需要设计到很多方面。由于并没有现成现成的资料,群中的清欢老师建议参考cli中cli_adapt.c中cli_getchar函数,定义如下所示。
这个函数本来是用于输入aos的指令用的,在main.c中直接调用该函数,将数据传入我们自己的字符串能够起到作用,调用如下所示。
虽然能读入键盘中的数据,但是考虑到可能是aos的cli部件的一部分的原因,每次总是由aos先吞一个字符,然后输入的第二个字符才会传到我们定义的char中去。 禁用cli的尝试这里忙碌的死龙老师建议禁用cli组件,我的理解是在sdk_chip_ch2601包中把cli组件拖出去,如下图所示,但是编译上会产生问题。 这里一篇博文给了我启发,是不是我们可以从port1获取数据。https://blog.csdn.net/weixin_34120274/article/details/89656272 标准输入输出串口的逻辑端口号必须为0,并不意味着标准输入输出只能通过固定的端。因为这个0指的是逻辑端口,逻辑端口与物理端口存在一个映射关系。在一个由多个串口的芯片上,可以将port0映射到任意的串口。逻辑端口到物理端口的映射是在hal的对接代码中实现的。 以STM32平台为例,其hal_uart_send函数实现如下: cli中默认的uart端口使用是0,如果我们可以把cli_adapt.c中的头文件与cli_getchar搬到main.c中并指定uart1端口为1是否就能解决问题? 由图下可见,会产生互斥锁的问题,该方案也行不通。 总结 就目前的进展看,能实现的还是只有cli_getchar函数然后让aos吞掉一个字符的方法能够相对接近实现效果。这个问题的解决本身不很复杂,需要继续探索。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15715 浏览 1 评论
13766 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19689 浏览 2 评论
59141 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88264 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
795浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
694浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 20:25 , Processed in 0.549927 second(s), Total 64, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号