所在位置:主页 > 数据处理 > stm32 dma 怎么知道接收了多少数据

stm32 dma 怎么知道接收了多少数据

发布时间:2023-11-07 11:41来源:www.sf1369.com作者:宇宇

一、stm32 dma 怎么知道接收了多少数据

呵呵,你这个应该是的stm32的固件库函数的修改版吧。

dma_channel_typedef*指的是dma_channel_typedef的指针,它指向一个地址。

dma_chx应该是一个宏定义,它定义了这个地址。

x值代表dma的通道号,根据芯片不同,可能有1~7不等。

如果想要明白些,用goto difinition查看宏定义即可。

欢迎追问

二、什么是DMA

DMA是存储数据方式的一种!!

三、如何在Linux下用DMA方式传输数据

如果在安装时DMA是disable的,那该怎么才能激活DMA呢?通过重新编译内核可以激活DMA支持,但编译内核对新手显然太过复杂。下面的方法无需编译内核,就可以激活DMA支持。

一、检查系统中的DMA选项是否已被激活

在进行操作前,先确认硬盘是否已经在使用DMA方式传输数据了。方法:查看/proc/ide/hda/settings文件,其中有一行的内容为:using_dma,如果其后面的值被设置为1就说明系统已经支持DMA了,那么下面的操作就可以免了,当然如果你要关闭DMA功能的话,还要往下看看哟:)。

Linux中的hdparm命令是用来进行与硬盘相关操作的,用hdparm -i /dev/hda可以列出IDE可能支持的DMA模式,如:

DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4

二、激活DMA支持

方法1:在lilo.conf中加入:idex=dma,其中x代表硬盘序号,其取值范围0-3,分别代表系统中的四个IDE硬盘设备。

方法2:使用hdparm命令,hdparm d1 /dev/hda 其中d1表示使能DMA,你可以将其加到rc.locl中以便每次启动时都硬盘都能使用DMA方式传输数据。

三、关闭DMA支持