完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好!我们经常会用Finsh自定义一些测试函数,比如下面这样的: void test_led() void test_button() |
|
相关推荐
7个回答
|
|
这种循环没法通过命令来退出了,在你输入finsh命令进入该循环后,会发现什么命令都输入不了了。循环中加入延时可以不影响其他线程的执行,但是finsh仍然是输入不了任何指令,除非退出该循环。
也没啥好办法,可以通过在循环中加入定时、计数让循环执行一段时间自动退出,或者依据button的值,按下几次就退出。想要主动退出的话,也可以通过自定义finsh命令创建一个按键测试线程,并运行,退出时再通过自定义的finsh命令来删除这个线程。 |
|
|
|
定义执行测试函数:
static uint8_t g_test_running = 1; void test_button() { while(g_test_running) { printf("%dn", read_button()); rt_mdelay(10); } } MSH_CMD_EXPORT(test_button, test_button); 定义退出测试函数: void test_button_exit() { g_test_running = 0; } MSH_CMD_EXPORT(test_button_exit, test_button_exit); 简单实现,试试看? |
|
|
|
这种方式应该可以,但是不是太好,我们是在终端一直打印按键的状态的同时,输入test_button_exit并回车,如何能直接按ctrl+c把它就直接停了就好了。
|
|
|
|
finsh线程函数是finsh_thread_entry,里面没有定义ctrl+c按键的功能,可以尝试自己定义,另外你的测试函数需要放在单独的线程里面,这样才有可能通过ctrl+c来关闭线程
|
|
|
|
要退出它有N种方法,你可以根据你的需求去实现。
|
|
|
|
那就写一个开始测试的,一个结束测试的,然后测试里面while(1)循环记得让出cpu,进行系统调度
|
|
|
|
你可以试试在命令函数中创建一个线程,在线程里面while循环,看看这样能否达到你的需求。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1379 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1080 浏览 0 评论
1502 浏览 0 评论
1385 浏览 0 评论
1030 浏览 0 评论
74595 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 19:42 , Processed in 0.739555 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号