OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2259|回复: 3

关于用fsmc驱动液晶与dma驱动adc的冲突求助帖

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-6-30
在线时间
3 小时
发表于 2018-10-26 17:13:45 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 1045878760 于 2018-10-26 17:21 编辑

最近开发一个项目,让我好郁闷,mcu为f103vct6,单独用fsmc驱动TFT液晶,没问题,单独用dma读取adc0-5的数据,也没问题,但每次将两个功能一起启动的话,单片就出现死机了。st-link在开发环境下也不能下载程序了,只能用其他脱机烧写器,清flash,清选项字,那mcu才能恢复调试功能。否则st-link下载时显示 can't halt the core,各位高手,有人能够帮我分析问题吗?感激不尽!


static void LCD_FSMC_Config(void)
{
    FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
    FSMC_NORSRAMTimingInitTypeDef  p;   

    p.FSMC_AddressSetupTime = 0x02;         //地址建立时间
    p.FSMC_AddressHoldTime = 0x00;         //地址保持时间
    p.FSMC_DataSetupTime = 0x05;                 //数据建立时间
    p.FSMC_BusTurnAroundDuration = 0x00;
    p.FSMC_CLKDivision = 0x00;
    p.FSMC_DataLatency = 0x00;

    p.FSMC_AccessMode = FSMC_AccessMode_B;         // 一般使用模式B来控制LCD

    FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
    FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
    FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
    FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
    FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
    FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
    FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
    FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
    FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

    FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //只要注解这行就不死机   

    FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  
}


static void ADConvert_DMA_Init(void)
{
    DMA_InitTypeDef DMA_InitStructure;

   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA时钟

    DMA_DeInit(DMA1_Channel1);//将DMA的通道1寄存器重设为缺省值
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;//DMA外设ADC基地址 (u32)&ADC1->DR也可以
    DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value;//注解这行就不会死机  DMA内存基地址
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//内存作为数据传输的目的地
    DMA_InitStructure.DMA_BufferSize = 5;//DMA通道的DMA缓存的大小
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设地址寄存器不变
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//内存地址寄存器递增
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //数据宽度为16位
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//数据宽度为16位
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//工作在循环缓存模式
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道 x拥有高优先级
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//DMA通道x没有设置为内存到内存传输
   DMA_Init(DMA1_Channel1, &DMA_InitStructure);// 根据DMA_InitStruct中指定的参数初始化DMA的通道
    DMA_Cmd(DMA1_Channel1, ENABLE);//启动DMA通道
        
}


只要死机了,stlink就不行了,要用脱机烧写器来救场才恢复正常
1.png
2.png

附带的mcu连接图
3.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-6-30
在线时间
3 小时
 楼主| 发表于 2018-10-26 17:32:35 | 显示全部楼层
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value;//只要这行一赋值就是死机了,即使注解下面两句话也不起作用
   //DMA_Init(DMA1_Channel1, &DMA_InitStructure);//根据DMA_InitStruct中指定的参数初始化DMA的通道
       
    //DMA_Cmd(DMA1_Channel1, ENABLE);//启动DMA通道
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-6-30
在线时间
3 小时
 楼主| 发表于 2018-10-26 17:42:04 | 显示全部楼层
u16 AD_Value[10]; 这样设置数组大一点也不行
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2018-10-26 20:42:44 | 显示全部楼层
帮顶....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 09:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表