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

STM32標準庫開發(fā)——串口發(fā)送/單字節(jié)接收

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

USART基本結(jié)構(gòu)

STM32標準庫開發(fā)——串口發(fā)送/單字節(jié)接收,stm32,單片機,嵌入式硬件

串口發(fā)送信息

啟動串口一的時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

初始化對應(yīng)串口一的時鐘,引腳,將TX引腳設(shè)置為復(fù)用推挽輸出。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);

配置串口一配置寄存器,設(shè)置波特率為9600,關(guān)閉硬件流控,不使用校驗位,數(shù)據(jù)長度為八字節(jié)

USART_InitTypeDef  USART_InitStruct;
USART_InitStruct.USART_BaudRate=9600;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode=USART_Mode_Tx;
USART_InitStruct.USART_Parity=USART_Parity_No;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStruct);

封裝串口發(fā)送字節(jié)函數(shù)

void Serial_SendByte(uint8_t Byte)
{
	USART_SendData(USART1,Byte);
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)== RESET);	
}

封裝串口發(fā)送字符串函數(shù)

void Serial_SendString(char *String)
{
	uint8_t i;
	for (i=0;String[i]!='\0';i++)
	{
		Serial_SendByte(String[i]);
	}
}

封裝串口發(fā)送數(shù)組函數(shù)

void Serial_SendArray(uint8_t *Array,uint16_t Length)
{
	uint16_t i;
	for (i=0;i<Length;i++)
	{
		Serial_SendByte(Array[i]);
	}
}

封裝串口發(fā)送數(shù)字函數(shù)

uint32_t Serial_Pow(uint32_t x, uint32_t y)
{
	uint32_t Result = 1;
	while(y--)
	{
		Result *= x;
	}
	return Result;
}
void Serial_SendNumber(uint32_t Number, uint8_t Length)
{
	uint8_t i;
	for(i=0; i<Length; i++)
	{
		Serial_SendByte(Number / Serial_Pow(10,Length-i-1)%10);
	}
}

進階一:重定向print輸出到串口中

/*
 fputc是print函數(shù)的底層所以,修改底層文件就能將print輸出重定向到串口。
*/
int fputc(int ch, FILE  *f)
{
	Serial_SendByte(ch);
	return ch;
}

進階二:封裝Serial_Sprintf完成串口輸出功能

/*
char String[100];
sprintf(String,"Num=%d\r\n",666)
Serial_SendString(String);
等價于以下這行代碼
printf("Num=%d\r\n",666)
*/
void Serial_Printf(char *format, ...)
{
	char String[100];
	va_list arg;
	va_start(arg,format);
	vsprintf(String,format,arg);
	va_end(arg);
	Serial_SendString(String);
}

