STM32库函数功能详解(8)

2018-12-04 21:48

六、DMA控制器(DMA)

DMA寄存器结构

DMA寄存器结构,DMA_Cannel_TypeDef和DMA_TypeDef,在文件“stm32f10x_map.h”中定义如下:

typedef struct {

vu32 CCR; vu32 CNDTR; vu32 CPAR; vu32 CMAR; }

DMA_Channel_TypeDef;

typedef struct {

vu32 ISR; vu32 IFCR; }

DMA_TypeDef;

DMA库函数

1 函数DMA_DeInit

功能描述:将DMA的通道x寄存器重设为缺省值 例:

DMA_DeInit(DMA_Channel2);

2 函数DMA_Init

功能描述:根据DMA_InitStruct中指定的参数初始化DMA的通道x寄存器

DMA_InitStruct:指向结构DMA_InitTypeDef的指针,包含了DMA通道x的配置信息

DMA_InitTypeDef structure

DMA_InitTypeDef定义于文件“stm32f10x_dma.h”:

typedef struct {

u32 DMA_PeripheralBaseAddr; u32 DMA_MemoryBaseAddr;

u32 DMA_DIR; u32 DMA_BufferSize; u32 DMA_PeripheralInc; u32 DMA_MemoryInc;

u32 DMA_PeripheralDataSize; u32 DMA_MemoryDataSize; u32 DMA_Mode;

u32 DMA_Priority; u32 DMA_M2M; }

DMA_InitTypeDef;

36

DMA_PeripheralBaseAddr

该参数用以定义DMA外设基地址

DMA_MemoryBaseAddr

该参数用以定义DMA内存基地址

DMA_DIR

DMA_DIR规定了外设是作为数据传输的目的地还是来源。 DMA_DIR_PeripheralDST:外设作为数据传输的目的地 DMA_DIR_PeripheralSRC:外设作为数据传输的来源

DMA_BufferSize

DMA_BufferSize用以定义指定DMA通道的DMA缓存的大小,单位为数据单位。根据传输方向,数据单位等于结构中参数DMA_PeripheralDataSize或者参数DMA_MemoryDataSize的值。

DMA_PeripheralInc

DMA_PeripheralInc用来设定外设地址寄存器递增与否 DMA_PeripheralInc_Enable:外设地址寄存器递增 DMA_PeripheralInc_Disable:外设地址寄存器不变

DMA_MemoryInc

DMA_MemoryInc用来设定内存地址寄存器递增与否。 DMA_PeripheralInc_Enable:内存地址寄存器递增 DMA_PeripheralInc_Disable:内存地址寄存器不变

DMA_PeripheralDataSize

DMA_PeripheralDataSize设定了外设数据宽度。 DMA_PeripheralDataSize_Byte:数据宽度为8位

DMA_PeripheralDataSize_HalfWord:数据宽度为16位 DMA_PeripheralDataSize_Word:数据宽度为32位

DMA_MemoryDataSize

DMA_MemoryDataSize设定了外设数据宽度。 DMA_MemoryDataSize_Byte:数据宽度为8位

DMA_MemoryDataSize_HalfWord:数据宽度为16位 DMA_MemoryDataSize_Word:数据宽度为32位

DMA_Mode

DMA_Mode设置了CAN的工作模式,

DMA_Mode_Circular:工作在循环缓存模式 DMA_Mode_Normal:工作在正常缓存模式

DMA_Priority

DMA_Priority设定DMA通道x的软件优先级。

DMA_Priority_VeryHigh:DMA通道x拥有非常高优先级 DMA_Priority_High:DMA通道x拥有高优先级 DMA_Priority_Medium:DMA通道x拥有中优先级 DMA_Priority_Low:DMA通道x拥有低优先级

DMA_M2M

DMA_M2M使能DMA通道的内存到内存传输。

DMA_M2M_Enable:DMA通道x设置为内存到内存传输

DMA_M2M_Disable:DMA通道x没有设置为内存到内存传输

37

例:

DMA_InitTypeDef DMA_InitStructure;

DMA_InitStructure.DMA_PeripheralBaseAddr = 0x40005400; DMA_InitStructure.DMA_MemoryBaseAddr = 0x20000100; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize = 256; DMA_InitStructure. DMA_PeripheralInc = DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA_Channel1, &DMA_InitStructure);

3 函数DMA_StructInit

功能描述:把DMA_InitStruct中的每一个参数按缺省值填入 DMA_InitStruct:指向结构DMA_InitTypeDef的指针,待初始化

结构DMA_InitStruct的各个成员有如下的缺省值: DMA_PeripheralBaseAddr:0 DMA_MemoryBaseAddr:0

