娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月10日(星期二)

正在發(fā)生

2021年12月10日 | 【STM32】串口通信---用代碼與芯片對話

發(fā)布者:Meilin8888 來源: eefocus關鍵字:STM32  串口通信  對話 手機看文章 掃描二維碼
隨時隨地手機看文章

前言

開發(fā)板:stm32f407VET6

開發(fā)環(huán)境:keil5 MDK

串口通信的相關知識,請參考這篇文章 【STM32】5分鐘了解STM32的串口通信


這篇文章講的都是基礎知識,那么串口通信的代碼該如何寫呢?


一、串口通信基本知識

【STM32】5分鐘了解STM32的串口通信


二、編程思路


usart.h

// =============================================

# @Time    : 2020-09-03

# @Author  : AXYZdong

# @CSDN    : https://blog.csdn.net/qq_43328313

# @FileName: usart.h

# @Software: keil5 MDK

// =============================================


#ifndef __USART_H

#define __USART_H

#include "stm32f4xx_conf.h"

#include "sys.h" 

#define EN_USART1_RX 0 //使能(1)/禁止(0)串口1接收


void uart_init(u32 bound);

void Usart_Sendbyte(USART_TypeDef * USARTx , uint8_t data);

void Usart_SendString(USART_TypeDef * USARTx , char * string);


usart.c

// =============================================

# @Time    : 2020-09-03

# @Author  : AXYZdong

# @CSDN    : https://blog.csdn.net/qq_43328313

# @FileName: usart.c

# @Software: keil5 MDK

// =============================================


#include "sys.h"

#include "usart.h"


//初始化IO 串口1 

//bound:波特率

void uart_init(u32 bound){

   //GPIO端口設置

    GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1時鐘

 

//串口1對應引腳復用映射

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9復用為USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10復用為USART1

//USART1端口配置

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9與GPIOA10

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//復用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽復用輸出

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10


   //USART1 初始化設置

USART_InitStructure.USART_BaudRate = bound;//波特率設置

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長為8位數據格式

USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個停止位

USART_InitStructure.USART_Parity = USART_Parity_No;//無奇偶校驗位

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數據流控制

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式

    USART_Init(USART1, &USART_InitStructure); //初始化串口1

    USART_Cmd(USART1, ENABLE);  //使能串口1 

USART_ClearFlag(USART1, USART_FLAG_TC);

#if EN_USART1_RX

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//開啟相關中斷


//Usart1 NVIC 配置

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口1中斷通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//搶占優(yōu)先級3

NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //子優(yōu)先級3

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

NVIC_Init(&NVIC_InitStructure); //根據指定的參數初始化VIC寄存器


#endif

}


 /***************** 發(fā)送一個字符 **********************/ 

void Usart_Sendbyte(USART_TypeDef * USARTx , uint8_t data)

{

  USART_SendData(USARTx,data);

while(!USART_GetFlagStatus(USARTx,USART_FLAG_TXE));

}

/***************** 發(fā)送字符串 **********************/ 

void Usart_SendString(USART_TypeDef * USARTx , char * string)

{

  char *str = string;

while(*str)

{

  Usart_Sendbyte(USARTx , *str);

str++;

}

}


main.c

// =============================================

# @Time    : 2020-09-03

# @Author  : AXYZdong

# @CSDN    : https://blog.csdn.net/qq_43328313

# @FileName: main.c

# @Software: keil5 MDK

// =============================================


#include "stm32f4xx.h"

#include "usart.h"


void delay(uint32_t count)

{

  for( ;count!=0;count--);

}


int main()

{

    uart_init(115200);

while(1)

{

      Usart_SendString( USART1 , "Hello World");

  delay(0xffffff);

  }

}


宏定義

另外為了便于調試,也可以加上 宏定義


// =============================================

# @Time    : 2020-09-03

# @Author  : AXYZdong

# @CSDN    : https://blog.csdn.net/qq_43328313

# @Software: keil5 MDK

// =============================================


//引腳宏定義 

/*******************************************************/ 

#define DEBUG_USART  USART1

