国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32 串口調(diào)試配置及printf重定向

這篇具有很好參考價(jià)值的文章主要介紹了stm32 串口調(diào)試配置及printf重定向。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

stm32使用串口調(diào)試打印時(shí),需要對(duì)串口進(jìn)行配置并對(duì)printf進(jìn)行重定向,本文介紹如何配置串口以及printf重定向。


一、stm32串口配置

1、使用cubemx生成

示例:
1、配置選項(xiàng)選中要配置的usart
2、模式選擇異步模式,硬件流控制disable
3、配置串口參數(shù)
stm32cubemx printf,stm32,單片機(jī),嵌入式硬件
生成代碼后可以在工程中usart.c中查看到串口相關(guān)代碼
stm32cubemx printf,stm32,單片機(jī),嵌入式硬件
在工程配置中勾選“使用微庫”
stm32cubemx printf,stm32,單片機(jī),嵌入式硬件

2、手敲代碼通過hal庫配置


UART_HandleTypeDef huart1;

// 初始化引腳配置
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(uartHandle->Instance==USART1)
  {
    /* USART1 clock enable */
    __HAL_RCC_USART1_CLK_ENABLE();

    __HAL_RCC_GPIOA_CLK_ENABLE();
    /**USART1 GPIO Configuration
    PA9     ------> USART1_TX
    PA10     ------> USART1_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  }
}


/* 配置串口參數(shù) */
void MX_USART1_UART_Init(void)
{
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    
  }
}


二、printf重映射

本文給出使用寄存器和使用hal庫配置兩種方法。

1.寄存器

代碼如下(示例):

#include <stdio.h>

#define SHELL_UART_REG  USART1

int fputc(int ch, FILE *f)
{
  SHELL_UART_REG->DR = ch;
  while (!(SHELL_UART_REG->SR & USART_SR_TXE))
  {
  }
  return (ch);
}

int fgetc(FILE *f)
{
  int ch;
    
  while (!(SHELL_UART_REG->SR & USART_SR_RXNE))
  {
  }
  ch  = SHELL_UART_REG->DR;

  return (ch);
}

注:不同型號(hào)stm32的寄存器會(huì)略有不同,上述僅針對(duì)stm32f1xx系列,若使用寄存器方法重映射需要注意

2.hal庫(推薦)

代碼如下(示例):

#include <stdio.h>

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);
  return (ch);
}

int fgetc(FILE *f)
{
  int ch;
  HAL_UART_Receive(&huart1,(uint8_t*)&ch,1,0xffff);
  return (ch);
}


注:將以上重定向代碼放置工程任意位置即可,之后在程序中使用printf可實(shí)現(xiàn)打印信息通過串口輸出文章來源地址http://www.zghlxwxcb.cn/news/detail-678656.html

到了這里,關(guān)于stm32 串口調(diào)試配置及printf重定向的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32使用printf重定向到USART(串口)并打印數(shù)據(jù)到串口助手

    STM32使用printf重定向到USART(串口)并打印數(shù)據(jù)到串口助手

    我們知道我們?cè)谶M(jìn)行編程的時(shí)候,遇到問題,經(jīng)常通過打印信息進(jìn)行調(diào)試,在java中使用的是System.out.println打印到輸出窗口。在C語言中使用的是printf打印到輸出窗口。而我們用keil進(jìn)行編程的時(shí)候也是使用的C語言所以也可以使用printf,但是我們知道,keil中沒有輸出窗口。那我

    2024年02月15日
    瀏覽(20)
  • 【STM32】CUBEMX之串口:串口三種模式(輪詢模式、中斷模式、DMA模式)的配置與使用示例 + 串口重定向 + 使用HAL擴(kuò)展函數(shù)實(shí)現(xiàn)不定長數(shù)據(jù)接收

    【STM32】CUBEMX之串口:串口三種模式(輪詢模式、中斷模式、DMA模式)的配置與使用示例 + 串口重定向 + 使用HAL擴(kuò)展函數(shù)實(shí)現(xiàn)不定長數(shù)據(jù)接收

    目錄 ? 總覽 使用CUBEMX創(chuàng)建工程的基本配置 CUBEMX中的配置 Keil中的配置 實(shí)物連接 串口輪詢模式 輪詢模式HAL庫函數(shù) 特點(diǎn) 實(shí)驗(yàn)一:發(fā)送數(shù)據(jù)給單片機(jī)并讓其返回相同值 串口重定向 串口中斷模式 在CUBEMX中打開串口中斷 中斷模式HAL庫函數(shù) 特點(diǎn) 實(shí)驗(yàn)二:使用中斷回調(diào)完成實(shí)驗(yàn)一

    2024年04月10日
    瀏覽(44)
  • STM32+HAL庫調(diào)試printf串口打印

    STM32+HAL庫調(diào)試printf串口打印

    目錄 1 新建cubemx工程? 2 配置系統(tǒng)時(shí)鐘 3 配置串口引腳 4 生成keil工程 5 補(bǔ)充代碼 5.1 重定向printf 5.2 main函數(shù) 6 編譯燒錄 7 實(shí)驗(yàn)現(xiàn)象 ? ? ? ? 選擇對(duì)應(yīng)芯片 ? ? ? ? 主頻為64MHz ? ? ? ? 對(duì)應(yīng)給到usart2的時(shí)鐘也為64MHz? ? ? ? ? ? 查閱原理圖,可知usart2引腳連接了USB串口 ? ? ?

    2024年02月09日
    瀏覽(22)
  • STM32串口printf調(diào)試輸出(SSCOM V5.13.1)

    STM32串口printf調(diào)試輸出(SSCOM V5.13.1)

    PC與CPU相互通信就是通過USB Type_C接口和USB電平轉(zhuǎn)換實(shí)現(xiàn)的。 我們可以看到,CPU通過管腳USART1連接CH340C芯片將USB轉(zhuǎn)串口,實(shí)現(xiàn)PC與CPU之間的通信。 當(dāng)然,這里用的是CH340的芯片,我們就需要安裝ch340串口。 按住Ctrl+s生成代碼。 在usart.h中添加頭文件stdio.h 標(biāo)準(zhǔn)庫的 printf函數(shù) 能方

    2024年02月12日
    瀏覽(21)
  • STM32CubeIDE串口printf函數(shù)輸出中文亂碼(配置教程+解決方法)

    STM32CubeIDE串口printf函數(shù)輸出中文亂碼(配置教程+解決方法)

    目錄 前言 平臺(tái)環(huán)境 軟件:STM32CubeIDE 硬件:STM32H7A3ZIT6Q 一、串口配置 二、printf重定向 三、中文亂碼解決方案 步驟 效果 四、總結(jié) 本文主要講述在使用CubeIDE配置串口通信的過程中,如何 重定向printf() 函數(shù),以及如何解決在 串口打印中文時(shí)輸出亂碼 的情況。 ????????

    2024年02月07日
    瀏覽(28)
  • STM32 Cubemx配置串口收發(fā)

    STM32 Cubemx配置串口收發(fā)

    最近學(xué)到了串口收發(fā),簡單記錄一下注意事項(xiàng)。 以使用USART1為例。 USART1需配置成 異步工作模式Asynchronous 。 并且 需要使能NVIC 。 我偏向于在stm32f1xx_it.c文件中對(duì)printf進(jìn)行重定向,重定向函數(shù)如下。 同時(shí)需包含頭文件路徑#include “stdio.h” 在工程屬性Target下, 勾選Use MicroLIB

    2024年02月10日
    瀏覽(16)
  • 使用STM32CubeMX創(chuàng)建STM32工程(串口,硬件IIC配置)

    使用STM32CubeMX創(chuàng)建STM32工程(串口,硬件IIC配置)

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 最近教研室的項(xiàng)目需要使用STM32做處理器,對(duì)環(huán)境數(shù)據(jù)進(jìn)行采集處理,在拿到板子后,需要根據(jù)單片機(jī)具體型號(hào)(STM32F411CEU6)創(chuàng)建工程,再進(jìn)行上層應(yīng)用的開發(fā)。因?yàn)橐郧岸际怯玫腇1系列的開發(fā)板,用的

    2023年04月18日
    瀏覽(23)
  • STM32 F103C8T6學(xué)習(xí)筆記3:串口配置—串口收發(fā)—自定義Printf函數(shù)

    STM32 F103C8T6學(xué)習(xí)筆記3:串口配置—串口收發(fā)—自定義Printf函數(shù)

    今日學(xué)習(xí)使用STM32 C8T6的串口,我們?cè)诮?jīng)過學(xué)習(xí)筆記2的總結(jié)歸納可知,STM32 C8T6最小系統(tǒng)板上有三路串口,如下圖: ?今日我們就著手學(xué)習(xí)如何配置開通這些串口進(jìn)行收發(fā),這里不講串口通信概念與基礎(chǔ),可以自行網(wǎng)上查找,本文直接開始介紹庫函數(shù)與編程實(shí)現(xiàn): ? ? ? ? ?

    2024年02月10日
    瀏覽(30)
  • 基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    ? ?Debug:推薦選擇 Serial Wire (方便使用STLink打斷點(diǎn)在線調(diào)試) 中間兩項(xiàng)默認(rèn)Disable就好 TimeBase Source:若需要配置FreeRtos則不能選擇SysTick,隨機(jī)選擇一個(gè)TIM定時(shí)器即可,這里我選擇TIM1定時(shí)器。 (解釋:裸機(jī)的時(shí)鐘源默認(rèn)是SysTick,但是開啟FreeRtos后,F(xiàn)reeRtos會(huì)占用SysTick,用于任

    2024年02月05日
    瀏覽(28)
  • 關(guān)于STM32F4系列中printf重定向問題詳解

    關(guān)于STM32F4系列中printf重定向問題詳解

    前言 關(guān)于 printf函數(shù) 和 fputc函數(shù) 聯(lián)系和區(qū)別 聯(lián)系: 1.共同目標(biāo): printf 函數(shù)和 fputc 函數(shù)都用于將字符 輸出到指定的輸出流中 。 2.字符輸出: 兩個(gè)函數(shù)都可以用于輸出一個(gè)字符,但在實(shí)際使用時(shí), printf 函數(shù) 通常用于輸出 格式化的數(shù)據(jù) ,而 fputc 函數(shù) 更常用于 單個(gè)字符的直

    2024年02月03日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包