DMA_DIR:DMA_DIR_PeripheralSRC DMA_BufferSize:0

DMA_PeripheralInc:DMA_PeripheralInc_Disable DMA_MemoryInc:DMA_MemoryInc_Disable

DMA_PeripheralDataSize:DMA_PeripheralDataSize_Byte DMA_MemoryDataSize:DMA_MemoryDataSize_Byte DMA_Mode:DMA_Mode_Normal DMA_Priority:DMA_Priority_Low DMA_M2M:DMA_M2M_Disable

例:

DMA_InitTypeDef DMA_InitStructure; DMA_StructInit(&DMA_InitStructure);

4 函数DMA_Cmd

功能描述:使能或者失能指定的通道x 例:

DMA_Cmd(DMA_Channel7, ENABLE);

5 函数DMA_ITConfig

功能描述:使能或者失能指定的通道x中断 例:

DMA_ITConfig(DMA_Channel5, DMA_IT_TC, ENABLE);

DMA_IT

输入参数DMA_IT使能或者失能DMA通道x的中断。 DMA_IT_TC:传输完成中断屏蔽 DMA_IT_HT:传输过半中断屏蔽 DMA_IT_TE:传输错误中断屏蔽

38

6 函数DMA_GetCurrDataCounte

功能描述:返回当前DMA通道x剩余的待传输数据数目 例:

u16 CurrDataCount;

CurrDataCount = DMA_GetCurrDataCounter(DMA_Channel2);

7 函数DMA_GetFlagStatus

功能描述:检查指定的DMA通道x标志位设置与否 例:

FlagStatus Status;

Status = DMA_GetFlagStatus(DMA_FLAG_HT6);

DMA_FLAG 参数DMA_FLAG定义了待检察的标志位类型

DMA_FLAG_GLx:通道x全局标志位

DMA_FLAG_TCx:通道x传输完成标志位 DMA_FLAG_HTx:通道x传输过半标志位

DMA_FLAG_TEx:通道x传输错误标志位(1--7)

8 函数DMA_ClearFlag

功能描述:清除DMA通道x待处理标志位 例:

DMA_ClearFlag(DMA_FLAG_TE3);

9 函数DMA_GetITStatus

功能描述:检查指定的DMA通道x中断发生与否 例:

ITStatus Status;

Status = DMA_GetITStatus(DMA_IT_TC7);

DMA_IT

参数DMA_IT定义了待检察的DMA中断。 DMA_IT_GLx:通道x全局中断 DMA_IT_TCx:通道x传输完成中断 DMA_IT_HTx:通道x传输过半中断

DMA_IT_TEx:通道x传输错误中断(1--7)

10 函数DMA_ClearITPendingBit

功能描述:清除DMA通道x中断待处理标志位 例:

DMA_ClearITPendingBit(DMA_IT_GL5);

39

七、复位和时钟设置(RCC)

RCC寄存器结构

RCC寄存器结构,RCC_TypeDeff,在文件“stm32f10x_map.h”中定义如下:

typedef struct {

vu32 CR; vu32 CFGR; vu32 CIR;

vu32 APB2RSTR; vu32 APB1RSTR; vu32 AHBENR; vu32 APB2ENR; vu32 APB1ENR; vu32 BDCR; vu32 CSR; }

RCC_TypeDef;

RCC库函数

1 函数RCC_DeInit

功能描述:将外设RCC寄存器重设为缺省值 例:

RCC_DeInit();

1. 该函数不改动寄存器RCC_CR的HSITRIM[4:0]位。 2. 该函数不重置寄存器RCC_BDCR和寄存器RCC_CSR。

2 函数RCC_HSEConfig

功能描述:设置外部高速晶振(HSE) 例:

RCC_HSEConfig(RCC_HSE_ON);

RCC_HSE

该参数设置了HSE的状态

RCC_HSE_OFF:HSE晶振OFF RCC_HSE_ON:HSE晶振ON

RCC_HSE_Bypass:HSE晶振被外部时钟旁路

3 函数RCC_WaitForHSEStartUp

功能描述:等待HSE起振,该函数将等待直到HSE就绪,或者在超时的情况下退出 例:

ErrorStatus HSEStartUpStatus;

RCC_HSEConfig(RCC_HSE_ON); /* Enable HSE */

HSEStartUpStatus = RCC_WaitForHSEStartUp();/* Wait till HSE is ready and if Time out is reached exit */ if(HSEStartUpStatus == SUCCESS) {

/* Add here PLL ans system clock config */

40


STM32库函数功能详解(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:哲学与人生 作业与答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: