完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近使用STM32CubeIde生成工程,就先做一个简单的串口工程,使用NUCLEO-WBA52CG板子进行调试。
在初始化完毕后,使用printf打印log,重写了int io_putchar(int ch) 函数,发现没有串口没有输出,使用SWD进行debug,并对syscalls.c中的_write函数以及重写的io_putchar函数打了断点,结果printf执行后,这两个断点没有被执行。而且printf函数的返回值与字符串的长度相等。 以前用STM32CubeIde生成的工程也使用了同样的单板调试,也使用串口输出,没有任何问题。这次不知道为啥会这样。printf函数又没有给源码,没办法看为啥这样。而且这个问题与串口完全没有关系,就是一个C库调用的问题,即使串口不初始化,但是执行printf也应该要调用_write和__io_putchar函数才对 |
|
相关推荐
1个回答
|
|
在STM32CubeIDE中,如果printf函数没有调用_write和__io_putchar函数,可能有以下几个原因:
1. 串口配置不正确:请检查您的串口配置是否正确,包括波特率、数据位、停止位和奇偶校验位等。确保这些参数与您的串口设备相匹配。 2. 串口初始化未完成:请确保在调用printf之前,串口已经初始化并配置完成。您可以在main函数中添加串口初始化代码,例如: ```c int main(void) { // 初始化代码 HAL_Init(); SystemClock_Config(); MX_USART2_UART_Init(); // 使用printf打印日志 printf("Hello, STM32!n"); while (1) { // 其他代码 } } ``` 3. 重写io_putchar函数的问题:请确保您正确地重写了io_putchar函数,并且该函数被正确调用。您可以在该函数中添加一些调试信息,以确保它被调用。 4. 编译器优化问题:在某些情况下,编译器优化可能会导致printf函数不调用_write和__io_putchar函数。您可以尝试在printf函数调用前后添加一些调试代码,以确保编译器不会优化掉这些调用。 5. 库文件问题:可能是您使用的库文件与您的硬件平台不兼容。您可以尝试重新生成工程,或者检查库文件是否正确。 6. 检查您的断点设置:确保您的断点设置正确,并且调试器能够正确地在这些断点处暂停。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:59 , Processed in 0.661369 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号