完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚开始在MACOS下开发STM32的程序,现在出现了一些很奇怪的问题,看是否大家有遇到这样的问题。
开发配置如下 1.STM32cube427,STM32Cube FW_F4 V1.21.0 2.Version: Neon.3 Release (4.6.3) Build id: 20170314-1500 在while(1)中的源代码 void TASK(void){ double b = 2.2f; HAL_UART_Transmit( huart1,(uint8_t *)”matlab_uartrn”,13,0xffff); printf(“MATLAB_UARTrn”); printf(“%d,”,123); printf(“1+1=%.2frn”,b); while(1){ LED_Flash(); HAL_Delay(200); printf(“%.2f,”,1.1); } } 程序一运行就能够在串口收到以下的信息: matlab_uart MATLAB_UART 123,1+1=2.20 但出当运行到while(1)里面的语句时候会出现,LED指示能够在200ms的时候闪烁一次,而printf函数没有正确输出数据。 在while(1)函数运行几分钟以后,串口能够一次收到一大串的的字符串 1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10,1.10 程序没有死机,就是都要等等几分钟才能够接收到一次串口发过来的一大串字符。 有谁能够解决一下这样的问题吗? 解决办法:1.在程序中禁止printf的缓冲机制:setbuf(stdout, NULL); 2.在printf语句后面加上更新缓冲区语句:fflush(stdout); |
|
相关推荐
1个回答
|
|
printf 内部有缓冲机制的,一般来说是碰到一个换行符清理一次内部缓冲区。你这样属于长期不输出换行符,如果需要及时输出,要么需要手工清缓冲区,要么需要禁掉输出缓冲区。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1937浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:12 , Processed in 1.147865 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号