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

資訊專欄INFORMATION COLUMN

STM32串口通信(HAL庫 二)

frontoldman / 1534人閱讀

摘要:緊接著上一篇博文。。。編寫串口中斷函數(shù)當(dāng)中斷發(fā)生的時候,程序就會執(zhí)行中斷服務(wù)函數(shù),我們在中斷服務(wù)函數(shù)中編寫相應(yīng)的邏輯代碼就可以了。將以下代碼編寫在中串口輸出重定義到注意頭文件需要包含標(biāo)準(zhǔn)庫,也就是。

緊接著上一篇博文。。。

4 編寫串口中斷函數(shù)

當(dāng)中斷發(fā)生的時候,程序就會執(zhí)行中斷服務(wù)函數(shù),我們在中斷服務(wù)函數(shù)中編寫相應(yīng)的邏輯代碼就可以了。

5串口數(shù)據(jù)接收和發(fā)送

這里需要介紹幾個串口發(fā)送接收的函數(shù)

HAL_UART_Transmit();//串口發(fā)送數(shù)據(jù),使用超時管理機制HAL_UART_Receive();//串口接收數(shù)據(jù),使用超市管理機制HAL_UART_Transmit_IT();//串口中斷模式發(fā)送  HAL_UART_Receive_IT();//串口中斷模式接收HAL_UART_Transmit_DMA();//串口DMA模式發(fā)送HAL_UART_Transmit_DMA();//串口DMA模式接收

接下來講解幾個

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

HAL_UART_Transmit(UART_HandleTypdef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);/**	功能:串口發(fā)送指定長度的數(shù)據(jù),如果超時沒有發(fā)生完成,則不在發(fā)送,并返回超時標(biāo)志	參數(shù): UART_HandleTypdef *huart :串口別名   UART_HandleTypeDef huart1;   別名就是huart1  	*pData:需要發(fā)送的數(shù)據(jù)	Size:發(fā)送的字節(jié)數(shù)	Timeout:最大發(fā)送時間,發(fā)送時間超出的話停止發(fā)送**/

串口中斷接收數(shù)據(jù)

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)/**	功能:串口中斷接收,以中斷方式接收指定長度數(shù)據(jù),大致過程就是設(shè)置數(shù)據(jù)存放位置,接收數(shù)據(jù)長度,然后使能串口中斷,接收到數(shù)據(jù)時,會觸發(fā)串口中斷	在然后,串口中斷函數(shù)處理,知道接收到指定長度數(shù)據(jù),,而后關(guān)閉中斷,進(jìn)入中斷接收回調(diào)函數(shù),不在觸發(fā)接收中斷,所以說是只會觸發(fā)一次中斷。	參數(shù):UART_HandleTypeDef *huart 和發(fā)送函數(shù)一樣的意思,串口的別名	*pData:接收到的數(shù)據(jù)存放的地址	Size:接收的字節(jié)數(shù)**/
6.串口中斷回調(diào)函數(shù)

在HAL庫生成的代碼文件中,stm32l0xx_it.c文件里面存放的就是各個中斷函數(shù),只需找到對應(yīng)的串口中斷,外部中斷或者定時器中斷,右擊到函數(shù)定義,就能在中斷函數(shù)定義里面找到中斷回調(diào)函數(shù)。發(fā)送串口中斷回調(diào)一般是*HAL_UART_TxCpltCallback(UART_HandleTypeDef huart);

HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);

接收串口中斷回調(diào)一般是*HAL_UART_RxCpltCallback(UART_HandleTypeDef huart);

HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

只需要在你需要添加的地方重寫一下這個函數(shù)就可以了,要注意包含頭文件。下面是我的一個串口接收中斷回調(diào),僅供參考