/* 不同的串口掛載的總線不一樣,時鐘使能函數也不一樣,移植時要注意  

* 串口 1 和 6 是      RCC_APB2PeriphClockCmd  

* 串口 2/3/4/5 是    RCC_APB1PeriphClockCmd  

*/  


#define DEBUG_USART_CLK            RCC_APB2Periph_USART1

#define DEBUG_USART_BAUDRATE       115200


#define DEBUG_USART_RX_GPIO_PORT   GPIOA

#define DEBUG_USART_RX_GPIO_CLK    RCC_AHB1Periph_GPIOA

#define DEBUG_USART_RX_PIN         GPIO_Pin_10

#define DEBUG_USART_RX_AF          GPIO_AF_USART1

#define DEBUG_USART_RX_SOURCE      GPIO_PinSource10


#define DEBUG_USART_TX_GPIO_PORT   GPIOA

#define DEBUG_USART_TX_GPIO_CLK    RCC_AHB1Periph_GPIOA

#define DEBUG_USART_TX_PIN         GPIO_Pin_9

#define DEBUG_USART_TX_AF          GPIO_AF_USART1

#define DEBUG_USART_TX_SOURCE      GPIO_PinSource9


#define DEBUG_USART_IRQHandler     USART1_IRQHandler

#define DEBUG_USART_IRQ            USART1_IRQn

/************************************************************/ 


三、總結

利用串口助手,可以發(fā)現,上述代碼運行后,串口助手每隔一段時間會收到 Hello World

有可能你的串口助手會出現 亂碼 的現象,先把串口助手的波特率調成程序中設定的波特率(上述程序設定的是115200),如果還是出現亂碼,具體解決方法請參考這篇文章 【STM32】串口通信出現亂碼(使用官方標準庫)

如果串口助手沒有收到 Hello World ,請檢查連接 TX 、RX 端子的杜邦線是否松動。


【參考文獻】


[1] 《零死角玩轉 STM32—基于野火 F407[霸天虎]開發(fā)板 》

關鍵字:STM32  串口通信  對話 引用地址:【STM32】串口通信---用代碼與芯片對話

上一篇:【STM32】串口通信出現亂碼(使用官方標準庫)
下一篇:【STM32】CubeMX+HAL 輸出PWM

推薦閱讀

隨著汽車觸摸屏顯示器尺寸增大,駕駛員希望在操作時獲得像手機一樣的觸摸體驗。然而,汽車屏幕需要通過嚴格的頭部碰撞和振動測試,因此具有較厚的蓋板玻璃,這可能影響觸摸屏的性能。由于屏幕尺寸增大,觸摸屏更可能受到其他頻率的干擾,例如調幅收音機和車輛門禁系統(tǒng)。所有這些因素成了設計現代汽車電容式觸摸系統(tǒng)時面臨的主要問題。為了解決這些問題,Mi...
一份測試報告可能包含幾十張示波器截圖,因此示波器截圖是否便捷非常關鍵。傳統(tǒng)的示波器截圖通常是用U盤將圖片從示波器拷貝到電腦上,如果工作電腦不支持插入U盤,則更加復雜。能不能只按下CTRL+V就自由粘貼當前的示波器界面呢?1、上位機軟件Wave_Analyze:深度優(yōu)化截圖體驗Wave Analyze是示波器的PC分析軟件。除了本身的波形分析功能外,還解決用戶后期...
臺媒經濟日報報道,IC 設計廠商敦泰于公布 11 月業(yè)績,再創(chuàng)歷史新高。 敦泰科技(深圳)有限公司成立于 2006 年 04 月 29 日,法定代表人為 Genda James Hu。經營范圍包括一般經營項目是:從事集成電路設計、開發(fā);銷售自行開發(fā)的產品;自有房產租賃。 敦泰 11 月合并營收為 15.07 億元(新臺幣,下同),受惠于工作天數恢復,出貨持續(xù)暢旺...
一、儀器名稱型號安捷倫N5181A信號源二、故障現象:儀器開機后屏幕不亮三、檢測維修詳解:1、第一步,先對儀器進行通電開機操作,驗證客戶描述故障。儀器開機后出現以下現象:風扇轉,燈亮,顯示屏不亮。2、第二步,儀器出現以上故障現象初步懷疑顯示屏故障;隨后拆機檢測,發(fā)現里面缺螺絲,缺一個蓋板,液晶屏壞。3、第三步,經過檢測發(fā)現,儀器顯示屏損壞...

