1. 程式人生 > >嵌入式重定向 printf

嵌入式重定向 printf

學習stm32,打交道最多的莫過於串列埠通訊了,但是官方的串列埠傳送庫太噁心了,完全不好用甚是還念C語言的printf,想輸出什麼就有什麼,
現在,一步步來做個重定向,讓你的stm32可以跟C語言一樣能想看什麼就看什麼:

首先:

新增printf的標頭檔案 :
  #include <stdio.h>    //當時學C語言最熟悉的stdio.h

其次:

改寫int fputc(int ch, FILE *f)函式

int fputc(int ch, FILE *f);

int fputc(int ch, FILE *f)
{

USART_SendData(USARTx, (uint8_t) ch);

while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);

return ch;
}

最後:

在keil 平臺上改下設定:

Use MicroLIB  ->Target -> Code Generation -> 選中Use MicroLIB

當然,前提是你初始化了USARTx

在IAR中一樣的:

只不過最後一個設定改一下Projec t- >Options -> General Options -> Library Configuration中的Library 項由"Normal"改為"Full"

相關推薦

嵌入式定向 printf

學習stm32,打交道最多的莫過於串列埠通訊了,但是官方的串列埠傳送庫太噁心了,完全不好用甚是還念C語言的printf,想輸出什麼就有什麼,現在,一步步來做個重定向,讓你的stm32可以跟C語言一樣能想

定向printf

char uart 重定向 std type fine clas blog urn #include "stdio.h"#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define

CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 開發板 第一件事就是移植串口驅動,定向 printf

ade 默認值 hand drivers exp bin 初始化 strong simple /* * board_uart.c * * Created on: 2018年7月3日 * Author: admin */ #include "boa

定向printf,輸出到檔案裡

FILE* fp = 0;if(0 == ( fp = freopen("OUT.txt", "w" ,stdout)))    printf("Cannot open file.\n"); printf(“test data to file\n”); fclose(fp);

【STM32】keil MDK下定向printf到串列埠(基於STM32CubeMX)

概述 在keil MDK環境下重定向printf與keil C51不同,由於本人使用了STM32CubeMX生成工程模板,HAL_USART_Transmit函式即是模板裡串列埠輸出的函式。由於pri

STM32中使用HAL庫定向printf()函式

函式新增標頭檔案 #include "stdio.h" 新增函式 // 新增這個函式 int fputc(int ch,FILE *f) { uint8_t temp[1]={ch};

STM8L151在STVD/IAR下定向printf函式

之前一直是在IAR下對STM8L151進行程式設計,因為在IAR的參考例子比較多,關鍵是很多配置可以參考,主要是參考風馳的STM8例子開發的,在此表示感謝。 最近由於需要在STVD下對STM8L151進行程式設計,在程式中有用到Printf函式來列印除錯資訊,編譯的時候發現將<s

STM32定向printf的兩種方法,並解決在TIMER2中printf只能列印double型別的整數部分

方法一:直接在工程中新增以下程式碼,然後那個c檔案要使用,直接用 #include "stdio.h" 即可使用printf/**************加入以下程式碼,支援printf函式,而不需要選擇use MicroLIB***************/ #if 0

Linux 標準 輸入 輸出 定向. printf 不輸出到螢幕的解決辦法

方法1: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/stat.h> #include <fcntl.h&g

分別在IAR for STM32、IAR for STM8、MDK中定向printf的方法

1、STM32在IAR中呼叫printf函式的一個方法 原文地址:http://blog.sina.com.cn/s/blog_668bcb8f01018ect.html 在串列埠都配置好的情況下,在工程的其中一個c檔案中加入如下程式碼: 注:直接在ma

嵌入式除錯printf定向到檔案

 除了人工的分析之外,最簡單最直接的除錯方法要算printf了。不過,我們這裡推薦使用的並不是初學C語言時使用的函式int printf(const char *format, ...),而是稍微複雜一點的fprintf()函式,因為它更方便我們之後重定向錯誤輸出資訊到指定的

STM32 的 printf() 函數串口定向(HAL庫標準庫都適用)

核心 spa color turn scanf函數 main hal pan art 1.建立工程 2.核心:添加新文件usar_fputc.c (名字隨便自己命名),把文件添加到項目中去    #include "stdio.h"  #include "stm32f1xx

STM32中如何對printf函數定向

https 差異 nco 標準 工作 顯示 結果 pretty 安全 轉載地址:https://blog.csdn.net/qq_29344757/article/details/75363639   通過USART1向計算機的串口調試助手打印數據,或者接收計算機串

linux中將printf定向到telnet的方法和總結

在linuxc開發過程中肯定會遇到重定向的問題,重定向最多的就是printf,下面給出重定向的程式碼和需要注意的問題。 void telnetCtlPrintf(int index) { int fd; char tempPath[64]; memset(tempPath,0,s

關於STM32中printf函式的定向問題

printf函式一般是列印到終端的,stm32晶片除錯中經常需要用到串列埠來列印除錯資訊,那能不能用串列埠實現類似windows的Console中的printf呢? 答案是肯定的,那就是printf函式的重定向。 使用KEIL5對stm32的printf函式進行重定向,有兩種方法:一種是使用微庫,另一種是不使

STM32的printf函式定向

在前面學習了STM32的串列埠程式設計,通過USART1向計算機的串列埠除錯助手列印資料,或者接收計算機串列埠除錯助手的資料,接下來我們可以實現STM32工程上的printf()函數了,方便用於程式開發中除錯資訊的列印。 1. 法1:使用MicroLIB庫 1.1 K

stm32 串列埠的printf函式定向

 串列埠的printf函式重定向分為2種情況:使用MicroLIB庫與不使用MicroLIB庫,具體實現程式碼見下: #if 1 /*****************不使用MicroLIB庫需加上該

【STM32CubeMX】 串列埠通訊(USART) Printf定向

STM32CubeMX: Version 4.26.1 MDK-ARM: Version 5.24.2 開發板: 中移onenet 麒麟座MINI板 晶片: STM32F103CBT6 1.STM32CubeMX設定 設定外

定向C庫中stdio檔案中的printf()函式,檔案流-->串列埠USART1

1、printf()函式: 我們以前在VC6.0中程式設計時,包含include<stdio.h>標頭檔案之後,呼叫printf()函式後可以向控制檯傳輸(列印)一連串字元等。 若要在STM32上也想用printf()函式向指定的裝置上傳輸(列印)一串資料的話,

嵌入式檔案系統和輸出定向

概述 嵌入式檔案系統 Linux檔案描述符 Shell資料重定向 嵌入式檔案系統 FAT 12/16/32 NFS網路檔案系統 FFS用於Flash儲存器 以檔案形式管理I/O裝置 Linux檔案描述符 一切皆檔案,Linu