国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

串口通信中關鍵知識點4

zgbgx / 2816人閱讀

摘要:串口波特率設置。串口的狀態可以通過狀態寄存器讀取。關閉接收完成中斷使能中斷通道搶占優先級,子優先級第五編寫中斷服務函數第六串口數據接收和發送發送與接收是通過數據寄存器來實現。

? ? ? ?串口基本配置的寄存器,配置過程總結為:

1、串口時鐘使能。這里的串口1設置是APB2ENR寄存器的第4位。

2、串口波特率設置。每個串口都有一個自己獨立的波特 率寄存器 USART_BRR,通過設置該寄存器就可以達到配置不同波特率的目的。

3、串口控制。STM32F429 的每個串口都有 3 個控制寄存器 USART_CR1~3,串口的很多 配置都是通過這 3 個寄存器來設置的。這里我們只要用到 USART_CR1 就可以實現我們的功能。

4、數據發送與接收。STM32F429 的發送與接收是通過數據寄存器 USART_DR 來實現的, 這是一個雙寄存器,包含了 TDR 和 RDR。

5、串口狀態。串口的狀態可以通過狀態寄存器 USART_SR 讀取。

? ? ?思考:假如用HAL庫進行配置的話,實現過程是什么?

第一:初始化函數 HAL_UART_Init 相關函數:

? ? ?HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);

? ? 解釋:函數只有一個入口參數 huart,為 UART_HandleTypeDef 結構體指針類型,稱為:句柄。

第二:使能串口和 GPIO 口時鐘

? ?使用串口,我們必須使能串口時鐘和使用到的 GPIO 口時鐘。

?__HAL_RCC_USART1_CLK_ENABLE(); //使能 USART1 時鐘? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__HAL_RCC_GPIOA_CLK_ENABLE(); //使能 GPIOA 時鐘

第三:GPIO 口初始化設置(速度,上下拉等)以及復用映射配置

GPIO_InitTypeDef GPIO_Initure;

GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_10; //PA9/PA10 GPIO_Initure.Mode=GPIO_MODE_AF_PP; //復用推挽輸出

GPIO_Initure.Pull=GPIO_PULLUP; //上拉

GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速

GPIO_Initure.Alternate=GPIO_AF7_USART1; //復用為 USART1 HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化 PA9/PA10

第四:開啟串口相關中斷,配置串口中斷優先級

__HAL_UART_ENABLE_IT(huart,UART_IT_RXNE); //開啟接收完成中斷

第一個參數:huart為串口句柄? ? ?第二個參數:要開啟的中斷類型。

__HAL_UART_DISABLE_IT(huart,UART_IT_RXNE); //關閉接收完成中斷

HAL_NVIC_EnableIRQ(USART1_IRQn); //使能 USART1 中斷通道 HAL_NVIC_SetPriority(USART1_IRQn,3,3); //搶占優先級 3,子優先級3

第五:編寫中斷服務函數

void USART1_IRQHandler(void);

第六:串口數據接收和發送

發送與接收是通過數據寄存器 USART_DR 來實現。當向該寄存器寫數據的時候,串口就會自動發送,當收到數據的時候,也 是存在該寄存器內。

HAL 庫操作 USART_DR 寄存器發送數據的函數是:

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

通過該函數向串口寄存器 USART_DR 寫入一個數據:

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/120924.html

相關文章

  • 自己畫一塊ESP32-C3 的開發板(第一次使用立創EDA)(更新中...)

    摘要:復位系列芯片的復位可使用管腳。這個和保存代碼的是不一樣的,計劃使用。 記錄一下第一次使用立創EDA第一次設計ESP-C3的開發板(這幾天工作有點忙,稍等) 目錄 ...

    MrZONT 評論0 收藏0
  • 阿里云開發板HaaS510解析串口JSON數據并發送屬性

    摘要:實驗目的通過上位機向發送字符串,由解析提取出指定的屬性值,并發送到云平臺。詳見文檔阿里云開發板響應串口指令阿里云開發板響應串口指令第二個知識點,怎么樣將字符串解析出關鍵屬性值。 摘要:本文介紹使用HaaS510從串口接收數據,從數據中提取所需的屬性值,并發送到物聯網平臺的方法。從串口接收到的...

    hiYoHoo 評論0 收藏0
  • 串口I2C通信詳解介紹(小白初學,淺顯易懂,基本知識

    摘要:每個字節后必須跟一個響應位。低速率一般是同一個板子上的兩個芯片間通信,數據量不大,速率低。速率幾百,速率可能不同,不能超過的最高速率。 介紹:I2C通訊協議(Inter-Integrated Circuit)引腳少,硬件實現簡單,可擴展性強,不需要USART、CAN等通訊協議的外部收發設備,...

    wua_wua2012 評論0 收藏0
  • 【STM32】標準庫與HAL庫對照學習教程八--串口通信詳解

    摘要:異步通信與同步通信異步通信異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。同步通信同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。配置串口設置為異步通信基礎參數波特率為。 ...

    yck 評論0 收藏0

發表評論

0條評論

zgbgx

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<