简单记录一下STM32的DMA的配置说明--------
根据野火的串口的DMA程序,自己简单理解说明-----
----第一部分----DMA配置-----
void USART1_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //时钟
DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base; //设置DMA源:串口数据寄存器地址----基地址----如果后面打开了地址自增---则会传输连续一组数据
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SendBuff; //内存地址(要传输的变量的指针)---也就是DMA传输的源地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //方向:外设是目的地----如果是--DMA_DIR_PeripheralSRC---则是外设作为数据传输的来源
DMA_InitStructure.DMA_BufferSize = SENDBUFF_SIZE; //DMA要传输的总数据大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址不增---外设地址不自增---表示从一个固定地址传输或者接收数据----反之则为一个递增地址
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址自增---内存地址不自增---也表示从一个固定地址传输或者接收数据----反之则为一个递增地址
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //外设数据单位---分别有8位---字---DMA_PeripheralDataSize_Byte。半字---DMA_PeripheralDataSize_HalfWord。字----DMA_PeripheralDataSize_Word---
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //内存数据单位 8bit---分别有8位---字---DMA_MemoryDataSize_Byte。半字---DMA_MemoryDataSize_HalfWord。字----DMA_MemoryDataSize_Word---
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //DMA模式:不断循环 ----另一种模式--循环---DMA_Mode_Normal
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //优先级:中-----分别有----最高优先级---DMA_Priority_VeryHigh。高优先级---DMA_Priority_High。中优先级---DMA_Priority_Medium。低优先级---DMA_Priority_Low。
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //禁止内存到内存的传输
DMA_Init(DMA1_Channel4, &DMA_InitStructure); //配置DMA1的4通道---对应USART1_TX。还有很多相应已经确定好的通道----见下面截图----截图01
DMA_Cmd (DMA1_Channel4,ENABLE); //使能DMA
//DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE); //配置DMA发送完成后产生中断----这个是根据需要来确定是否需要中断---比如你需要确定DMA什么时候完成传输----传输完成后你需要做一些什么的时候。但是如果配置了使用完成中断,则需要在后面配置其作为中断的优先级。
}
---第二部分---如果前面打开了DMA中断,这里需要配置其中断优先级----
static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn; //主要是这里的对应DMA通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
---第三部分---如果前面打开了DMA中断,这里需要设置其中断函数----
void DMA1_Channel4_IRQHandler(void)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC4)==SET) //DMA发送完成标志----其它标志位见截图02---和截图03--
{
..............
DMA_ClearFlag(DMA1_FLAG_TC4); //清除发送完成标志---以便下次判断
}
}
----------------------------------------截图------------------------------
--------------截图01---------------
----------------------截图02-------------------------
--------------------------------截图03-----------------------
上一篇:STM32 GPIO 简单操作函数
下一篇:STM32 中断配置 自我学习总结
推荐阅读最新更新时间:2024-11-17 03:03
推荐帖子
- AD835使用问题
- 本帖最后由paulhyde于2014-9-1503:34编辑距离竞赛的日子越来越近了,最近也一直在准备着,也遇到了一些问题。其中一些解决了,但是有一个问题一直都困扰着,一直都没得到解决。问题是这样的:最近选了一道竞赛训练题,是05年的简易频谱分析仪,采用的方案是外差法,其中遇到最大的问题是混频器不给力,我采用的是模拟乘法器AD835,理论上是没什么问题,但是测试结果很让人失望,看看下面的结果吧,1M和1.01M的信号可以混出个2.01M的和频信号和0.1M的差频信号,经过低通
- wgdit 电子竞赛
- MSP430Ware学习笔记 UART SMCLK 115200-8-N-1
- 1.初始化UART0之前需要先初始化ACLK、SMCLK和MCLK。示例代码中使用XT1,ACLK为32768,SMCLK和MCLK约为8MHZ。2.UART的时钟可以参考ACLK或者SMCLK,本例参考SMCLK。波特率提高至1152003.MSP430波特率的产生有两种模式,低频波特率产生和过采样波特率产生。代码中使用过采样波特率产生。其实,两种模式可以达到相似的效果。4.代码的开头调用了stdio,在函数中宏重写了putchar函数,定向到UART单字节输出。
- qinkaiabc 微控制器 MCU
- 如何去掉开发板口串口反馈信息
- 如何去掉开发板s3c2410的串口自动反馈信息?比如说,把开发板和pc连在一起,打开pc上的串口软件,再打开开发板上(wince5.0系统)的串口软件就会在pc上串口软件上收到一些信息,每当板子接收到数据时,pc上的串口软件就会收到类似+SLGetStatus0x1270这样的信息,请问如何能不让开发板在收到数据进自动反馈信息?因为我们最后是要把开发板和一个读卡器想连的,用开发板上的串口软件向读卡器里发送十六进制的命令,每个命令分两次发送,其间串口软件会收到读卡器的信息,但是如果发生
- dhu2060427 嵌入式系统
- 手机上网时网页的内容走不走com口?
- 我用GPRS的modem上网,当握手成功后,本想监测modem串口的信息,但是写在读串口的调试信息没有任何反应(确认调试语句无误且生效),请问网页的内容是否被modem发到串口呢??又能否被读到呢??网页的内容又是如何显示在ie中的呢??如果想监测流量,又如何计算检测呢??手机上网时网页的内容走不走com口?自顶!!!解决另加分!GPRS的modem上网,当握手成功后:这时的串口应该被modem占用了吧,你还能打开?lz要干嘛?当然走串口,你用监控软件看看就知道了,如果你写
- yinfei0809 嵌入式系统
- 求助:地线断开,输出为零》
- 请问各位大侠,我现在有个问题:我有个正负12V电源供电传感器,还有一根地线和一根信号线,要求当断开电源线,地线其中的任何一根时要求输出为小于等于零,怎么做呢?大家有什么方案,讨论一下啦?求助:地线断开,输出为零》没看明白什么意思回复:求助:地线断开,输出为零》可能说得不是很清楚,意思是:一个传感器,有四根线用于连接外面器件,两根正负12V电源线,一根地线,一根信号输出线;现在要求设计出,电源线或者地线中的任何一根开路,信号线输出要为小于等于0V。注:当四根线都正常接好时,信号输出为+1
- guangdingli 模拟电子
- 出一台闲置的100w短波功放,性能强大
- 小蛋挞PA100短波功放,最大输出功率100瓦,做工都唔错。支持KN-Q10、KN850、KN990、协谷G90S等QRP电台。可以走闲鱼交易出一台闲置的100w短波功放,性能强大价格499RMB多少频率范围 3-30mhz顶一顶顶一顶
- Stephenhu1984 淘e淘
设计资源 培训 开发板 精华推荐
- LT8494HFE 450kHz、宽输入范围 12V 输出 SEPIC 转换器的典型应用电路
- 使用 Analog Devices 的 LT3470HTS8 的参考设计
- 使用符合 EN55022 B 类(24Vin 和 48Vin,单路输出)具有 EMC 滤波的 RP40-243.3SFR DC/DC 转换器的典型应用
- 使用 Silicon Labs 的 IA3222A-IC CB8 的参考设计
- MAXREFDES1202:双相降压转换器,利用MAX17558实现电感DCR电流检测
- 智能车驱动
- 鸢尾立方->音频信号发生器[ICL8038]
- 仪器模拟放大
- 用于可调电流源的 LT1764EQ-1.8 LDO 稳压器的典型应用
- 使用基于 LTC4162EUFD-L42M USB PD(C 电缆)的电池充电器和电源路径的典型应用
- 轻松注册世健eSHOP,百份奖品大派送!惊喜不断,好礼无限!ipad air2等你拿!
- 有奖直播预报名|与英飞凌一同探寻网络摄像机的黑科技
- 开学季!EEworld下载中心 Cortex主题资源上传
- EEWorld邀你来拆解第9期——电机驱动专场,拆旧物 赢电机等好礼
- 有奖直播:如何利用瑞萨电子的GreenPAK™平台优化混合信号电路设计
- 下载有好礼!罗姆带您学习电源设计应用小技巧(功率器件篇)
- 论坛小程序上线!扫码解锁逛坛新姿势啦!!
- TE 福利月|有奖调查、技术干货、限时折扣
- 【投票瓜分2500元红包】2022得捷电子创新设计大赛优秀作品人气奖由你来定!
- 是德感恩月:有奖征文免费送示波器啦!