史海拾趣

問答坊 | AI 解惑

求助:紅外對管應用電路

本帖最后由 paulhyde 于 2014-9-15 03:38 編輯 我想用反射式紅外對管設計一個檢測電路,可從沒用過紅外對管,哪位有這方面的電路啊,能告訴我下么?謝謝了 [ 本帖最后由 open82977352 于 2010-2-10 16:44 編輯 ]    …

查看全部問答∨

stm32 上移植ucosII+UCGUI (IAR +KEIL 版本)

用FSMC 驅動 TFT屏 屏的型號為ili9325 附電路圖加源碼…

查看全部問答∨

交警執(zhí)法用測速設備的工作原理和檢定方法詳述

一、測速設備綜述:     交警執(zhí)法用的測速設備包括流動式的雷達測速儀和固定安裝在道路上的機動車超速自動監(jiān)測系統(tǒng)。本文所稱測速設備,主要指固定安裝于道路上的機動車超速自動監(jiān)測系統(tǒng)。     (一)流動式雷達測速儀: &n ...…

查看全部問答∨

分享LM3S8962系統(tǒng)時鐘設置函數學習心得

LM3S8962 DATASHEET 介紹多種可以使用LM3S8962系統(tǒng)時鐘源。LM3S8962的時鐘來源如下: 1. 片上時鐘源,12M+-30%,  作為主時鐘需要上電完成后軟件設置; 2. 主時鐘(可以使用晶振或晶體)(對于OSC0,OSC1)。使用內部PLL,主時鐘允許范圍3 ...…

查看全部問答∨

VS2005上函數的下拉列表中的函數變灰怎么搞?

我在用VS2005的時候,有時候做著做著就發(fā)現在右上區(qū)域的哪個函數的下拉列表中的一些函數變灰了,本來好好的應該都是黑色的,點它一下就可以跳到相應的函數里去.但現在變灰了,點了就跳不去了,跑道*.h文件的函數定義那里去了,自己跑到哪個函數的里面 ...…

查看全部問答∨

提供紅外遙控轉發(fā)器

提供紅外遙控轉發(fā)器。 絕非市面上用簡單邏輯制作的轉發(fā)器。 性能非常穩(wěn)定,遙控距離可達7米以上 安全簡單 http://www.flymcu.com http://shop34549393.taobao.com/ QQ:47414986 EMAIL:czzhouyun@hotmail.com 手機:15951211943 …

查看全部問答∨

IAR的安裝問題

我安裝了IAR,下載了一個LM3S系列的例程,編譯的時候總是提示錯誤,好像是說頭文件找不到 就像這樣的錯誤,是怎么回事啊,請高手指教一下啊…

查看全部問答∨

等精度測頻 FPGA實現。

通過了實際的驗證,測量精度達千分之一以上。內有工程的各種文件,也包含仿真文件,歡迎下載。…

查看全部問答∨

DDS資料~

本帖最后由 paulhyde 于 2014-9-15 04:18 編輯 此為本人收集的有關DDS的資料~ [ 本帖最后由 貳雨兒 于 2011-8-30 17:11 編輯 ]  …

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 明星| 中山市| 西昌市| 五华县| 鄯善县| 湖南省| 高雄县| 阳曲县| 吉木乃县| 喀喇沁旗| 太谷县| 汪清县| 峨边| 嘉祥县| 涞源县| 福州市| 无棣县| 蓬安县| 新营市| 西和县| 星座| 高尔夫| 松桃| 淳化县| 沙田区| 金山区| 朔州市| 三门县| 崇礼县| 兴仁县| 南充市| 洛阳市| 巴南区| 新建县| 博乐市| 囊谦县| 阿合奇县| 长海县| 荥阳市| 津南区| 衡东县|