• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: STM32  DMA  I2C  ARM  STM32F4  

资源简介

STM32F4 硬件I2C 使用DMA 測試過OK

资源截图

代码片段和文件信息

/*=====================================================================================================*/
/*=====================================================================================================*/
#include “stm32f4_system.h“
#include “stm32f4_i2c.h“
/*=====================================================================================================*/
/*=====================================================================================================*/
#define I2C1_DR_Address ((u32)0x40005410)
/*=====================================================================================================*/
/*=====================================================================================================*/
vu8* I2C_ReadPtr;
vu8* I2C_WritePtr;
vu32 I2C_TimeCnt = I2C_TIME;
/*=====================================================================================================*/
/*=====================================================================================================*/
DMA_InitTypeDef DMA_InitStruct;
/*=====================================================================================================*/
/*=====================================================================================================*/
void I2C_Config( void )
{
GPIO_InitTypeDef GPIO_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
I2C_InitTypeDef I2C_InitStruct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1 ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 ENABLE);

RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1 DISABLE);

GPIO_PinAFConfig(GPIOB GPIO_PinSource6 GPIO_AF_I2C1);
GPIO_PinAFConfig(GPIOB GPIO_PinSource7 GPIO_AF_I2C1);  

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB &GPIO_InitStruct);

NVIC_InitStruct.NVIC_IRQChannel = DMA1_Stream0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel = DMA1_Stream6_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);

DMA_ClearFlag(DMA1_Stream6 DMA_FLAG_FEIF6 | DMA_FLAG_DMEIF6 | DMA_FLAG_TEIF6 |
DMA_FLAG_HTIF6 | DMA_FLAG_TCIF6);
DMA_Cmd(DMA1_Stream6 DISABLE);
DMA_DeInit(DMA1_Stream6);
DMA_InitStruct.DMA_Channel = DMA_Channel_1;
DMA_InitStruct.DMA_PeripheralbaseAddr = (u32)I2C1_DR_Address;
DMA_InitStruct.DMA_Memory0baseAddr = (u32)0;
DMA_InitStruct.DMA_DIR = DMA_DIR_MemoryToPeripheral;
DMA_InitStruct.DMA_BufferSize = 0xFFFF;
DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12807  2012-08-27 21:58  STM32F4 I2C\stm32f4_i2c.c

     文件       1222  2012-08-27 20:13  STM32F4 I2C\stm32f4_i2c.h

     目录          0  2013-05-27 02:59  STM32F4 I2C

----------- ---------  ---------- -----  ----

                14029                    3


评论

共有 条评论