注意:
①發(fā)送和接受均不需要手動清除發(fā)送或接收標志位,因為當發(fā)送字節(jié)或者讀取字節(jié)內(nèi)容時,硬件會自動清0
②Serial_Printf(“串口輸出也支持中文輸出”);
當編碼格式為 UTF-8時才需要配置參數(shù) --no-multibyte-chars
當編碼格式為GB2312時則不需要配置參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-819198.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32串口通信—串口的接收和發(fā)送詳解

    STM32串口通信—串口的接收和發(fā)送詳解

    目錄 前言: STM32串口通信基礎(chǔ)知識: 1,STM32里的串口通信 2,串口的發(fā)送和接收 串口發(fā)送: 串口接收: 串口在STM32中的配置: 1. RCC開啟USART、串口TX/RX所對應(yīng)的GPIO口 2. 初始化GPIO口 3. 串口初始化 4. 串口使能 5. 串口發(fā)送數(shù)據(jù) 串口接收的兩種實現(xiàn)方式: 1,輪詢方式: 2,中斷

    2024年04月08日
    瀏覽(105)
  • STM-32:USART串口協(xié)議、串口外設(shè)—數(shù)據(jù)發(fā)送/數(shù)據(jù)發(fā)送+接收

    STM-32:USART串口協(xié)議、串口外設(shè)—數(shù)據(jù)發(fā)送/數(shù)據(jù)發(fā)送+接收

    通信的目的:將一個設(shè)備的數(shù)據(jù)傳送到另一個設(shè)備,擴展硬件系統(tǒng)。比如STM32芯片里面集成了很多功能模塊,如定時器計數(shù)、PWM輸出、AD采集等等,這些都是芯片內(nèi)部的電路,它們的配置寄存器、數(shù)據(jù)寄存器都在芯片里面,操作簡單,直接讀寫就行。但是有些功能STM32內(nèi)部沒有

    2024年02月04日
    瀏覽(92)
  • STM32--HAl庫串口接收與發(fā)送

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

    ? ? ? ? 在此之前,我們已經(jīng)學(xué)習(xí)了單片機串口通信的原理(江科協(xié)),再寫一遍我個人認知:世界上任何兩個事物如果要進行交流的話,那必然需要兩個東西進行通信的,就像兩個人之間,兩個國人之間用普通話就能夠清楚的交流,但是讓我們中國人和外國人去交流可能會

    2024年04月10日
    瀏覽(23)
  • 最詳細STM32,cubeMX串口發(fā)送,接收數(shù)據(jù)

    最詳細STM32,cubeMX串口發(fā)送,接收數(shù)據(jù)

    這篇文章將詳細介紹 串口 發(fā)送數(shù)據(jù),接受數(shù)據(jù)。 實驗開發(fā)板:STM32F103C8T6。 所需軟件:keil5 , cubeMX 。 實驗?zāi)康模毫私?串口的基礎(chǔ)知識,掌握串口如何發(fā)送,接收數(shù)據(jù) 。 實驗:串口發(fā)送數(shù)據(jù)點亮 led。 如果想了解串口的基礎(chǔ)知識可以參考我之前的文章: STM32Cube串口USART發(fā)送

    2024年02月04日
    瀏覽(126)
  • STM32實現(xiàn)三個串口同時開啟發(fā)送接收數(shù)據(jù)

    STM32實現(xiàn)三個串口同時開啟發(fā)送接收數(shù)據(jù)

    ????????實現(xiàn)STM32開通三個串口,每個串口都可以實現(xiàn)接收和發(fā)送數(shù)據(jù)。 ???????? 編程時,嚴禁在中斷函數(shù)中寫入發(fā)送串口數(shù)據(jù)代碼,否則會出錯,具體原因不清楚(有大佬知道的話幫我指出),可能原因是DR寄存器沖突導(dǎo)致。 ? ? ? ? RX,TX連接到A9,A10使用串口1,使

    2024年04月13日
    瀏覽(89)
  • 【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 新建MDK工程 【STM32】HAL庫 串口輪詢發(fā)送 使用stm32串口中斷發(fā)送和中斷接收 在主函數(shù)前開啟中斷,接受字節(jié)數(shù)為5 接受5個字節(jié)后,進入中斷接收完成回調(diào)函數(shù),重新再開啟中斷,并把接收到的數(shù)據(jù)返回 修改接收數(shù)組長度,改為開啟串口空閑中斷 接收事件回調(diào)函數(shù)

    2024年02月08日
    瀏覽(31)
  • 18、江科大stm32視頻學(xué)習(xí)筆記——USART串口發(fā)送&串口發(fā)送和接收

    18、江科大stm32視頻學(xué)習(xí)筆記——USART串口發(fā)送&串口發(fā)送和接收

    目錄 一、USART串口發(fā)送? 1、電路圖 2、printf函數(shù)的移植方法 3、serial.c 4、main.c 5、解決直接寫漢字,編譯器報錯 二 、USART串口發(fā)送和接收 1、查詢實現(xiàn) 2、中斷實現(xiàn)? (1)在Serial.c中添加的代碼 (2)主函數(shù)中調(diào)用 (3)思路 (4)完整的Serial.c代碼 (5)mian.c ?要交叉連接,所

    2023年04月08日
    瀏覽(20)
  • 【STM32】HAL庫 STM32CubeMX——DMA (串口DMA發(fā)送接收)

    【STM32】HAL庫 STM32CubeMX——DMA (串口DMA發(fā)送接收)

    軟件: STM32CubeMX KEIL5 mcuisp 串口通信助手 硬件: STM32F103C8Tx 杜邦線,面包板,USB轉(zhuǎn)TTL DMA,全稱Direct Memory Access,即直接存儲器訪問。 DMA傳輸將數(shù)據(jù)從一個地址空間復(fù)制到另一個地址空間,提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。 我們知道系統(tǒng)的運

    2024年02月12日
    瀏覽(24)
  • stm32串口發(fā)送字符、字符串(標準庫)

    stm32串口發(fā)送字符、字符串(標準庫)

    目錄 一 芯片概述? 二 代碼編寫 2.1 以串口2為例配置初始化代碼 2.2 發(fā)送自定義長度的字符串 2.3 發(fā)送單個字符 2.4?自定義printf函數(shù) 三 完整代碼 3.1 usart2.c 3.2 usart2.h 3.3 while(1) 本文以stm32f103c8t6系列芯片為例,使用自定義函數(shù)發(fā)送串口數(shù)據(jù)。 PA2為TX引腳,PA3為RX引腳 第一個變量

    2024年04月15日
    瀏覽(22)
  • STM32 LL庫 串口DMA發(fā)送接收配置教程

    本文詳細介紹了如何在STM32中使用LL庫進行串口DMA發(fā)送和接收的配置,包括STM32CubeMX的配置、代碼初始化、發(fā)送功能和接收功能。通過本教程,您將學(xué)會如何正確配置串口DMA,并實現(xiàn)高效的數(shù)據(jù)傳輸。

    2024年02月10日
    瀏覽(218)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包