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

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

這篇具有很好參考價(jià)值的文章主要介紹了HAL庫(kù)STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、首先使用STM32CUBEMX新建一個(gè)工程

二、打開(kāi)工程文件

1.在usart.c中添加以下代碼

/* USER CODE BEGIN 0 */
#include "stdio.h"
#include "string.h"
uint8_t aRxBuffer;//數(shù)據(jù)緩存
char USART_RX_BUF[USART_REC_LEN];//接收到的數(shù)據(jù)
uint16_t USART_RX_STA;//接收標(biāo)志位


//printf函數(shù)重定向
int fputc(int ch,FILE *f)
{
	
    HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xFFFF);
	return ch;
}
int fgetc(FILE *f)
{
	uint8_t ch=0;
    HAL_UART_Receive(&huart1,&ch,1,0xFFFF);
	return ch;
}
/* USER CODE END 0 */

?2.然后在最后面加入中斷回調(diào)函數(shù)

/* USER CODE BEGIN 1 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
 {
	UNUSED(huart);
	if(huart==&huart1)
	{
	if(USART_RX_STA<255)
			{
				USART_RX_BUF[USART_RX_STA ++]=aRxBuffer ;
				if((USART_RX_BUF[USART_RX_STA -1]==0x0A)&&(USART_RX_BUF[USART_RX_STA -2]==0x0D))
				{
					HAL_UART_Transmit(&huart1 ,(uint8_t *)&USART_RX_BUF ,USART_RX_STA,0xFFFF);
					USART_RX_STA=0;
					memset(USART_RX_BUF,0x00,sizeof (USART_RX_BUF));
				}
			}
	 else
			 {
				USART_RX_STA=0;
				memset(USART_RX_BUF,0x00,sizeof(USART_RX_BUF));
				HAL_UART_Transmit(&huart1,(uint8_t *)"數(shù)據(jù)已滿",10,0xFFFF);
		    }
			HAL_UART_Receive_IT(&huart1 ,(uint8_t *)&aRxBuffer ,1);	   
 }
}
/* USER CODE END 1 */

3.在usart.h文件中加入

/* USER CODE BEGIN Includes */
#define USART_REC_LEN 5000 //接收的數(shù)據(jù)范圍
extern char USART_RX_BUF[USART_REC_LEN];
extern uint8_t aRxBuffer;
extern uint16_t USART_RX_STA;

/* USER CODE END Includes */

?4.新建一個(gè)cmd.c文件,創(chuàng)建命令check函數(shù)

/**********************************
*函數(shù):USART1_Check(char *cmd)
*輸入?yún)?shù):命令字符串
*返回值:無(wú)
**********************************/
void USART1_Check(char *cmd)
{
	
		if(strcasecmp("LED OFF",cmd)==0) 
 {
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
 }
		if(strcasecmp("LED ON",cmd)==0) 
 {
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
 }
}
/****************END OF FILE************/

5.在mian函數(shù)中的while(1)循環(huán)中調(diào)用USART1_Check(USART_RX_BUF)函數(shù)

6.最后串口初始化函數(shù)后打開(kāi)串口中斷函數(shù)

SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 *              		
  HAL_UART_Receive_IT(&huart1 ,(uint8_t *)&aRxBuffer ,1);
	printf("Int is ok!\r\n");
  /* USER CODE END 2 */

注意:還要在keil中勾選

cubemx串口中斷接收,stm32,單片機(jī),學(xué)習(xí)

?

配置好了就可以進(jìn)行串口收發(fā)數(shù)據(jù)了,并且可以通過(guò)串口助手來(lái)控制單片機(jī)LED燈亮滅文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-596483.html

