完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
th_uart2 = rt_thread_create("uart2_rec" , Serial2Th_entry , RT_NULL , 512 ,10 , 100);
if(RT_NULL != th_uart2) { rt_thread_startup(th_uart2); } void Serial2Th_entry(void * parameter) { static char uart2rx_buffer; while(1) { LOG_D("jion Serial2Th_entry\r\n"); while(rt_device_read(serial_u2 , 0 , &uart2rx_buffer , 1) != 1) { rt_sem_take(&uart2rx_sem , RT_WAITING_FOREVER); LOG_D("%c\r\n" , uart2rx_buffer); } rt_device_write(serial_u2,0,&uart2rx_buffer,sizeof(uart2rx_buffer)); } } |
|
相关推荐
1个回答
|
|
在STM32F407上移植RTThread后,创建一个线程成功,但发现该线程只执行一次。根据您提供的代码,我们可以逐步分析可能的原因:
1. 首先,检查线程创建是否成功: ``` th_uart2 = rt_thread_create("uart2_rec", Serial2Th_entry, RT_NULL, 512, 10, 100); if(RT_NULL != th_uart2) { rt_thread_startup(th_uart2); } ``` 这里创建了一个名为"uart2_rec"的线程,入口函数为Serial2Th_entry,优先级为10。如果线程创建成功,会调用rt_thread_startup启动线程。 2. 检查线程入口函数Serial2Th_entry: ``` void Serial2Th_entry(void * parameter) { static char uart2rx_buffer; while(1) { LOG_D("join Serial2Th_entryrn"); } } ``` 在这个函数中,使用了无限循环(while(1)),并且每次循环都会打印一条日志。从代码上看,这个函数应该能够持续运行。 3. 可能的原因: - 线程优先级问题:如果其他线程的优先级高于该线程,可能会导致该线程无法获得CPU时间片,从而无法执行。可以尝试调整线程优先级。 - 调度器问题:如果调度器出现问题,可能会导致线程无法正常调度。可以尝试重启RTThread或者检查调度器的配置。 - 硬件问题:如果STM32F407硬件存在问题,可能会影响线程的执行。可以检查硬件连接和配置。 4. 解决方案: - 检查线程优先级,确保该线程能够获得足够的CPU时间片。 - 检查RTThread的调度器配置,确保调度器正常工作。 - 检查STM32F407硬件连接和配置,确保硬件没有问题。 通过以上分析,您可以逐步排查问题,找到导致线程只执行一次的原因,并采取相应的解决方案。 |
|
|
|
只有小组成员才能发言,加入小组>>
157个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
906 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1317 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
942 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1209 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1218 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 04:08 , Processed in 7.864353 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号