由于项目的需要,需要读取FLASH W25Q16的数据,要求开启DMA来读取便于节省STM32的CPU。 SPI和DMA都已经配置好了,如果不用DMA可以正常读写,但是开启DMA后,一直卡在这句话while(DMA_GetFlagStatus(DMA1_FLAG_TC2) == RESET); 下面是我的配置函数,不知道哪里出错了,大家帮帮忙,是哪里出错了呢? 这个是SPI的配置 这个是DMA的配置 程序一直卡在这里过不去呢? 下面是源程序的 |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
改过来了 dma里的一个错误也改过来了 但是 还是卡在程序里
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_16;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1,&SPI_InitStructure);
SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);
SPI_Cmd(SPI1,ENABLE); //ʹÄÜSPI
//½ûÖ¹FLASHƬѡ
GPIO_SetBits(GPIOA,GPIO_Pin_2);
配置了NVIC,也写了中断的
//NVIC SPI1 RX
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
嗯 嗯 现在是无法进入中断的
中断函数也有
void DMA1_Channel2_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_IT_TC2))
{
DMA_ClearITPendingBit(DMA1_IT_TC2);
}
}
评分
查看全部评分
你看下面我回复的 我看的中文参考手册上面是通道2呢?
??我写的SPI1的啊?
哦哦 我看到了 谢谢您 我改一下 看看程序的 谢谢您
STM32 W25X16 DMA.zip
2017-11-23 11:44 上传
点击文件名下载附件
下载积分: ST金币 -12.71 MB, 下载次数: 10, 下载积分: ST金币 -1
嗯 嗯 我用的是 串口1的 发送DMA 这个测试过了 是可以的 没有用到串口3的 但是我先把串口这一块 关闭了 试一下