测试printf 测试printf函数的代码不变,在MDK设置中取消勾选USE MICROLIB,然后重新编译,下载代码后试验现象如下: 4.在GCC中使用标准库重定向printf 不同的编译器对于C库的底层实现机制是不同的,所以上面两种在MDK中的实现方法,在使用Gcc编译器的时候是不可行的。 在Gcc中重定向printf函数时注意两个关键点: 与重定义...
fgetc函数原型:int fgetc(FILE * /*stream*/); 3、STM32的串口重定向 (1)要实现串口的重定向打开工程以后,导入stdio.h头文件。 (2)点击工具栏的魔方棒,勾选勾选Target中的use MicroLIB成为微型C语言库是标准C语言的库精简以后得库特别适合嵌入式领域使用,注意:勾选了以后会程序增加几KB的代码,方便以后调试,...
//int fputc(int ch, FILE *f) //{ // /* 发送一个字节数据到USART1 */ // USART_SendData(USART1, (u8) ch); // // /* 等待发送完毕 */ // while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); // // return (ch); //} // /// 重定向c库函数scanf到USART1 //int...
标准的20针JTAG接口是可以的,只需要在MDK里设置使用SWD接口即可。 2 添加重定向文件 将下面的文件保存成任意C文件,并添加到工程中。这里对这个文件简单说明一下,要知道我们的程序是在单片机上运行的,为什么printf可以输出到MDK窗口里去呢?这是因为 标准库中的printf实际上调用 fputc实现输出,所以我们需要自己编写一个...
STM32设置串口重定向输出 一、在CUBEMX上配置好串口并使能全局中断并且勾选生成单独的文件 二、打开生成的keil工程并配置代码 1.点击魔术棒改配置勾选“Use MicroLib” 2.打开usart.c添加重定向函数 重定向函数: intfputc(intch,FILE*f){while((USART1->SR&0X40)==0);//循环发送,直到发送完毕USART1->DR=...
2. usart_utils.c #include "usart_utils.h"#include "stm32f10x.h"#include "led_utils.h"// 初始化USART3void USART3_Init(u32 bound) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // 使能USART3和GPIOB时钟 RCC_A...
return c; } //重定向scanf函数到串口 意思就是说接受串口发过来的数据 /*fgetc*/ int fgetc(FILE * F) { HAL_UART_Receive (&huart1,&ch_r,1,0xffff);//接收 return ch_r; } 3.修改main.c 文件 #include "stdio.h" /*添加头文件 */ ...
STM32的printf函数重定向 Part1法1:使用MicroLIB库 1.1 KEIL-MDK中的Use MicroLIB选项 在MDK开发环境中, MicroLib是缺省c库的备选库,它可装入少量内存中,与嵌入式应用程序配合使用,且这些应用程序不在操作系统中运行。 MicroLib进行了高度优化以使代码变得很小,功能比缺省c库少,不具备某些ISO c特性,部分库函数的...
1. 创建工程 用cubemx创建一个工程makefile工程。记得开串口。 2. 重定向 在main.c对printf重定向,增加如下代码: 3. syscalls.c 很...