完善资料让更多小伙伴认识你,还能领取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个回答
|
|
初始化位置错了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
795 浏览 0 评论
4743 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2605 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2949 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31683 浏览 11 评论
73056 浏览 21 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 03:11 , Processed in 0.669054 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号