完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
*芯片 HK32103VE
*编译器:keil5 RT_WEAK void rt_hw_console_output(const char *str) { rt_size_t i = 0, size = 0; /* empty console output */ ///< rt_enter_critical(); USART_ClearFlag(USART1,USART_FLAG_TC); size = rt_strlen(str); /* 直到字符串结束 */ for (i = 0; i < size; i++) { /* 换行 */ //RT-Thread 系统中已有的打印均以 n 结尾,而并非 rn,所以在字符输出时,需要在输出 n 之前输出 r,完成回车与换行,否则系统打印出来的信息将只有换行 if ( *(str+i) == 'n' ) { USART_SendData( USART1, 'r' ); while ( USART_GetFlagStatus( USART1, USART_FLAG_TXE ) == RESET ); } USART_SendData( USART1, *(str+i) ); while ( USART_GetFlagStatus( USART1, USART_FLAG_TXE ) == RESET ); } /* 退出临界段 */ rt_exit_critical(); } while ( USART_GetFlagStatus( USART1, USART_FLAG_TXE ) == RESET ); 这句话在rt中使用我通过debug看出死循环了,用printf就是可以的。 如果我去掉这句话,打印就只会打印字符串的最后一个字符。举例我要打印rt_kprintf("HIn");就只会答应'n'. 如果写成 rt_kprintf("HI"); rt_thread_delay(1000); rt_kprintf("you"); rt_thread_delay(1000); 字符串取消了'n' 就会打印 I 延时后 打印u 如果这些 rt_kprintf("HI"); rt_kprintf("HI"); rt_kprintf("OO"); rt_thread_delay(1000); rt_kprintf("you"); rt_thread_delay(1000); 就会打印 O 延时后 打印u ,上面的2个都直接跳过。 但是我在debug一个一个打印都是可以的,打印到一半就卡死。 |
|
相关推荐
1个回答
|
|
初始化位置错了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1752 浏览 0 评论
1698 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6911 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1927 浏览 0 评论
5592 浏览 0 评论
80198 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 21:46 , Processed in 0.400968 second(s), Total 38, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191