STM32F103单片机学习笔记(5):DMA

发布者:快乐舞步最新更新时间:2024-05-09 来源: elecfans关键字:STM32F103  单片机  DMA 手机看文章 扫描二维码
随时随地手机看文章

外部中断触发时,DMA向串口发送一次数据。

DMA是一个好东西,它不需要占用CPU的资源,只需要配置好之后初始化使能就可以将数据从一个地址空间快速复制到另一个地址空间,当DMA传输完成的时候产生一个中断。

STM32有2个DMA控制器,一共12个通道,每个通道专门用来管理来自于一个或多个外设对寄存器访问的请求,参考STM32参考手册。从外设(TIMx、ADC、SPIx、IIC、USARTx)产生7个请求,通过逻辑或者输入到DMA控制器,这意味着同时只能有一个请求有效,DMA1请求一览表。

图片

DMA2请求一览表。

图片

下面是DMA的库

图片

DMA时钟

图片

同样,和之前一样,流程图。

图片

这里具体的代码我就不一一再细说了,只有DAM的初始化和设置我们没有写过,下面是DMA的初始化和设置。

图片

串口DMA的设置。

图片

DMA发送使能,在外部中断中调用这个函数。

好了,今天就到这里了。


关键字:STM32F103  单片机  DMA 引用地址:STM32F103单片机学习笔记(5):DMA

上一篇:介绍在CubeMx+VS下创建STM32项目的两种方式
下一篇:STM32F103单片机学习笔记(3):串口

推荐阅读最新更新时间:2024-11-12 10:42

51单片机程序及调试步骤实战经验
我刚参加工作的时候,用的是stc 51单片机的,51单片机不像stm32那样可以通过st-link在keil上面在线仿真。 有时候出现bug的时候,非常难找问题,要一段一段屏蔽然后测试。 在刚开始接触开发的时候,我非常不习惯用在线仿真,大概是因为没用过。 记得有一次进了一家公司做行车记录仪,用的台产GRAIN的单片机。 那时候基本上没什么资料,就一个dada sheet和demo程序。 在开发之前,老大安排了给我一个任务,就是把这个仿真环境先给搭起来。 相当于是他们原厂没有的东西,让我去搞定,这个芯片是基于Fa626TE core的32位控制器。 网上的资料太少了,光是测试搭建这个环境花了半个多月,最后还没搭建出来。
[单片机]
基于51单片机的三角波信号发生器设计
一、任务要求: 设计内容 选择51单片机,晶振采用12MHz。 设计一个能产生50HZ至100HZ的三角波信号。通过0832/A芯片完成数模转换。 频率值由LED数码管键盘输入。 将频率由LED数码管显示(4位) 设计要求 按照任务书的要求完成系统分析及方案设计。 完成硬件原理图的设计,并设计相关元器件。 完成控制软件流程图的设计,编写相应的单片机控制程序。 撰写设计报告。 二、仿真过程展示 程序烧录仿真界面: K1第一次按下界面 按3次K1后界面 K2、K3可对波形频率进行调整;K4、K5可对占空比进行调整。 频率的值是可以通过这里改的
[单片机]
学习单片机编程入门方法
我写这篇文章,是我在百度看到很多想接触单片机或者已经接触单片机的人,不知道怎么入门,或者不知道第一步怎么走。我也是把我的经验写出来,这次的只不过针对的是想接触单片机的,刚接触单片机的,一开始都会存在几个疑问。 1.学习单片机的需要什么基础。 2.开始怎么入手 3.需不需要买开发板。 主要就存在这几个疑问,我也在这里为大家说说,大家只不过在交流,小弟在这里献丑啦,如有什么说的不周到的,或者不全面的,也请高手多多指教。我写这个目的是希望给更多的想学习单片机,热爱电子设计的人提供一些帮助。闲话少说,进入正题。 学习单片机一开始首要认为是通读一遍书,这个很重要了解它是什么原理,还有能实现那些功能,例如外部中断,定时器等等吧~!这些都是理
[单片机]
PIC单片机开发板独立键盘扫描+蜂鸣器响+数码管 C程序代码
/* 为自已写的独立键盘扫描+蜂鸣器响+数码管 犯的错:unsigned密写成了unsigner一直提示找不到a,b PORTD0=1;不行,要写成PORTD=0x01;才可以,经实验证得没有PORTD0没这个东西,应为RD0=1; PORTD=0x03;不是第三个灯亮,而是0000 0011是两个灯亮 PORTD=0x8则是0000 1000是第4个灯亮。。。。。出错因原进制转化,刚开始写程序进制转化混掉了。 */ #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); const unsigned
[单片机]
PIC<font color='red'>单片机</font>开发板独立键盘扫描+蜂鸣器响+数码管 C程序代码
何谓STM32F单片机的RTC校准功能
在STM32里面有备份寄存器(BKP),它的功能之一就是用来存储RTC校验值的校验寄存器,即具有RTC校准功能。在PC13引脚上输出RTC 校准时钟,RTC闹钟或者秒脉冲。在程序中有#define RTCCLOCkOutput_Enable /*RTC Clock/64 is output on tamper PIN(PC.13)*/ BKP可以用来存储84个字节的用户应用程序数据,他们处在备份域里,当Vdd电源被切断时,他们仍然由Vbat维持供电。 判断RTC后备寄存器1的值是否为事先写入的某个值,如果不是,则说明RTC是第一次上电,需要配置RTC。针对BKP也有相应的库函数。 u16 BKP_ReadBacku
[单片机]
STM32的DMA控制器
  DMA(直接存储器存取)用来提供在外设和存储器之间或者存储器与存储器之间的高速数据传输。无须CPU干预,这就可以节省CPU的资源来做其它操作。   两个DMA控制器有12个通道(DMA1有7通道,DMA2有5通道),还有一个仲裁器协调各个DMA请求的估先权。   有关DMA控制器的特性、框图、寄存器地址及含义等参考STN32资料手册,在此就不多说了,只讲述具体的设置应用。   结构体(DMA_InitTypeDef)说明:   PeripheralBaseAddr:外设地址 CPAR   MemoryBaseAddr: 存储器地址 CMAR   DIR:        传输方向(从外设读/从存储器读)   Buffe
[单片机]
单片机实现软件滤波
1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差 =A,则本次值有效 如果本次值与上次值之差 A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测
[单片机]
Arduino CEO 专访:人工智能的MCU可以让更多人不再做技术“旁观者”
编译自《麻省理工学院技术评论》 自 2005 年成立以来,Arduino 开源平台彻底改变了电子工程界,以开源为代表的创新席卷了整个技术开发的。无论过去、现在还是未来,科技目标始终是让技术更简单、更容易为人们所使用。这一理念与Arduino的开源原则一起,在其开发计划中始终保持不变。 我们已经在最近对该公司创始人 Massimo Banzi的采访中看到了这一点,Arduino 首席执行官 Fabio Violante 也证实了这一点。 法比奥·维奥兰特 (Fabio Violante),Arduino 首席执行官 Violante告诉《麻省理工学院技术评论》意大利版:“我们正在投资各个领域,以便让越来越多的人能够接
[嵌入式]
Arduino CEO 专访:人工智能的<font color='red'>MCU</font>可以让更多人不再做技术“旁观者”
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved