0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

串口在STM32中的配置

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:藕粉- ? 2023-11-10 16:09 ? 次閱讀

首先要明確幾點(diǎn):使用STM32串口外設(shè)中的哪一個(gè)?串口發(fā)送或者接收數(shù)據(jù)?串口相關(guān)的參數(shù)配置?發(fā)送或接收是否使用到中斷?

下方為串口發(fā)送的配置。

1. RCC開(kāi)啟USART、串口TX/RX所對(duì)應(yīng)的GPIO口

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //開(kāi)啟USART2的時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //開(kāi)啟GPIOA的時(shí)鐘

2. 初始化GPIO口

這里注意哈,根據(jù)自己的需求來(lái)配置GPIO口,發(fā)送和接收是都需要還是只需要其中一個(gè)。然后對(duì)應(yīng)的根據(jù)引腳定義表來(lái)初始化對(duì)應(yīng)的GPIO口。

USART2對(duì)應(yīng)的引腳

![圖片](//file1.elecfans.com/web2/M00/AD/80/wKgaomVN5C6ASwmnAACEGwhPI6Q875.jpg)

USART1對(duì)應(yīng)的引腳

![圖片](//file1.elecfans.com/web2/M00/AF/4D/wKgZomVN5C6AaiujAABzopcY4SM368.jpg)

這里根據(jù)手冊(cè)來(lái)看,RX引腳模式配置成浮空輸入或者上拉輸入。TX引腳模式配置成復(fù)用推挽輸出。

比如我這里只初始化TX發(fā)送端


//TX端
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; //USART2對(duì)應(yīng)的TX端為GPIOA2
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50MhZ
GPIO_Init(GPIOA,&GPIO_InitStructure);

3. 串口初始化

注意哈,USART_Init()這個(gè)函數(shù),是用來(lái)配置串口的相關(guān)參數(shù)的。

* USART_BaudRate 串口通信使用的波特率 一般是9600或者是115200,這里我們給9600
* USART_HardwareFlowControl 是否選擇硬件流觸發(fā),一般這個(gè)我們也不選,所以選擇無(wú)硬件流觸發(fā)。
* USART_Mode 這個(gè)參數(shù)要注意了哈,串口的模式,發(fā)送模式還是接收模式,還是兩者都有
* USART_Parity 校驗(yàn)位,可以選擇奇偶校驗(yàn)和不校驗(yàn)。沒(méi)有需求就直接無(wú)校驗(yàn)
* USART_StopBits 停止位 有1、0.5、2位,我們這里選1位停止位
* USART_WordLength 數(shù)據(jù)位 有8位和9位可以選擇

//串口初始化
USART_InitTypeDef USART_InitStruct;
USART_StructInit(&USART_InitStruct); //初始默認(rèn)值
USART_InitStruct.USART_BaudRate=9600;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //不使用硬件流觸發(fā)
USART_InitStruct.USART_Mode=USART_Mode_Tx; //TX 發(fā)送模式
USART_InitStruct.USART_Parity=USART_Parity_No; //不選擇校驗(yàn)
USART_InitStruct.USART_StopBits=USART_StopBits_1; //停止位1位
USART_InitStruct.USART_WordLength=USART_WordLength_8b; //數(shù)據(jù)位8位
USART_Init(USART2,&USART_InitStruct);

4. 串口使能

//串口使能
USART_Cmd(USART2,ENABLE);

5. 串口發(fā)送數(shù)據(jù)

注意哈,我們要判斷TXE標(biāo)志位的狀態(tài)。0,數(shù)據(jù)還沒(méi)有被轉(zhuǎn)移到移位寄存器;1,數(shù)據(jù)已經(jīng)被轉(zhuǎn)移到移位寄存器。

當(dāng)TXE標(biāo)志位為1時(shí),就說(shuō)明可以發(fā)送下一個(gè)數(shù)據(jù)了。詳細(xì)過(guò)程可看上面串口發(fā)送的解釋。

void Serial_SendByte(uint16_t Byte)
{
USART_SendData(USART2,Byte);
//0 表示數(shù)據(jù)還未轉(zhuǎn)移到移位寄存器 循環(huán)等待 1 數(shù)據(jù)已經(jīng)被轉(zhuǎn)移到了移位寄存器可以發(fā)送數(shù)據(jù)
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); //不需要手動(dòng)清零 再次寫(xiě)入TDR時(shí)會(huì)自動(dòng)清零
}

經(jīng)過(guò)上述五步的配置,單片機(jī)就可以通過(guò)串口發(fā)送數(shù)據(jù)了。

下方為發(fā)送數(shù)據(jù)圖例,STM32向串口發(fā)送0x16數(shù)據(jù)

![圖片](//file1.elecfans.com/web2/M00/AD/80/wKgaomVN5C6AehIXAADtGeauIak368.jpg)
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10901

    瀏覽量

    356224
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1734

    瀏覽量

    131518
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1555

    瀏覽量

    76561
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1626

    瀏覽量

    55545
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F407 串口配置步驟

    介紹STM32F407串口配置步驟,完成串口的數(shù)據(jù)發(fā)送與接收、實(shí)現(xiàn)中斷接收,支持printf重定向。
    的頭像 發(fā)表于 07-06 14:29 ?3184次閱讀
    <b class='flag-5'>STM32</b>F407 <b class='flag-5'>串口</b><b class='flag-5'>配置</b>步驟

    關(guān)于 printf和scanf開(kāi)發(fā)STM32配置和應(yīng)用

    關(guān)于printf和scanf開(kāi)發(fā)STM32配置和應(yīng)用
    的頭像 發(fā)表于 03-24 10:50 ?8008次閱讀
    關(guān)于 printf和scanf<b class='flag-5'>在</b>開(kāi)發(fā)<b class='flag-5'>STM32</b><b class='flag-5'>中</b>的<b class='flag-5'>配置</b>和應(yīng)用

    STM32CUBEMX配置教程(八)STM32串口輪詢(xún)發(fā)送中斷接收+重定義+優(yōu)化

    STM32CUBEMX配置教程(八)STM32串口輪詢(xún)收發(fā)+重定義基于STM32H743VI使用STM3
    發(fā)表于 11-19 13:36 ?11次下載
    <b class='flag-5'>STM32</b>CUBEMX<b class='flag-5'>配置</b>教程(八)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>輪詢(xún)發(fā)送中斷接收+重定義+優(yōu)化

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX
    發(fā)表于 11-29 16:06 ?55次下載
    <b class='flag-5'>STM32</b>F407的<b class='flag-5'>串口</b>UART 基礎(chǔ)<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32串口喚醒低功耗

    正常喚醒,但是喚醒之后,串口收發(fā)貌似就不正常了。 原因分析:串口進(jìn)入低功耗之前,是把串口的接收引腳配置為了外部中斷輸入腳,喚醒之后再重新配置
    發(fā)表于 12-07 19:51 ?33次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>串口</b>喚醒低功耗

    STM32串口配置實(shí)驗(yàn)

    STM32 串口簡(jiǎn)介串口作為 MCU 的重要外部接口,同時(shí)也是軟件開(kāi)發(fā)重要的調(diào)試手段,其重要性不言而喻?,F(xiàn)在基本上所有的 MCU 都會(huì)帶有串口ST
    發(fā)表于 12-08 12:21 ?11次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>配置</b>實(shí)驗(yàn)

    STM32使用CubeMAX配置串口中斷接收方法

    STM32使用CubeMAX配置串口中斷接收方法目錄1.定位串口中斷發(fā)生的地方2.處理串口中斷接收的流程是:(1)初始化
    發(fā)表于 12-14 18:45 ?28次下載
    <b class='flag-5'>STM32</b>使用CubeMAX<b class='flag-5'>配置</b>的<b class='flag-5'>串口</b>中斷接收方法

    STM32串口通信的基礎(chǔ)知識(shí)

    STM32串口異步通信需要定義的參數(shù)奇偶矯正位如果GPIO作為串口,如何配置輸入輸出模式?異步串口通信框圖講解
    發(fā)表于 12-24 18:37 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>的<b class='flag-5'>串口</b>通信的基礎(chǔ)知識(shí)

    STM32 教你用串口,配置所需詳細(xì)步驟??!!

    相關(guān)寄存器:外設(shè)GPIO配置-USART串口配置一般步驟: 串口配置步驟小結(jié):STM32
    發(fā)表于 12-24 18:44 ?16次下載
    <b class='flag-5'>STM32</b> 教你用<b class='flag-5'>串口</b>,<b class='flag-5'>配置</b>所需詳細(xì)步驟!!!

    STM32CUBEMX配置教程(九)STM32串口DMA收發(fā)數(shù)據(jù)

    STM32CUBEMX配置教程(九)STM32串口DMA收發(fā)數(shù)據(jù)基于STM32H743VI使用STM32
    發(fā)表于 12-24 18:47 ?24次下載
    <b class='flag-5'>STM32</b>CUBEMX<b class='flag-5'>配置</b>教程(九)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>DMA收發(fā)數(shù)據(jù)

    5. STM32——串口發(fā)送字符、字符串 + printf 的重定向

    STM32——串口發(fā)送字符、字符串 + printf 的重定向基本框架1. 配置時(shí)鐘:配置GPIO時(shí)鐘、窗口時(shí)鐘、引腳復(fù)用時(shí)鐘2. 配置GP
    發(fā)表于 12-24 18:53 ?11次下載
    5. <b class='flag-5'>STM32</b>——<b class='flag-5'>串口</b>發(fā)送字符、字符串 + printf 的重定向

    STM32CubeMx配置DMA+串口空閑中斷+FreeRTOS,完美處理串口數(shù)據(jù)。

    。使用DMA輔助處理串口的數(shù)據(jù),能夠大幅緩解單片機(jī)的運(yùn)行壓力,提高串口數(shù)據(jù)的處理能力。使用CubeMx配置串口+DMA+FreeRTOS,以下內(nèi)容僅展示了主要涉及到的
    發(fā)表于 12-24 19:11 ?52次下載
    <b class='flag-5'>STM32</b>CubeMx<b class='flag-5'>配置</b>DMA+<b class='flag-5'>串口</b>空閑中斷+FreeRTOS,完美處理<b class='flag-5'>串口</b>數(shù)據(jù)。

    STM32f103------串口中斷及其配置

    提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔STM32f103------串口中斷及其配置使能串口時(shí)鐘和GPIO時(shí)鐘配置
    發(fā)表于 12-27 19:30 ?22次下載
    <b class='flag-5'>STM32</b>f103------<b class='flag-5'>串口</b>中斷及其<b class='flag-5'>配置</b>

    2021-04-17 STM32串口寄存器庫(kù)函數(shù)配置

    STM32串口寄存器庫(kù)函數(shù)配置方法STM32常用寄存器和庫(kù)函數(shù)串口配置一般步驟(
    發(fā)表于 12-28 19:13 ?7次下載
    2021-04-17  <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>寄存器庫(kù)函數(shù)<b class='flag-5'>配置</b>

    stm32串口燒錄怎么設(shè)置

    準(zhǔn)備工作 確保您擁有STM32開(kāi)發(fā)板和相應(yīng)的硬件設(shè)備,如USB轉(zhuǎn)串口模塊。 安裝STM32CubeMX和STM32CubeProgrammer軟件,這些是ST官方提供的工具,用于
    的頭像 發(fā)表于 08-22 09:33 ?1557次閱讀