完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
初始化位置错了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:04 , Processed in 0.549567 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1333