stm32的DMA串口应用(以串口1为例)

发布者:Asawen最新更新时间:2015-10-16 来源: eefocus关键字:stm32  DMA  串口应用 手机看文章 扫描二维码
随时随地手机看文章
stm32的DMA串口应用(以串口1为例)
1.定义宏常量
#define BuffSize        12
#define DATA_HEAD       0xAA
#define DATA_END       0x55
#define USART1_DR_Address  (u32)0x40013804
2.声明DMA初始化函数
void DMA_Configuration(void);
3.打开DMA1时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
4.调用初始化函数
DMA_Configuration();
5.DMA初始化函数
void DMA_Configuration(void)
{
  DMA_InitTypeDef DMA_InitStructure;
 
  DMA_DeInit(DMA1_Channel4);
  DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32)TxBuffer;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize =BuffSize;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA1_Channel4, &DMA_InitStructure);
 
//  DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE);
 
  //USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
 
  DMA_Cmd(DMA1_Channel4, ENABLE);
}
6.为要发送的数据赋值
TxBuffer[0]=DATA_HEAD;
TxBuffer[1]=DATA_HEAD;
TxBuffer[2]=PH;
TxBuffer[3]=PL;
TxBuffer[4]=pressureh;
TxBuffer[5]=pressurem;
TxBuffer[6]=pressurel;
TxBuffer[7]=TH;
TxBuffer[8]=TL;
TxBuffer[9]=rh;
TxBuffer[10]=DATA_END;
TxBuffer[11]=DATA_END;
7.在适当的地方调用DMA发送命令
// USART_Cmd(USART1, ENABLE);
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
DMA_Cmd(DMA1_Channel4, ENABLE);
while(DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET){}
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET){}
// USART_Cmd(USART1, DISABLE);
DMA_Cmd(DMA1_Channel4, DISABLE);
DMA_ClearFlag(DMA1_FLAG_TC4); 
USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);             
DMA1_Channel4->CNDTR = BuffSize;
DMA1_Channel4->CMAR = (u32)TxBuffer; 
关键字:stm32  DMA  串口应用 引用地址:stm32的DMA串口应用(以串口1为例)

上一篇:解析ARM与单片机的区别
下一篇:ARM、DSP、FPGA的技术特点和区别有哪些

推荐阅读最新更新时间:2024-03-16 14:36

