STM32Printf函式實現方法

2021-03-04 09:56:13 字數 1483 閱讀 2135

【原創】stm32

【原創】

2012-04-3019:30:32|分類:stm32|字型大小大中小訂閱

今天除錯了stm32f407的adc,一切順利,然而用串列埠傳送adc結果時都是16進製制數,看著很不爽。於是打算用用牛b的「printf」函式,按照以前的做法,在main檔案中新增了「stdio.h」,寫好了「printf」函式,沏杯茶,打算邊品茶邊坐等結果,然而這一坐竟坐了半天也沒見結果

。一除錯發現程式停在了printf函式處,百思不得其解,百度之,得答案,不敢獨享,分享如下:

stm32串列埠通訊中使用printf傳送資料配置方法(開發環境keil rvmdk)

標籤:stm32串列埠通訊printf方法2011-06-2923:29

在stm32串列埠通訊程式中使用printf傳送資料,非常的方便。可在剛開始使用的時候總是遇到問題,常見的是硬體訪真時無法進入main主函式,其實只要簡單的配置一下就可以了。下面就說一下使用printf需要做哪些配置。

有兩種配置方法:

一、對工程屬性進行配置,詳細步驟如下

1、首先要在你的main檔案中包含「stdio.h」(標準輸入輸出標頭檔案)。

2、在main檔案中重定義函式如下:

//傳送資料

int fputc(int ch,file*f)

//接收資料

int getkey(void)

這樣在使用printf時就會呼叫自定義的fputc函式,來傳送字元。

3、在工程屬性的「target"->"code generation"選項中勾選"use microlib"」microlib是預設c的備份庫,關於它可以到網上查詢詳細資料。

至此完成配置,在工程中可以隨意使用printf向串列埠傳送資料了。

二、第二種方法是在工程中新增「regtarge.c」檔案

1、在main檔案中包含「stdio.h」檔案

2、在工程中建立乙個檔案儲存為regtarge.c,然後將其新增工程中

在檔案中輸入如下內容(直接複製即可)

#include

#include

#pragma import(__use_no_semihosting_swi)

extern int sendchar(int ch);//宣告外部函式,在main檔案中定義extern int getkey(void);

struct__file;

file__stdout;

file__stdin;

int fputc(int ch,file*f)

int fgetc(file*f)

void_ttywrch(int ch)

int ferror(file*f)

void_sys_exit(int return_code)

3、在main檔案中新增定義以下兩個函式

int sendchar(int ch)

int getkey(void)

至此完成配置,可以在main檔案中隨意使用printf。

STM32外部中斷詳解

一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...

STM32的can匯流排實驗心得

標籤 匯流排心得實驗 2010 09 01 21 08 工作模式 bxcan有3個主要的工作模式 初始化 正常和睡眠模式。初始化模式 軟體通過對can mcr暫存器的inrq位置1,來請求bxcan進入初始化模式,然後等待硬體對can msr暫存器的inak位置1來進行確認。軟體通過對can mcr...

STM32的can現場匯流排實驗心得

最近在搞stm32實驗板的can現場匯流排實驗,之前只是搞過stc51的串列埠通訊,相比之下,發覺can匯流排都頗為之複雜。開始時,知道自己是新手,只知道can匯流排跟序列通訊,485通訊,i2c通訊一樣都是用來傳輸資料通訊的,對其工作原理一竅不通,唉!從基礎開始看書看資料,先了解它的基本原理。原來...