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

STM32 Cubemx配置串口收發(fā)

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

前言

最近學(xué)到了串口收發(fā),簡單記錄一下注意事項。

注意事項

Cubemx配置

以使用USART1為例。
USART1需配置成異步工作模式Asynchronous。
STM32 Cubemx配置串口收發(fā),STM32,stm32,單片機(jī),嵌入式硬件
并且需要使能NVIC。
STM32 Cubemx配置串口收發(fā),STM32,stm32,單片機(jī),嵌入式硬件

printf重定向

我偏向于在stm32f1xx_it.c文件中對printf進(jìn)行重定向,重定向函數(shù)如下。

int fputc(int ch,FILE * fp)
{
	HAL_UART_Transmit(&huart1,(uint8_t * )&ch,1,0xffff);
	return ch;
}

同時需包含頭文件路徑#include “stdio.h”

修改工程屬性

在工程屬性Target下,勾選Use MicroLIB。

至此,可以由printf語句經(jīng)USART1發(fā)送數(shù)據(jù)了。文章來源地址http://www.zghlxwxcb.cn/news/detail-687124.html

修改源碼

  1. 添加變量定義

/* USER CODE BEGIN Private defines */
#define USART_REC_LEN 200
#define RXBUFFERSIZE 1
extern	uint16_t	USART_RX_STA;  
extern	uint8_t		USART_RX_BUF[USART_REC_LEN];
extern	uint8_t		aRxBuffer[RXBUFFERSIZE];
/* USER CODE END Private defines */
  1. 在Cubemx生成的串口初始化函數(shù)MX_USART1_UART_Init增加如下語句
HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE);
  
  1. 在stm32f1xx_it.c文件中添加如下函數(shù)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart->Instance==USART1)//
	{
		if((USART_RX_STA&0x8000)==0)//
		{
			if(USART_RX_STA&0x4000)//
			{
				if(aRxBuffer[0]!=0x0a)USART_RX_STA=0;//
				else USART_RX_STA|=0x8000;	//
			}
			else //
			{	
				if(aRxBuffer[0]==0x0d)USART_RX_STA|=0x4000;
				else
				{
					USART_RX_BUF[USART_RX_STA&0X3FFF]=aRxBuffer[0] ;
					USART_RX_STA++;
					if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//
				}		 
			}
		}
	}
}
  1. 在stm32f1xx_it.c文件中找到USART1_IRQHandler并修改為如下函數(shù):
void USART1_IRQHandler(void)
{
	uint32_t timeout=0;
  /* USER CODE BEGIN USART1_IRQn 0 */

  /* USER CODE END USART1_IRQn 0 */
  HAL_UART_IRQHandler(&huart1);
  /* USER CODE BEGIN USART1_IRQn 1 */
	timeout=0;
	while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)//
	{
		timeout++;//
		if(timeout>HAL_MAX_DELAY) break;		

	}

	timeout=0;
	while(HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)//ò?′?′|àííê3é??oó£???D??a???D??2¢éè??RxXferCount?a1
	{
		timeout++; //3?ê±′|àí
		if(timeout>HAL_MAX_DELAY) break;	
	}
  /* USER CODE END USART1_IRQn 1 */
}

測試函數(shù)

while (1)
  {
		uint8_t len=0;
		static uint16_t times = 0;
		printf("%d\r\n",times++);
		HAL_Delay(500);
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
		HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
		if(USART_RX_STA&0x8000)
		{					    
			len=USART_RX_STA&0x3fff;//μ?μ?′?′??óê?μ?μ?êy?Y3¤?è
			printf("\r\n?ú·¢?íμ????¢?a:\r\n");
			HAL_UART_Transmit(&huart1,(uint8_t*)USART_RX_BUF,len,1000);	//·¢?í?óê?μ?μ?êy?Y
			while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC)!=SET);		//μè′y·¢?í?áê?
			printf("\r\n\r\n");//2?è???DD
			USART_RX_STA=0;
		}
		else
		{
			if(times%20==0)printf("??ê?è?êy?Y,ò???3μ?ü?áê?\r\n");  
			if(times%2==0);//LED0=!LED0;//éá??LED,ìáê??μí3?y?ú??DD.
		} 
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

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

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

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

