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

STM32--HAl庫串口接收與發(fā)送

這篇具有很好參考價值的文章主要介紹了STM32--HAl庫串口接收與發(fā)送。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

? ? ? ? 在此之前,我們已經(jīng)學習了單片機串口通信的原理(江科協(xié)),再寫一遍我個人認知:世界上任何兩個事物如果要進行交流的話,那必然需要兩個東西進行通信的,就像兩個人之間,兩個國人之間用普通話就能夠清楚的交流,但是讓我們中國人和外國人去交流可能會有點費力了,假設一個英國人在那,你要是想和他聊天,那必然是你學英語或者他學漢語才行,這里的你們之間交流用的語言就是單片機中的? 通信協(xié)議? ?。假設漢語是串口通信,英語是I2C通信,那這兩個是不兼容的,所以必須要統(tǒng)一語言,統(tǒng)一協(xié)議才行。所以是說,不同的芯片所用的通信協(xié)議是不一樣的,我們要根據(jù)需要有針對性的選擇學習。

Cubemax配置

? ? ? ? 在B站視頻中我們可以看到老師寫的代碼,看著操作挺多的,如果讓自己寫的話那肯定是大部分人都挺費勁的。但是?。。。∪绻覀冇肅ubemax配置(偷懶神技)的話那就會很輕松了,同樣只需要選擇自己所需要的參數(shù)就能夠完成目的。話不多說,直接看步驟:

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

注意,在配置的時候,RCC(Reset and Clock Control,即復位和時鐘控制)要配置為外部晶振

?hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

這里的SYS配置選Serial Wire

然后選擇串口為asynchronous(異步通信),然后下面就會生成波特率,數(shù)據(jù)寬度,停止位,校驗位等,這里一般用默認的就好,因為剛開始學習時接觸的大多數(shù)都是這個配置。

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機?然后可以根據(jù)自己的需要把中斷或者DMA模式打開。

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

配置好后別忘了配置時鐘樹,一般只用選擇完紅圈里的東西后點回車就行了。

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

usart_x264

keil端

生成代碼之后呢,我們就需要知道哪些是我們所需要的代碼了,接下來,我們在keil中打開stm32f1xx_hal_uart.c文件:

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

? ? ? ? ?在這個文件里我們能看到很多代碼,很多注釋,亂七八糟的,但是我們只需要看我們所需要的就行了,在此之前,你需要積累一些常用的函數(shù)。怎么在左下角可以看到有個Functions,我們點開然后再點串口的文件,可以看到這個文件里所有的函數(shù)都呈現(xiàn)出來了:

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

其中有幾個最為常用的函數(shù)需要大家熟記(具體函數(shù)的用法以及原理規(guī)則就不跟大家介紹了,網(wǎng)上一查很多):

hal庫dma串口收發(fā),stm32,嵌入式硬件,單片機

?舉例

? ? ? ? 給大家舉幾個簡單的例子說明一下:

串口發(fā)送

HAL_UART_Transmit(&huart1,"hello,world",11,HAL_MAX_DELAY);
HAL_UART_Transmit_IT(&huart1,"hello,world",11);
HAL_UART_Transmit_DMA(&huart1,"hello,world",11);

????????這是3種不同的方式發(fā)送數(shù)據(jù) hello,world, 第一種是輪詢模式就是單片機按個去發(fā)送數(shù)據(jù),大家排好隊一個一個來,這種發(fā)送方式比較穩(wěn)定,建議以后大家非必要就用這個發(fā)。

? ? ? ? 第二個是用中斷發(fā)送發(fā)送數(shù)據(jù),這句程序的工作過程是,還是排好隊一個一個發(fā),但是當單片機發(fā)送11個數(shù)據(jù)之后,單片機需要進一次中斷,中斷回調(diào)函數(shù)為:HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart),但是由于是中斷模式,需要進行中斷處理,倘若單片機在進行中斷處理時又一次進入中斷的話,單片機就會出現(xiàn)錯誤,因此中斷發(fā)送不能兩個中斷發(fā)送函數(shù)連著使用,但是需要間隔多長時間呢?有點小復雜,我還沒探究過> <。DMA模式好像也有類似問題,因此前期學系的話只用輪詢就夠了。

串口接收

uint8_t ReBuf[8];
HAL_UART_Receive(&huart1,ReBuf,8,HAL_MAX_DELAY);
HAL_UART_Receive_IT(&huart1,ReBuf,8);

? ? ? ? ?在進行串口接收前,單片機需要知道接收到的數(shù)據(jù)放在哪里,因此就需要接收緩存區(qū):ReBuf。程序種輪詢接收意思是接收依次接收8個數(shù)據(jù)存放在ReBuf中,中斷接收呢是依次接收8個數(shù)據(jù)后進入接收中斷里,串口接收中斷的回調(diào)函數(shù)為:

 HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

我們可以根據(jù)需要在中斷回調(diào)函數(shù)里進行所需要的操作?;蛘呤窃谥鞒绦蛑胁僮饕彩强梢缘?,可以根據(jù)自己程序的不同邏輯酌情選擇。

? ? ? ? 另外附上我在stm32與openmv進行串口收發(fā)的相關代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-846442.html

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  uint16_t tempt  /*定義臨時變量存放接受的數(shù)據(jù)*/;
  if(huart->Instance==USART2)
  {
    tempt=ReBuff[0];
    Openmv_Receive_Data(tempt);
		/*調(diào)運數(shù)據(jù)接收處理函數(shù),每次進入中斷都對數(shù)據(jù)進行理處
		,由于需要接收器個數(shù)據(jù),因此要進入七次斷理*/
  }	
HAL_UART_Receive_IT(&huart2,(uint8_t*)&ReBuff,1);/*再次開啟接收中斷*/
}

