完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在STM32中是不是只要初始化了USART之后,然后再加上#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #define GETCHAR_PROTOTYPE int __io_getchar(FILE *f) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #define GETCHAR_PROTOTYPE int fgetc(FILE *f) #endif /* __GNUC__ */ 和下面这两个函数定义 PUTCHAR_PROTOTYPE { /* Place your implementation of fputc here */ /* e.g. write a character to the USART1 and Loop until the end of transmission */ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); return ch; } GETCHAR_PROTOTYPE { uint8_t ch = 0; HAL_UART_Receive(&huart1,&ch, 1, 0xffff); return ch; } 就可以用getchar 和printf到串口助手上去了啊?目前我可以实现printf的功能,但是getchar的功能还是不能实现。不知道哪里有问题?有大神知道的吗,指点一二吧,在线等。。。 |
|
相关推荐
15个回答
|
|
不能沉啊,学STM32卡在这里了
|
|
|
|
会不会是我初始化USART有问题,但是Printf函数能正常使用的。。。
|
|
|
|
读取时把时间缩短一下,1秒的超时最好。读取的时候,要有数据发送过来,不然收不到数据。楼主这个应该是卡死在getchar里面了吧。
|
|
|
|
谢谢我试试,但是我看见硬石里面写的是这样的 int fputc(int ch, FILE *f) { HAL_UART_Transmit(&husart_debug, (uint8_t *)&ch, 1, 0xffff); return ch; } /** * º¯Êý¹¦ÄÜ: Öض¨Ïòc¿âº¯Êýgetchar,scanfµ½DEBUG_USARTx * ÊäÈë²ÎÊý: ÎÞ * ·µ »Ø Öµ: ÎÞ * ˵ Ã÷£ºÎÞ */ int fgetc(FILE * f) { uint8_t ch = 0; HAL_UART_Receive(&husart_debug,&ch, 1, 0xffff); return ch; } 他也没有说把时间改小。卡死在getchar应该也不是,我在getchar下面写了printf函数,结果printf函数一直在发送数据 |
|
|
|
还有就是我把两个函数定义换成跟硬石里面一样的时候,发现printf函数也用不了了,我比较了不同的是第一个参数不同,我的地&huart1,硬石的是&huart_debug |
|
|
|
大神我说错了,是在getchar卡死了,麻烦大神帮我分析一下可能是什么问题 |
|
|
|
HAL_UART_Receive(&husart_debug,&ch, 1, 0xffff);
这个用你之前能printf的husart,后面的0xFFFF改为1000 |
|
|
|
问题已解决,非常感谢。正是你说的那样改短时间就好了,膜拜。。。 |
|
|
|
TOPCB 发表于 2018-11-8 15:02 谢谢,已经解决了,正是你说的那样 |
|
|
|
学习了。其实关于printf和getchar你可以自己写一个,或者参考一下网上的例子做一个。这样就不用局限于系统提供的,并且想用什么借口print都可以,比如USB.
|
|
|
|
不客气,有问题发帖即可。
|
|
|
|
在这个平台学习STM32真的会事半功倍,里面有好多无私的大神。。。
|
|
|
|
好帖子顶一顶!感谢楼主
|
|
|
|
|
|
|
|
一同学习学习。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1378 浏览 1 评论
1117 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
647 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1647 浏览 2 评论
1878 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 05:05 , Processed in 0.557746 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号