相關(guān)文章

  • 【單片機(jī)】基于STM32的UART串口通信

    【單片機(jī)】基于STM32的UART串口通信

    簡單講解一下UART通信協(xié)議,以及UART能夠?qū)崿F(xiàn)的一些功能,還有有關(guān)使用STM32CubeMX來配置芯片的一些操作。實驗內(nèi)容基于 正點原子精英板 開發(fā)板,單片機(jī)芯片為 STM32F103ZET6 。 在后面我會以我使用的STM32F429開發(fā)板來舉例講解(其他STM32系列芯片大多數(shù)都可以按照這些步驟來操作

    2024年01月17日
    瀏覽(96)
  • STM32CubeMX里面沒有 CLion的SW4STM32選項(CLion修改單片機(jī)型號)

    STM32CubeMX里面沒有 CLion的SW4STM32選項(CLion修改單片機(jī)型號)

    ????????大家在使用最新版本的CubeMX按照網(wǎng)上的一些教程配置CLion時通常會遇到編譯器選項里面沒有SW4STM32的選項的問題。 ?????????根據(jù)網(wǎng)上的很多人都會要求把CubeMX降低到某個版本以下,但是一直使用低版本肯定不是解決問題的方法。其實在CLion文檔里面就有解決方

    2024年02月05日
    瀏覽(20)
  • STM32單片機(jī)(九)USART串口----第一節(jié):USART串口協(xié)議

    STM32單片機(jī)(九)USART串口----第一節(jié):USART串口協(xié)議

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機(jī)的過程,其中包括51單片機(jī)和STM32單片機(jī)兩部分;建議先學(xué)習(xí)51單片機(jī),其是STM32等高級單片機(jī)的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機(jī),且有一定C語言基礎(chǔ)的的童鞋

    2024年02月16日
    瀏覽(165)
  • STM32單片機(jī)(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(xí)(串口發(fā)送)

    STM32單片機(jī)(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(xí)(串口發(fā)送)

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機(jī)的過程,其中包括51單片機(jī)和STM32單片機(jī)兩部分;建議先學(xué)習(xí)51單片機(jī),其是STM32等高級單片機(jī)的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機(jī),且有一定C語言基礎(chǔ)的的童鞋

    2024年02月10日
    瀏覽(97)
  • STM32單片機(jī)(九)USART串口----第四節(jié):USART串口實戰(zhàn)練習(xí)(串口發(fā)送+接收)

    STM32單片機(jī)(九)USART串口----第四節(jié):USART串口實戰(zhàn)練習(xí)(串口發(fā)送+接收)

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機(jī)的過程,其中包括51單片機(jī)和STM32單片機(jī)兩部分;建議先學(xué)習(xí)51單片機(jī),其是STM32等高級單片機(jī)的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機(jī),且有一定C語言基礎(chǔ)的的童鞋

    2024年02月10日
    瀏覽(90)
  • 基于STM32單片機(jī)BOOTLOADER通過串口升級程序IAP——APP方案

    基于STM32單片機(jī)BOOTLOADER通過串口升級程序IAP——APP方案

    ????????????????????????此方法前提是你得有一個EEPROM ? ? ? ? 我用的單片機(jī)是STM32F103ZET6 , 此單片機(jī)FLASH容量為512KB; 在此單片機(jī)里面FLASH的起始地址是0X8000000,BOOT作為引導(dǎo)加載程序一般都是從這個地址開始,單片機(jī)一上點默認(rèn)會從這個地址開始運(yùn)行,所以將自己

    2024年02月04日
    瀏覽(96)
  • 使用DMA傳輸實現(xiàn)單片機(jī)高效串口轉(zhuǎn)發(fā)——以STM32系列為例

    使用DMA傳輸實現(xiàn)單片機(jī)高效串口轉(zhuǎn)發(fā)——以STM32系列為例

    Date Author Version Note 2023.08.06 Dog Tao V1.0 1. 完成了文檔的撰寫。 2023.08.23 Dog Tao V1.1 1. 增加了STM32F103-USART2的DMA傳輸配置示例。 2. 增加了STM32F103與F407單片機(jī)的DMA控制器介紹并更改了第一章節(jié)的結(jié)構(gòu)。 應(yīng)用場景 在許多現(xiàn)實應(yīng)用場景中,例如工業(yè)自動化控制、嵌入式通信設(shè)備等領(lǐng)域,

    2024年02月14日
    瀏覽(91)
  • STM32+CubeMX零基礎(chǔ)串口收發(fā)全攻略

    STM32+CubeMX零基礎(chǔ)串口收發(fā)全攻略

    第一章:初學(xué)單片機(jī),使用STM32進(jìn)行點燈 本文主要是解決簡單的串口通信 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 本案例主要涉及到的裝置和軟件有: 1.一塊STM32F103ZET6的開發(fā)板(也可使用其它板子) 2.ST-LINKV2(有錢的也可使用J-link等)一個與杜邦線若干 3.涉及到

    2024年02月13日
    瀏覽(20)
  • 51單片機(jī)串口通信原理、相關(guān)寄存器配置與簡單串口收發(fā)程序代碼

    51單片機(jī)串口通信原理、相關(guān)寄存器配置與簡單串口收發(fā)程序代碼

    目錄 1. 串口通信原理 2. 51單片機(jī)串口通信 ?2.1 串口簡要模式圖 ?2.2 相關(guān)寄存器 (1)PCON、SCON、SBUF (2)IE、IPH、IP (3)配置T1定時器 2.3 波特率和系統(tǒng)時鐘和TH1和TL1計算 ?3.串口通信簡單收發(fā)使用代碼 ? 3.1 在STC-isp使用端口助手,從單片機(jī)發(fā)送字節(jié) ?3.2 通過端口助手利用主

    2024年02月05日
    瀏覽(30)
  • HAL庫STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))

    HAL庫STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))

    一、首先使用STM32CUBEMX新建一個工程 二、打開工程文件 1.在usart.c中添加以下代碼 ?2.然后在最后面加入中斷回調(diào)函數(shù) 3.在usart.h文件中加入 ?4.新建一個cmd.c文件,創(chuàng)建命令check函數(shù) 5.在mian函數(shù)中的while(1)循環(huán)中調(diào)用USART1_Check(USART_RX_BUF)函數(shù) 6.最后串口初始化函數(shù)后打開串口中

    2024年02月16日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包