oid HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){	if(Uart1_Rx_Cnt >= 255)  //溢出判斷	{		Uart1_Rx_Cnt = 0;		memset(RxBuffer,0x00,sizeof(RxBuffer));		HAL_UART_Transmit(&huart1, (uint8_t *)"數(shù)據(jù)溢出", 10,0xFFFF); 	        	}	else	{		RxBuffer[Uart1_Rx_Cnt++] = aRxBuffer;   //接收數(shù)據(jù)轉(zhuǎn)存			if((RxBuffer[Uart1_Rx_Cnt-1] == 0x0A)&&(RxBuffer[Uart1_Rx_Cnt-2] == 0x0D)) //判斷結(jié)束位		{			HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuffer, Uart1_Rx_Cnt,0xFFFF); //將收到的信息發(fā)送出去            while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);//檢測UART發(fā)送結(jié)束			Uart1_Rx_Cnt = 0;			memset(RxBuffer,0x00,sizeof(RxBuffer)); //清空數(shù)組		}	}		HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);   //再開啟接收中斷}
7.串口發(fā)送重定義

? 每次通過串口發(fā)送數(shù)據(jù)的時候,都去調(diào)用HAL_UART_Transmit函數(shù),會感覺到些許麻煩,每次都需要配置四個參數(shù),與我們初學(xué)C語言時的printf函數(shù)對比起來就方便性就差太多了,所以我一般都是將HAL_UART_Transmit函數(shù)重定義到printf,就使用printf就可以直接發(fā)送了。

? 將以下代碼編寫在uart.c中

//串口輸出重定義到printfint fputc(int ch, FILE *C){  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);  return ch;}

**注意:**頭文件需要包含標(biāo)準(zhǔn)庫,也就是stdio.h。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/119145.html

相關(guān)文章

  • STM32】標(biāo)準(zhǔn)HAL對照學(xué)習(xí)教程八--串口通信詳解

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

    yck 評論0 收藏0
  • STM32CubeMX學(xué)習(xí)教程之硬件I2C讀取光照度

    摘要:使用庫讀寫環(huán)境光照度傳感器本文將教大家如何快速使用庫讀取光照度數(shù)據(jù)。五實驗樣機測試展示通過之前配置好的面板,通過涂鴉智能進(jìn)行配網(wǎng)實時采集光照度傳感器的數(shù)據(jù)。 使用STM32 HAL庫讀寫環(huán)境光照度傳感器(BH1750) 本文將教大家如何快速使用STM32HAL庫讀取光照度數(shù)據(jù)。 實現(xiàn)功能:通...

    tinylcy 評論0 收藏0
  • 串口通信中關(guān)鍵知識點4

    摘要:串口波特率設(shè)置。串口的狀態(tài)可以通過狀態(tài)寄存器讀取。關(guān)閉接收完成中斷使能中斷通道搶占優(yōu)先級,子優(yōu)先級第五編寫中斷服務(wù)函數(shù)第六串口數(shù)據(jù)接收和發(fā)送發(fā)送與接收是通過數(shù)據(jù)寄存器來實現(xiàn)。 ? ? ? ?串口基本配置的寄存器,配置過程總結(jié)為: 1、串口時鐘使能。這里的串口1設(shè)置是APB2ENR寄存器的第4...

    zgbgx 評論0 收藏0
  • STM32學(xué)習(xí)筆記 第STM32資源介紹

    摘要:總線掛載的外設(shè)有等。外設(shè)地址映射片上外設(shè)區(qū)分為三條總線,根據(jù)外設(shè)速度的不同,不同總線掛載著不同的外設(shè),掛載低速外設(shè),和掛載高速外設(shè)。 第二章 STM32資源介紹 2...

    G9YH 評論0 收藏0
  • 工創(chuàng)賽基于stm32f103的HAL的全向麥輪的四個7路尋跡傳感器智能款采集程序

    摘要:灰度傳感器利用不同顏色的檢測面對光的反射程度不同的原理進(jìn)行顏色深淺檢測。這就是我們用的數(shù)字量灰度傳感器。數(shù)字量的灰度傳感器如果加入的是單片機處理數(shù)據(jù),那么可以把得到的原始數(shù)據(jù)加入濾波算法數(shù)據(jù)混合算法得到一個波動小適應(yīng)環(huán)境強的數(shù)字傳感器。 文章目錄 引言 1.尋跡傳感器工作原理介紹 2.使用方...

    hersion 評論0 收藏0

發(fā)表評論

0條評論

frontoldman

|高級講師

TA的文章

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