国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32 的 printf() 函數(shù)串口重定向(HAL庫(kù)標(biāo)準(zhǔn)庫(kù)都適用)

發(fā)布者:BlossomBeauty最新更新時(shí)間:2025-02-19 來源: cnblogs關(guān)鍵字:STM32  printf()  函數(shù)  串口重定向  HAL庫(kù)  標(biāo)準(zhǔn)庫(kù) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

1.建立工程,配置好串口

2.核心:添加新文件usar_fputc.c (名字隨便自己命名),把文件添加到項(xiàng)目中去 

  #include 'stdio.h'
  #include 'stm32f1xx_hal.h'

  extern UART_HandleTypeDef huart1;
  uint8_t ch;
  uint8_t ch_r;

  //重寫這個(gè)函數(shù),重定向printf函數(shù)到串口
  /*fputc*/
  int fputc(int c, FILE * f)
  {
    ch=c;
    HAL_UART_Transmit(&huart1,&ch,1,1000); //發(fā)送串口,不同的單片機(jī)函數(shù)和串口命名不同,替換對(duì)于的函數(shù)串口名字即可實(shí)現(xiàn)不同庫(kù)和不同單片機(jī)的重定向了
    return c;
  }

 

  //重定向scanf函數(shù)到串口 意思就是說接受串口發(fā)過來的數(shù)據(jù)
  /*fgetc*/
  int fgetc(FILE * F)
  {
    HAL_UART_Receive (&huart1,&ch_r,1,0xffff);  //接收
    return ch_r;
  }

3.修改main.c 文件

  #include 'stdio.h' /*添加頭文件 */

  在main()函數(shù)里添加測(cè)試代碼:printf('n===函數(shù)Printf函數(shù)發(fā)送數(shù)據(jù)===n');  //測(cè)試內(nèi)容

4.打開串口助手測(cè)試最終效果如圖:

  


關(guān)鍵字:STM32  printf()  函數(shù)  串口重定向  HAL庫(kù)  標(biāo)準(zhǔn)庫(kù) 引用地址:STM32 的 printf() 函數(shù)串口重定向(HAL庫(kù)標(biāo)準(zhǔn)庫(kù)都適用)

上一篇:STM32 SPI 發(fā)送第一個(gè)數(shù)據(jù)不成功問題
下一篇:STM32 USART與USB接收不定數(shù)據(jù)方法,標(biāo)準(zhǔn)庫(kù)、HAL庫(kù)都適用

推薦閱讀最新更新時(shí)間:2025-06-07 10:53