到了這里,關(guān)于HAL庫(kù)STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

    最近在學(xué)習(xí)使用hal庫(kù),之前都是用標(biāo)準(zhǔn)庫(kù)來(lái)寫32代碼,所以發(fā)個(gè)帖子記錄一下學(xué)習(xí)過(guò)程,同時(shí)也希望能幫助到一些也在學(xué)習(xí)HAL庫(kù)的同學(xué)。 接下來(lái)進(jìn)入正題 串口中斷是指當(dāng)單片機(jī)收到一個(gè)串口數(shù)據(jù)時(shí),單片機(jī)會(huì)產(chǎn)生一個(gè)中斷信號(hào),通知處理器中斷服務(wù)程序去處理這個(gè)接收到的數(shù)

    2024年02月07日
    瀏覽(23)
  • 【STM32】STM32學(xué)習(xí)筆記-USART串口收發(fā)HEX和文本數(shù)據(jù)包(29)

    【STM32】STM32學(xué)習(xí)筆記-USART串口收發(fā)HEX和文本數(shù)據(jù)包(29)

    串口通訊(Serial Communication)是一種設(shè)備間非常常用的串行通訊方式,因?yàn)樗?jiǎn)單便捷,因此大部分電子設(shè)備都支持該通訊方式, 電子工程師在調(diào)試設(shè)備時(shí)也經(jīng)常使用該通訊方式輸出調(diào)試信息。 在計(jì)算機(jī)科學(xué)里,大部分復(fù)雜的問(wèn)題都可以通過(guò)分層來(lái)簡(jiǎn)化。如芯片被分為內(nèi)核層和

    2024年01月19日
    瀏覽(19)
  • STM32CubeMX-HAL庫(kù)-UART串口接收中斷回調(diào)函數(shù)代碼分析

    ????????CubeMx中HAL庫(kù)函數(shù)的調(diào)用不同于庫(kù)函數(shù)調(diào)用,在學(xué)習(xí)CubeMx串口通信時(shí),不理解HAL庫(kù)中的回調(diào)函數(shù)是怎么被調(diào)用的,于是查看每個(gè)的定義,參考其他人寫的博客,總算弄明白了HAL庫(kù)中斷調(diào)用與庫(kù)函數(shù)不同之處。寫下這篇博客一是加深自己的理解,二是希望對(duì)不理解HA

    2024年02月02日
    瀏覽(45)
  • 【STM32學(xué)習(xí)】——USART串口數(shù)據(jù)包&HEX/文本數(shù)據(jù)包&收發(fā)流程&串口收發(fā)HEX/文本數(shù)據(jù)包實(shí)操

    聲明:學(xué)習(xí)筆記根據(jù)b站江科大自化協(xié)stm32入門教程編輯,僅供學(xué)習(xí)交流使用!

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

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

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

    2024年04月10日
    瀏覽(44)
  • stm32F407學(xué)習(xí)DAY.14 在DMA模式下進(jìn)行USART串口數(shù)據(jù)收發(fā)(正點(diǎn)原子例程為例)

    stm32F407學(xué)習(xí)DAY.14 在DMA模式下進(jìn)行USART串口數(shù)據(jù)收發(fā)(正點(diǎn)原子例程為例)

    目錄 一、DMA配置 1、DMA1和DMA2的請(qǐng)求映射 2、DMA掛載總線 3、DMA相關(guān)庫(kù)函數(shù) ?4、DMA配置過(guò)程(以串口1為例) 1)進(jìn)行時(shí)鐘使能 2)等待DMA可配置 3)初始化DMA(串口1的TX為DMA2 數(shù)據(jù)流7 通道4,RX為DMA2 數(shù)據(jù)流5?通道4) a.DMA外設(shè)地址par: b.DMA存儲(chǔ)器0地址mar: c.數(shù)據(jù)傳輸量ndtr: 4)

    2024年02月04日
    瀏覽(22)
  • STM32學(xué)習(xí)筆記(五)串口空閑中斷+DMA實(shí)現(xiàn)不定長(zhǎng)收發(fā)(stm32c8t6)

    STM32學(xué)習(xí)筆記(五)串口空閑中斷+DMA實(shí)現(xiàn)不定長(zhǎng)收發(fā)(stm32c8t6)

    記錄一下學(xué)習(xí)過(guò)程 DMA DMA,全稱為: Direct Memory Access,即直接存儲(chǔ)器訪問(wèn), DMA 傳輸將數(shù)據(jù)從一個(gè) 地址空間復(fù)制到另外一個(gè)地址空間。 這一過(guò)程無(wú)需cpu的參與,從而提高cpu使用的效率 DMA相關(guān)的參數(shù):1 數(shù)據(jù)的源地址、2 數(shù)據(jù)傳輸?shù)哪繕?biāo)地址 、3 傳輸寬度,4 傳輸多少字節(jié),5 傳

    2024年02月14日
    瀏覽(20)
  • 【STM32筆記】STM32的串口數(shù)據(jù)收發(fā)基礎(chǔ)(四)(USART DMA模式)

    【STM32筆記】STM32的串口數(shù)據(jù)收發(fā)基礎(chǔ)(四)(USART DMA模式)

    ? ?? 在STM32中編寫串口通信數(shù)據(jù)收發(fā)有三種方式: 輪詢模式 (阻塞方式), 中斷模式 (非阻塞方式)以及 DMA模式 。 ? ?? 打開(kāi)STM32CubeMX,前部分配置流程如串口數(shù)據(jù)收發(fā)基礎(chǔ)(三)節(jié)里一樣。配置好USART1的基本參數(shù),開(kāi)啟定時(shí)器中斷后,接下來(lái)就要開(kāi)啟USART1的DMA。

    2024年02月03日
    瀏覽(17)
  • STM32CubeMX實(shí)現(xiàn)USART串口通信

    STM32CubeMX實(shí)現(xiàn)USART串口通信

    硬件:stm32f103c8t6核心板 軟件:STM32CubeMX 6.6.1 keil5 mdk 這里就不再詳細(xì)介紹了,詳細(xì)請(qǐng)參考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若點(diǎn)擊 Manage embedded software packages 后,出現(xiàn)失敗,則需要隨便點(diǎn)擊其它任一選項(xiàng),進(jìn)行下載一些文件,比如點(diǎn)

    2023年04月17日
    瀏覽(26)
  • stm32cubemx hal學(xué)習(xí)記錄:電機(jī)控制

    stm32cubemx hal學(xué)習(xí)記錄:電機(jī)控制

    1、配置RCC、SYS,SYS的Timebase Source選擇TIM6 2、配置USART1、時(shí)鐘84MHz 3、激活FreeRTOS,選擇CMSIS_V1,Config parameters種USE_TIMERS選擇ENABLE 1、選用TIM3的編碼器模式 ?2、驅(qū)動(dòng)使用L298N,將PB6、PB7設(shè)置為輸出模式 ?3、使用TIM2的CH1輸出1kHz的PWM 1、設(shè)置兩個(gè)軟件定時(shí)器,一個(gè)用于總控制,一個(gè)

    2024年02月17日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包