FM33lc026n使用空闲中断+DMA实现数据接收代码

时间: 2024-05-13 12:20:02 浏览: 8
以下是使用空闲中断+DMA实现数据接收的示例代码: ```c #include "fm33lc0xx_fl_dma.h" #include "fm33lc0xx_fl_uart.h" #include "fm33lc0xx_fl_rcc.h" #include "fm33lc0xx_fl_exti.h" #define UART_RX_BUF_SIZE 256 uint8_t rx_buf[UART_RX_BUF_SIZE]; volatile uint16_t rx_index = 0; FL_DMA_InitTypeDef dma_init_struct; FL_UART_InitTypeDef uart_init_struct; FL_EXTI_InitTypeDef exti_init_struct; void uart_rx_dma_init(void) { /* 使能DMA和UART时钟 */ FL_RCC_EnableGroup1BusClock(FL_RCC_GROUP1_BUSCLK_DMA); FL_RCC_EnableGroup1BusClock(FL_RCC_GROUP1_BUSCLK_UART); /* 配置UART */ FL_UART_StructInit(&uart_init_struct); uart_init_struct.UART_BaudRate = 115200; uart_init_struct.UART_WordLength = FL_UART_DATAWIDTH_8B; uart_init_struct.UART_StopBits = FL_UART_STOPBITS_1; uart_init_struct.UART_Parity = FL_UART_PARITY_NONE; uart_init_struct.UART_HardwareFlowControl = FL_UART_FLOWCTRL_NONE; uart_init_struct.UART_Mode = FL_UART_MODE_RX; FL_UART_Init(UART, &uart_init_struct); /* 配置DMA */ dma_init_struct.DMA_Channel = FL_DMA_CHANNEL_0; dma_init_struct.DMA_PeripheralBaseAddr = (uint32_t)&UART->RBR; dma_init_struct.DMA_MemoryBaseAddr = (uint32_t)rx_buf; dma_init_struct.DMA_DIR = FL_DMA_DIR_PERIPHERAL_TO_MEMORY; dma_init_struct.DMA_BufferSize = UART_RX_BUF_SIZE; dma_init_struct.DMA_PeripheralInc = FL_DMA_PERIPHERAL_INC_DISABLE; dma_init_struct.DMA_MemoryInc = FL_DMA_MEMORY_INC_ENABLE; dma_init_struct.DMA_PeripheralDataSize = FL_DMA_PDATAWIDTH_BYTE; dma_init_struct.DMA_MemoryDataSize = FL_DMA_MDATAWIDTH_BYTE; dma_init_struct.DMA_Mode = FL_DMA_MODE_CIRCULAR; dma_init_struct.DMA_Priority = FL_DMA_PRIORITY_HIGH; FL_DMA_Init(&dma_init_struct); /* 配置空闲中断 */ exti_init_struct.EXTI_Line = FL_EXTI_LINE_UART_RI; exti_init_struct.EXTI_Trigger = FL_EXTI_TRIGGER_FALLING; exti_init_struct.EXTI_LineCmd = ENABLE; FL_EXTI_Init(&exti_init_struct); FL_EXTI_EnableIT_FL_EXTI_LINE_UART_RI(); FL_IRQ_EnableIRQ_UART_RI(); /* 启动DMA */ FL_DMA_EnableChannel(FL_DMA_CHANNEL_0); } void UART_RI_IRQHandler(void) { /* 清除中断标志 */ FL_UART_ClearFlag_RXNE(UART); FL_EXTI_ClearFlag_FL_EXTI_LINE_UART_RI(); /* 禁用DMA */ FL_DMA_DisableChannel(FL_DMA_CHANNEL_0); /* 处理接收到的数据 */ rx_index = UART_RX_BUF_SIZE - FL_DMA_GetCurrDataCounter(FL_DMA_CHANNEL_0); if (rx_index > 0) { // do something with rx_buf } /* 重新启动DMA */ FL_DMA_EnableChannel(FL_DMA_CHANNEL_0); } ``` 在上面的代码中,首先需要初始化UART和DMA,并启动DMA传输。当接收到数据时,空闲中断会触发,此时需要禁用DMA,处理接收到的数据,并重新启动DMA传输。注意,空闲中断和DMA都要在初始化时启用并配置相应的参数。

相关推荐

最新推荐

recommend-type

FM中频数字化的FPGA实现

依照软件无线电数字化中频架构,采用音频采集芯片PCM1801、FPGA芯片X3S500E、数模转换器DA9654构建硬件平台,在此基础上实现了FM的中频数字调制。此外,通过对FPGA的配置,该平台还能实现其他方式的调制。与传统模拟...
recommend-type

FM解调 仿真方法.docx

采用正交解调方式对FM调频信号做了仿真。在FPGA内实现,通过MATLAB仿真。
recommend-type

基于EPC C1G2的FM0与MILLER编码的实现报告

FM0编码和MILLER编码以其便于位同步提取、频谱...FM0编码与MILLER编码的使用,是得短距离数据传输变得简单可靠。基于以上考虑,本文探讨利用Verilog HDL设计紧凑、合理、简单、可修改配置的FM0编码与MILLER编码电路。
recommend-type

FM17520非接触读卡器芯片技术参考手册(非规格书)

技术手册,不是普通规格书,可以知道设计及软件开发,从一般网上下载基本上就是简单几页规格书,没法指导设计开发
recommend-type

VB学生档案管理系统设计与实现.rar

计算机专业毕业设计VB精品论文资源
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。