實(shí)現(xiàn)STM32串口數(shù)據(jù)發(fā)送和printf函數(shù)重定向
在調(diào)試電機(jī)驅(qū)動(dòng)程序的時(shí)候,是不能隨便利用中斷來進(jìn)行一些寄存器或數(shù)據(jù)的查看的,不然你在運(yùn)行的時(shí)候突然來一下,如果占空比大的話那可能直接就把MOS管給燒了,所以我們很多情況下只能使用USART(串口)來進(jìn)行程序的調(diào)試和數(shù)據(jù)的監(jiān)控了。 對(duì)于STM32來說,由于很多內(nèi)容都是有庫(kù)來實(shí)現(xiàn)的,那就省了很多時(shí)間,直接看個(gè)例子就可以寫了,大致有4步步驟: 1 1、RCC始終初始化,對(duì)端口和USARTX使能時(shí)鐘 2 2、初始化端口功能,RX設(shè)置為輸入懸空,TX設(shè)置為復(fù)用功能的推挽輸出,注意GPIO_SPEED要設(shè)置下,我沒設(shè)置弄了半天都沒輸出 3 3、設(shè)置USARTX寄存器,波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等 4 4、看需要是否開中斷,我這里
[單片機(jī)]
STM32串口通信printf重定向方法
在源程序中加入如下代碼,包含“stdio.h”。 默認(rèn)使用USART1,確認(rèn)串口已經(jīng)初始化成功、 #pragma import(__use_no_semihosting) _sys_exit(int x) { x = x; } struct __FILE { int handle; /* Whatever you require here. If the only file you are using is */ /* standard output using printf() for debugging, no file handling */ /* is required. */ }; /*
[單片機(jī)]
STM32 HAL庫(kù)標(biāo)準(zhǔn)庫(kù)的區(qū)別
前言 ??相比較早幾年使用標(biāo)準(zhǔn)庫(kù)開發(fā)來講,最近幾年HAL庫(kù)的使用是越來越多,那么我們開發(fā)應(yīng)當(dāng)使用哪一種呢,本文著重介紹常用的幾種開發(fā)方式及相互之間的區(qū)別,白貓也好、黑貓也好,抓到耗子就是好貓。 STM32三種開發(fā)方式 ??通常新手在入門STM32的時(shí)候,首先都要先選擇一種要用的開發(fā)方式,不同的開發(fā)方式會(huì)導(dǎo)致你編程的架構(gòu)是完全不一樣的。一般大多數(shù)都會(huì)選用標(biāo)準(zhǔn)庫(kù)和HAL庫(kù),而極少部分人會(huì)通過直接配置寄存器進(jìn)行開發(fā)。 ??網(wǎng)上關(guān)于標(biāo)準(zhǔn)庫(kù)、HAL庫(kù)的描述相信是數(shù)不勝數(shù)。可是一個(gè)對(duì)于很多剛?cè)腴T的朋友還是沒法很直觀的去真正了解這些不同開發(fā)發(fā)方式彼此之間的區(qū)別,所以筆者想以一種非常直白的方式,用自己的理解去將這些東西表述出來,如果有描
[單片機(jī)]
<font color='red'>STM32</font> <font color='red'>HAL庫(kù)</font>與<font color='red'>標(biāo)準(zhǔn)庫(kù)</font>的區(qū)別
pic單片機(jī)使用printf函數(shù)
mplab 以及 iar 中printf的問題(下面第一條已驗(yàn)證過雷清生注2017-10-24 20:18) 1、在MPLAB PIC單片機(jī)中,要使用PRINTF,要在自己的工程中加入以下函數(shù) void putch(unsigned char byte) { /* output one byte */ while(!TXIF) /* set when register is empty */ continue; TXREG = byte; } 然后加上#include stdio.h 即可 2、在IAR ew8051中,要使用PRINTF,有3個(gè)工作 A、工程設(shè)置: generat option/library optio
[單片機(jī)]
STM32CubeMx生成的工程中使用Printf函數(shù)調(diào)試和IAP
一、STM調(diào)試信息打印方法。 1. 新建stm32cubemx工程,配置工程。 我用的是STM32cubeMx版本: Version 4.27.0, cube Version V1.0。 2. 在stm32cubemx工程,配置工程,勾選使用FreeRtOs系統(tǒng)。 注意,勾選左邊的,freertos,使用系統(tǒng)。stm32做的,非常方便。 3. 生成帶系統(tǒng)FreeRtos的源碼工程(我這里基于keil MDK v5) 4. 生成工程,然后用keil打開,在源碼里面添加代碼,使得USART1重定向到標(biāo)準(zhǔn)Printf函數(shù)中輸出。 在generated file里面,勾選:generate periheral init
[單片機(jī)]
STM32CubeMx生成的工程中使用<font color='red'>Printf</font><font color='red'>函數(shù)</font>調(diào)試和IAP
printf 函數(shù)在keil2 中的使用
/****************************************************************************/ /* */ /* SERIAL.C: Interrupt Controlled Serial Interface */ /* */ /****************************************************************************/ //采用中斷接收串口數(shù)
[單片機(jī)]
ARM 平臺(tái)printf函數(shù)定位到uart輸出介紹
1.1 ARM 串口輸出函數(shù)uart_printf ARM如果能使用C函數(shù)庫(kù)自帶的printf函數(shù)格式輸出,那多方便,但是默認(rèn)的printf都是定位到stdout終端,而不是串口,本文章講述的是如何定位到ARM的串口。 1.1.1 函數(shù)主要代碼 有在Mini2440開發(fā)板上驗(yàn)證過 //*****************main.c******************************* #include serial.h int Main() { unsignedint plck_val = 50000000; unsignedint buad_val = 115200; un
[單片機(jī)]
KeilC51中的庫(kù)函數(shù)printf
在用keil仿真查看串口輸出時(shí),遇到了一個(gè)問題,代碼如下: #include reg52.h #include stdio.h /* 為使用printf函數(shù)而加入*/ main() { SCON= 0x50;/*SCON:工作模式1,8-bit UART,允許接收*/ TMOD |= 0x20;/*TMOD:定時(shí)器T1,工作模式2, 8位自動(dòng)重載方式*/ TH1= 0xf3;/*當(dāng)波特率為2400時(shí),定時(shí)器初值*/ TR1= 1;/*定時(shí)器T1開始運(yùn)行*/ TI= 1;/*允許發(fā)送數(shù)據(jù)*/ printf( hello world ); } 上面代碼調(diào)試運(yùn)行后,串口不斷輸出 hello w
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved