F103zet6 DMA

2019-08-17 05:35发布

    DMA_Port_A              = 49,
    DMA_Port_B              = 50,
   
    DMA_Port_C              = 51,
   
    DMA_Port_D              = 52,
   
    DMA_Port_E              = 53,

这是K60的库,想问一下stm32可以使用IO口作为DMA传输通道吗?在手册里和程序里都找不到

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
福尔摩木南
2019-08-17 22:54
Owen 发表于 2017-6-24 18:22
我理解你的意思是在一个I/O口出现上升沿或者下降沿的时候启动DMA开始传输数据。GPIO没有直接的DMA请求信 ...

想问你一下你说的外部中断,具体应该怎么处理呢?下面的是在K60上面的程序


[mw_shl_code=applescript,true]//外部中断服务函数
void PORTC_Interrupt()
{
  if(PORTC_ISFR & (1 << 18))//场中断 //PTC18触发中断
  {
      PORTC_ISFR |= (1 << 18);//写1清中断标志位
      
      HREF_count=0;
      
      VSYN_flag=0;
      
  }
  if(PORTC_ISFR & (1 << 19))//行中断 //PTC19触发中断
  {
      PORTC_ISFR |= (1 << 19);//写1清中断标志位
      
      HREF_count++;
      
      DMA_EN(DMA_CH1);
      
  }
}

//PIT中断服务函数
void Timer0_isr()
{
      
  CLR_PIT0;
   
  PIT_TCTRL0 |= PIT_TCTRL_TEN_MASK; //计时器使能
}

void DMA_CH1_Handler()
{
    DMA_IRQ_CLEAN(DMA_CH1);  //清除通道传输中断标志位(这样才能再次进入中断)
      
    DMA_DIS(DMA_CH1);        //采集完H个数据后进入这个DMA中断,停止DMA传输。行中断中打开DMA传输
   
    if(HREF_count>=240)
    {
        VSYN_flag=1;
    }
}[/mw_shl_code]



一周热门 更多>