当前位置: 首页 > news >正文

蓝桥杯嵌入式(总结自用)

3.16

今天从开头学到串口的DMA转运,看的是西风的视频(下面附上链接)

Uart、DMA、ADC_哔哩哔哩_bilibili

1.串口的DMA转运重要知识点:
 

 (1)USART_APP.C中

#include "USART.H"
#include "USART_APP.H"
#include "LCD_APP.H"

#define BUUFER_SIZE 64

uint8_t usart_read_buffer[BUUFER_SIZE];
//串口中断
//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
//{
//	if(huart->Instance == USART1)
//	{
//		uart_rx_ticks = uwTick;
//		uart_rx_index++;
//		
//		HAL_UART_Receive_IT(&huart1, &uart_rx_buffer[uart_rx_index], 1);
//		
//	}
//}
//空闲中断
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
    printf("dma data:%s\r\n", uart_rx_dma_buffer);
//	LcdSprintf(Line1, "%s", uart_rx_dma_buffer);
		memset(uart_rx_dma_buffer, 0, sizeof(uart_rx_dma_buffer));
}
void usart_proc(void)
{
//串口中断
//	 if(uart_rx_index == 0) return;

//     // 如果从最后一次接收到数据到现在已经超过100ms
//     if(uwTick - uart_rx_ticks > 100) // 100ms内没有收到新的数据
//     {
//         printf("uart data: %s\n", uart_rx_buffer);

//         // 清空接收缓冲区,将接收索引置零
//         memset(uart_rx_buffer, 0, uart_rx_index);
//         uart_rx_index = 0;
//      
//         // 将UART接收缓冲区指针重置为接收缓冲区的起始位置
//         huart1.pRxBuffPtr = uart_rx_buffer;
//     }
	
//空闲中断
}

我觉得DMA转运应该是比赛中最应该使用的,西风的视频里面讲到串口中断直接进行处理会造成数码管的卡死,使用DMA转运则会减轻串口的使用时间,从而解决 数码管的卡死

 

(2)stm32g4xx_it.c和usart.c中

一定记得加上:
 

HAL_UARTEx_ReceiveToIdle_DMA(&huart1, uart_rx_dma_buffer, sizeof(uart_rx_dma_buffer));
  __HAL_DMA_DISABLE_IT(&hdma_usart1_rx ,DMA_IT_HT);

 


文章转载自:
http://astrionics.zzgtdz.cn
http://adaptable.zzgtdz.cn
http://amphicar.zzgtdz.cn
http://bydgoszcz.zzgtdz.cn
http://borescope.zzgtdz.cn
http://binocle.zzgtdz.cn
http://aweary.zzgtdz.cn
http://blouse.zzgtdz.cn
http://cautionry.zzgtdz.cn
http://appealable.zzgtdz.cn
http://blastomycosis.zzgtdz.cn
http://beravement.zzgtdz.cn
http://assort.zzgtdz.cn
http://annunciation.zzgtdz.cn
http://chopfallen.zzgtdz.cn
http://ankara.zzgtdz.cn
http://boskage.zzgtdz.cn
http://bergson.zzgtdz.cn
http://aluminothermy.zzgtdz.cn
http://abroad.zzgtdz.cn
http://breechcloth.zzgtdz.cn
http://biometrician.zzgtdz.cn
http://callet.zzgtdz.cn
http://calicoed.zzgtdz.cn
http://bymotive.zzgtdz.cn
http://algae.zzgtdz.cn
http://beetlehead.zzgtdz.cn
http://antipyrine.zzgtdz.cn
http://ballproof.zzgtdz.cn
http://arigato.zzgtdz.cn
http://www.dtcms.com/a/72483.html

相关文章:

  • 【大模型】Transformer、GPT1、GPT2、GPT3、BERT 的论文解析
  • 机器学习扫盲系列(1) - 序
  • 在 Ubuntu 服务器上使用宝塔面板搭建博客
  • 【AI News | 20250316】每日AI进展
  • [C++面试] 关于deque
  • 【Node.js入门笔记4---fs 目录操作】
  • 点点-一款超级强大AI生活搜索助手
  • 内网环境安装dlv,本地远程调试go
  • 2.12[A]distribute sys
  • 豆包与 Trae 编程 IDE:开启智能编程新时代
  • 8.C语言分支结构详解:掌握if语句与关系操作符
  • 算法专题(五):模拟
  • Maven核心包:maven-resolver-api
  • 海鲜水产行业wordpress外贸主题
  • linux grub文件丢失
  • C语言之共用体
  • 腾讯混元大模型简介
  • LVPECL(Low Voltage Positive Emitter-Coupled Logic)电平详解
  • Wireshark:在 显示过滤器中“加入条件”过滤后,出现其他类型的数据包,为什么?
  • 在Android中,子线程可以更新UI吗
  • 刷题练习笔记
  • Leetcode-1278.Palindrome Partitioning IV [C++][Java]
  • Word 小黑第18套
  • 《Operating System Concepts》阅读笔记:p309-p330
  • 开启云服务器ubuntu22.04的远程桌面,支持Windows远程连接 - 开启XRDP支持
  • TypeScript装饰器
  • An effective algorithm for peptide de novo sequencing from MS/MS spectra
  • 二分算法刷题
  • 【NLP】 4. NLP项目流程与上下文窗口大小参数的影响
  • llama-factory笔记