成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

STM32串口通信(HAL庫 二)

frontoldman / 1885人閱讀

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

緊接著上一篇博文。。。

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

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

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

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

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

接下來講解幾個(gè)

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

HAL_UART_Transmit(UART_HandleTypdef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);/**	功能:串口發(fā)送指定長度的數(shù)據(jù),如果超時(shí)沒有發(fā)生完成,則不在發(fā)送,并返回超時(shí)標(biāo)志	參數(shù): UART_HandleTypdef *huart :串口別名   UART_HandleTypeDef huart1;   別名就是huart1  	*pData:需要發(fā)送的數(shù)據(jù)	Size:發(fā)送的字節(jié)數(shù)	Timeout:最大發(fā)送時(shí)間,發(fā)送時(shí)間超出的話停止發(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ù)時(shí),會(huì)觸發(fā)串口中斷	在然后,串口中斷函數(shù)處理,知道接收到指定長度數(shù)據(jù),,而后關(guān)閉中斷,進(jìn)入中斷接收回調(diào)函數(shù),不在觸發(fā)接收中斷,所以說是只會(huì)觸發(fā)一次中斷。	參數(shù):UART_HandleTypeDef *huart 和發(fā)送函數(shù)一樣的意思,串口的別名	*pData:接收到的數(shù)據(jù)存放的地址	Size:接收的字節(jié)數(shù)**/
6.串口中斷回調(diào)函數(shù)

在HAL庫生成的代碼文件中,stm32l0xx_it.c文件里面存放的就是各個(gè)中斷函數(shù),只需找到對(duì)應(yīng)的串口中斷,外部中斷或者定時(shí)器中斷,右擊到函數(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)

只需要在你需要添加的地方重寫一下這個(gè)函數(shù)就可以了,要注意包含頭文件。下面是我的一個(gè)串口接收中斷回調(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);//檢測(cè)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ù)的時(shí)候,都去調(diào)用HAL_UART_Transmit函數(shù),會(huì)感覺到些許麻煩,每次都需要配置四個(gè)參數(shù),與我們初學(xué)C語言時(shí)的printf函數(shù)對(duì)比起來就方便性就差太多了,所以我一般都是將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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/119145.html

相關(guān)文章

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

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

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

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

    tinylcy 評(píng)論0 收藏0
  • 串口通信中關(guān)鍵知識(shí)點(diǎn)4

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

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

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

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

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

    hersion 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<