到了這里,關于STM32--HAl庫串口接收與發(fā)送的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • STM32F4_HAL庫_串口阻塞/中斷/DMA三種方式發(fā)送數(shù)據(jù)的配置

    串口阻塞發(fā)送的意思就是,發(fā)送一段數(shù)據(jù),在沒有發(fā)送完所有數(shù)據(jù)之前,一直停留在此發(fā)送函數(shù)(可設定阻塞時間),這個過程中會阻塞別的程序運行; HAL庫的配置分為兩個層次,一個是HAL庫內(nèi)部調(diào)用的、與MCU硬件相關的初始化xxx_MspInit,一個是我們外部調(diào)用的初始化xxx_In

    2023年04月25日
    瀏覽(32)
  • STM32F4 HAL庫使用DMA進行ADC采樣實時發(fā)送波形到串口顯示(包含傅里葉變換)

    STM32F4 HAL庫使用DMA進行ADC采樣實時發(fā)送波形到串口顯示(包含傅里葉變換)

    按下 STM32F4 的 KEY0 按鍵,通過外部中斷的方式對按鍵進行檢測,然后進行一次固定點數(shù)的 DMA ADC 采集,采集完成后在 DMA 的中斷發(fā)送采集到的數(shù)據(jù),然后清空數(shù)據(jù)區(qū)準備下一次的按鍵中斷。電腦接受到串口數(shù)據(jù)后對數(shù)據(jù)進行簡單處理和傅里葉變化,然后實時顯示在電腦上。 開

    2024年02月14日
    瀏覽(34)
  • STM32-UART-DMA HAL庫緩沖收發(fā)

    STM32-UART-DMA HAL庫緩沖收發(fā)

    1.1、注意事項: HAL庫的DMA底層基本都會默認開啟中斷使能,如果在STM32CubeMx禁用了中斷相關的功能,程序可能會進入空中斷回調(diào)出不來。 切記使用STM32-HAL庫的DMA發(fā)送時需要開啟USART中斷和DMA中斷。 在一般時間要求不是很高很高的場合,使用HAL庫自帶的函數(shù)就可以,并不會很頻

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

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

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

    2024年04月10日
    瀏覽(44)
  • HAL庫STM32的串口收發(fā)教程

    HAL庫STM32的串口收發(fā)教程

    ??????? 首先配置STM32CubeMX 第一步在系統(tǒng)SYS里的Debug(調(diào)試)選項選擇Serial Wire(這里使用ST-LINK-V2仿真下載器所以選擇該項)。 ?第二打開使用外部晶振 ?在芯片引腳上點擊PC13選擇GPIO_Output(即設置GPIO為輸出模式) 點擊GPIO,點擊PC13 在其下方配置引腳: GPIO out? level 設置成

    2024年02月14日
    瀏覽(27)
  • 【STM32+HAL庫+CubeMX】UART輪詢收發(fā)、中斷收發(fā)、DMA收發(fā)方法及空閑中斷詳解

    【STM32+HAL庫+CubeMX】UART輪詢收發(fā)、中斷收發(fā)、DMA收發(fā)方法及空閑中斷詳解

    Author: DrinkCat(szt@drinkcat.com) Copyright ? 2023 DrinkCat Original link: DrinkCat’s Blog UART是一種異步串行通信接口,常用于通過串口與外部設備進行通信。它通過發(fā)送和接收數(shù)據(jù)幀來實現(xiàn)數(shù)據(jù)傳輸,使用起來相對簡單。UART通常包含發(fā)送器(Transmitter)和接收器(Receiver),通過兩根信號線

    2024年02月10日
    瀏覽(22)
  • STM32(HAL)串口中斷接收

    STM32(HAL)串口中斷接收

    目錄 1、簡介 2?基礎配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2?串口外設配置 ?2.3 項目生成 ?3、KEIL端程序整合 本文對HAL串口中斷函數(shù)進行介紹。 2.1.1 SYS配置 ?2.1.2 RCC配置 首先在main.c文件中進行接受變量聲明。 ?接著在主函數(shù)的while循環(huán)中進行接收中斷,如下所示: ?最后在主函數(shù)

    2024年02月14日
    瀏覽(38)
  • stm32使用HAL庫配置串口中斷收發(fā)數(shù)據(jù)(保姆級教程)

    stm32使用HAL庫配置串口中斷收發(fā)數(shù)據(jù)(保姆級教程)

    最近在學習使用hal庫,之前都是用標準庫來寫32代碼,所以發(fā)個帖子記錄一下學習過程,同時也希望能幫助到一些也在學習HAL庫的同學。 接下來進入正題 串口中斷是指當單片機收到一個串口數(shù)據(jù)時,單片機會產(chǎn)生一個中斷信號,通知處理器中斷服務程序去處理這個接收到的數(shù)

    2024年02月07日
    瀏覽(23)
  • STM32—HAL庫中斷/DMA控制和完成串口通信

    STM32—HAL庫中斷/DMA控制和完成串口通信

    目錄 一、解決的問題 二、串口通訊協(xié)議和RS-232的介紹以及USB/TTL轉(zhuǎn)232模塊的工作原理? ?1、?串口協(xié)議和RS-232標準: ?(1)串口協(xié)議: (2)RS-232 標準:? ?2、RS232電平與TTL電平的區(qū)別? ?3、USB/TTL轉(zhuǎn)232“模塊(CH340芯片為例)? (1)基本原理:? (2)CH340模塊介紹: ?三、搭

    2024年02月02日
    瀏覽(30)
  • STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    目錄 一、CUBEmx配置 1.設置系統(tǒng)時鐘,配置SYS,配置時鐘樹 ??編輯 ?2.配置串口USART1 3.配置NVIC,開啟串口中斷 ?編輯4.點擊GENERATE CODE輸出文件即可 二、代碼部分 0.串口重定向——printf 1.關于舵機 2.開啟串口中斷函數(shù) 3.編寫串口回調(diào)函數(shù) 4.主函數(shù)部分 三、實驗現(xiàn)象: 四、總

    2024年02月04日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包