草庐IT

HAL_UART_Transmit_DMA

全部标签

基于国产FPGA紫光同创Titan2 PG2T390H的PCIe链式DMA控制器设计

文章目录背景介绍逻辑方案性能测试软件驱动相关帖子技术交流背景介绍    近年来,国产FPGA厂商发展迅速,紫光同创、安路等公司已经量产28nm、几k~几百k的FPGA逻辑芯片,在自主可控的大环境下,国产FPGA厂商给了我们一个更优的选择。虽然,国产FPGA厂商在芯片逻辑资源、工艺、eda工具等方面取得长足进步,但是在IP生态上仍然有很长的路要走。在此之前,FPGA开发者需要自己独立开发一些官方不能提供的IP,虽然道阻且长,但是在此过程中我们可以学到更多知识,掌握更多设计技巧。    本文简要介绍基于紫光同创Titan2系列PG2T390H芯片的链式DMA控制器实现框架,该架构支持多通道,每个通

STM32HAL库常用库函数说明

STM32HAL库常用库函数说明系统函数HAL_Delay(延时函数)GPIOHAL_GPIO_WritePin(GPIO引脚电平设置)HAL_GPIO_TogglePin(GPIO电平翻转)HAL_GPIO_ReadPin(获取GPIO引脚状态)TimerHAL_TIM_Base_Start_IT(打开定时器)HAL_TIM_Base_Stop_IT(关闭定时器中断)USART(串口)HAL_UART_Transmit(阻塞式发送函数)HAL_UART_Transmit_IT(非阻塞式发送函数)HAL_UART_Receive(阻塞式接收函数)——不推荐使用HAL_UART_Receive_

STM32(8)-DMA+串口实现双开发板数据收发

我通过学习江科大的视频以及CSDN一位大佬的博客,在下面记录下我对DMA的理解。文章目录一、存储器、寄存器二、具体代码1.STM32(发送方)DMA配置(1)作为发送方,自然数据要从内存发往串口数据寄存器去,我定义一个数组,并编写两个函数,分别返回温度和湿度数值,作为数组里的元素。(2)配置DMA,方向是从内存到外设寄存器(3)配置DMA初始化(4)DMA开启传输函数(5)主程序2.CH32V307(接收方)采用普通的串口中断接收3.CH32V307(接收方)DMA配置(1)作为接收方,自然数据要从串口数据寄存器发往内存去,因此DMA配置要更改。(2)DMA启动程序(3)主程序三、结果:四、一

HAL库 串口空闲中断+DMA接收不定长数据 详解及踩坑

文章目录前言一、串口及DMA基础配置二、HAL_UARTEx_ReceiveToIdle_DMA()函数功能三、使用HAL_UARTEx_ReceiveToIdle_DMA()函数1.重新实现回调函数HAL_UARTEx_RxEventCallback2.调用接收函数四、踩坑测试流程原因总结前言本文需要用到HAL库的HAL_UARTEx_ReceiveToIdle_DMA()函数,如果编辑器提示找不到函数,可以尝试更新HAL库至最新版本。串口接收不定长数据是串口的常见应用。最近的项目需要用到modbus协议,由于不经常使用HAL库,配置串口接收时遇到了一些问题。在此记录一下,希望能帮助到一些人

STM32 HAL库函数——HAL_UART_Receive_IT()详解

文章目录函数源代码函数用法详解函数逐行解释函数源代码/***@briefReceiveanamountofdataininterruptmode.*@noteWhenUARTparityisnotenabled(PCE=0),andWordLengthisconfiguredto9bits(M1-M0=01),*thereceiveddataishandledasasetofu16.Inthiscase,Sizemustindicatethenumber*ofu16availablethroughpData.*@noteWhenUARTparityisnotenabled(PCE=0),and

STM32 hal库编程定时器清除中断标志位,开启定时器中断会立即进入中断的问题

#include"tim.h"__HAL_TIM_CLEAR_FLAG(&htim2,TIM_FLAG_UPDATE); //清除中断标志位1、如果不清除中断标志位,开启定时器中断的话,不能完成相应的计时,会立即进入中断。2、如果在开启定时器中断前清除了中断标志位,就会等待计时完成再出发中断。3、主要是针对单次计时使用,尤其是对第一次计时有要求的程序。HAL_TIM_Base_Start_IT(&htim2);//开启定时器中断的函数

STM32(HAL)多串口进行重定向(printf函数发送数据)

目录1、简介2.1基础配置2.1.1SYS配置 2.1.2RCC配置2.2 串口外设配置 2.3项目生成 3、KEIL端程序整合  4、效果测试1、简介在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。2.1基础配置2.1.1SYS配置 2.1.2RCC配置2.2 串口外设配置 接着将串口2、3分别打开,如下图所示:  2.3项目生成 3、KEIL端程序整合在usart.c函数最下方复制如下代码voidUart_printf(UART_HandleTypeDef*huart,char*format,...){charbuf[

STM32F407 串口使用DMA方式通信

DMA的原理,就是利用寄存器方式进行读写,这样的好处就是相对于中断触发(往往一个字节字节的就中断一次),CPU中断次数大大降少,提高了效率,但也影响了实时性。总体来说,对于一般的应用,瑕不掩瑜,值得使用。本文是基于串口1的,实际上串口1也是printf重定向接口,貌似没有什么冲突。原则上:1.串口接收采用DMA+空闲中断的方式2.串口发送就是直接发送方式这样的方式,符合一般项目需求。也分两部分:STM32CubeMx端配置+代码的处理STM32CubeMx端配置CubeMX这边在原先“串口”配置基础上,配置DMA方式,总体来说,跟网上大部分例子差不多。在USART界面下选择DMASetting

STM32 使用硬件IIC驱动0.96寸4针IOLED显示器(HAL库)

OLED显示屏驱动HAL库一、简介:SSD1306是一个单片CMOSOLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。由128segments和64Commons组成。该芯片专为共阴极OLED面板设计。SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此减少了外部器件和功耗。有256级亮度控制。数据/命令的发送有三种接口可选择:6800/8000串口,I2C接口或SPI接口。适用于多数简介的应用,注入移动电话的屏显,MP3播放器和计算器等。详细介绍以及工作原理:链接:https://pan.baidu.com/s/1nz1MpdP5-o-kRXF9mfZmig提取

STM32 hal库编程定时器计数清零

#include"tim.h"__HAL_TIM_SET_COUNTER(&htim2,0); //计数清零 1、stm32定时器是有重装载功能的,所以定时器中断不关的话,就不需要计数清零2、主要是应对单次计时使用,可能因为没有清零导致程序再次运行到相同位置时,中断立即出发,没有完成计时的功能。顺便加一个读取定时器计数值得函数Counter=__HAL_TIM_GET_COUNTER(&TIM2_Handler);