STM32笔记——GPIO
GPIO简介 GPIO是通用输出输入端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集功能。 GPIO的基本结构 1、保护二极管与上下拉电阻 当外部输入电压高于VDD的电压时,上方的保护二极管导通,当外部输入电压底于Vss的电压时,上方的保护二极管导通,防止不正常电压引入芯片导致芯片烧毁。 2、P-MOS管和N-MOS管 在输出模式部分,线路经过一个由 P-MOS 和 N-MOS 组成的结构,这个结构使其拥有 推挽输出 和 开漏输出 的功能。 3、TTL肖特基触发器 4、IO耐压 STM32是一款3.3V电压的芯片,I
[单片机]
<font color='red'>STM32</font>笔记——GPIO
STM32单片机的PSAM卡驱动模块设计
引言 刷卡消费随着人们生活水平的提高已经成为常用的支付方式之一。为了保证刷卡消费的安全性,将PSAM卡内嵌于各种终端刷卡设备中。PSAM(Purchase SecureAccess Module,销售点终端安全存取模块),由IC卡发行主管部门或者应用主管机构发行,是可以用于对IC卡进行脱机消费交易认证的安全认证卡,主要应用于商用POS、网点终端、直连终端等设备上,支持多级发卡机制,适用于多应用的环境,符合识别卡、带触点的集成电路卡标准、ISO/IEC 7816—1/2/3/4以及《中国人民银行PSAM卡规范》。 1 PSAM卡简介 PSAM卡是接触式CPU卡的一种。CPU卡也称智能卡,卡内集成电路带有微处理CPU,存储
[单片机]
<font color='red'>STM32</font>单片机的PSAM卡驱动模块设计
STM32 USB学习笔记8
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 现在分析USB器件库核心文件的最后一个文件usbd_ctlreq,该文件提供了标准请求的处理,跟USB2.0协议的第九章节紧密关联。在Setup阶段根据bmRequest字段的内容分为:设备请求、接口请求、端点请求。并根据不同的请求调用不同的函数体,USB2.0协议中定义的标清请求有以下几种 通过第一个竖栏可以看出同一个请求代码可以对应多个接收者,例如CLEAR_FEATURE请求可以是设备请求也可以是接口请求,同样也可以是
[单片机]
<font color='red'>STM32</font> USB学习笔记8
基于STM32的大扭矩永磁同步电机驱动系统
引言   大扭矩永磁同步电机直接驱动由于去掉了复杂的机械传动机构,从而消除了机械结构带来的效率低、维护频繁、噪声与转动惯量大等不利因素,具有效率高、振动与噪声小、精度高、响应快、使用维修方便等一系列突出优点 .近年来,随着电力电子技术、永磁材料、电机设计与制造技术、传感技术、控制理论等的发展,大扭矩永磁同步电机在数控机床、矿山机械、港口机械等高性能系统中得到了越来越广泛的应用 .   交流电机控制系统广泛采用单片机、DSP、FPGA为控制系统核心。STM32 是一种基于ARM 公司Cortex-M3 内核的新型32 位闪存微控制器,采用了高性能、高代码密度的Thumb-2 指令集和紧耦合嵌套向量中断控制器,拥有丰富的外围接口
[单片机]
基于<font color='red'>STM32</font>的大扭矩永磁同步电机驱动系统
全新Netduino 3登陆Mouser 新增Wi-Fi连接功能 助力快速建立原型
贸泽电子(Mouser Electronics) 开始分销Netduino 3电子平台,能够使商业硬件解决方案和个人电子项目快速上市,同时提供了最大的设计灵活性并降低了风险。最新版本的开源Netduino平台不但具有让先前版本广受欢迎的最佳功能,还增加了Wi-Fi连接功能。 Mouser分销的 Netduino 3为针对Microsoft .NET Micro Framework而设计的开源电子平台,结合了高级编码的便利性与STM32 F4系列微控制器的原始功能集。Netduino 3基板型采用搭载168MHz ARM Cortex-M4处理器的32位STM32F427VG 微控制器(内置可实现读写同步的1MB双区
[嵌入式]
Stm32定时器中断触发AD采样
Stm32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法: 1)使用定时器中断每隔一定时间进行ADC转换,这样每次都必须读ADC的数据寄存器,非常浪费时间! 2)把ADC设置成连续转换模式,同时对应的DMA通道开启循环模式,这样ADC就一直在进行数据采集然后通过DMA把数据搬运至内存。但是这样做的话还得加一个定时中断,用来定时读取内存中的数据! 3)使用ADC的定时器触发ADC转换的功能,然后使用DMA进行数据的搬运!这样只要设置好定时器的触发间隔,就能实现ADC定时采样转换的功能,然后可以在程序的死循环中一直检
[单片机]
STM32 IIC 详解 之 stm32 IIC 从机模式(中断方式收发数据)
1、IIC简介 第二节代码会用到该部分内容,对于IIC来说,从机是不能主动发送数据的,开始条件都是由主机生成。 1.1、主机发送数据流程 1) 主机在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始 2) 主机接着发送一个命令字节。该字节由 7 位的外围器件地址和 1 位读写控制位 R/W组成(此时 R/W=0) 3) 相对应的从机收到命令字节后向主机回馈应答信号 ACK(ACK=0) 4) 主机收到从机的应答信号后开始发送第一个字节的数据 5) 从机收到数据后返回一个应答信号 ACK 6) 主机收到应答信号后再发送下一个数据字节 7) 当主机发送
[单片机]
IAR Systems发布最新开发工具 支持ST STM32系列微控制器
2007年7月31日,瑞典乌普萨拉市,IAR Systems发布最新的开发工具IAR Embedded Workbench 4.42,支持意法半导体(ST)最新的基于ARM Cortex-M3内核的STM32系列微控制器。STM32具有很好的性能,特别适用于有高性能、低功耗、低成本需求的嵌入式应用。IAR Systems公司与意法半导体紧密合作,即时发布相应的开发工具。 支持ARM Cortex-M3控制器的IAR Embedded Workbench是一个完全集成的开发环境,它包含C/C++编译器、项目管理器、编辑器、链接器以及C-SPY调试器。这款开发工具借鉴了 IAR Systems多年对ARM、Thumb 以及 Thumb
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved