STM32L151用DMA+RAM+io控制脉冲个数输出的软件搞好了

2019-12-26 18:54发布

上次使用ROM存放高低数据,输出的波形不好。现在改成RAM存放。达到使用要求。
上图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
22条回答
jxyctwt
2019-12-27 18:04
有一个大波的原因是第一次发送其实TIM2没关掉一直在自由运行,第二次发送时等TIM2溢出.

一个简单的解决方案,先配置TIM再启动DMA发送.现在用STM32F103VD @72M,发1M完美.

我用
void DAC_Turn_ON_OFF(FunctionalState on,unsigned int freq,unsigned int dot){
        unsigned int tick;
      
        if(on == DISABLE){
                Start_SendOut(DISABLE);
        }else{
                //***************************************************************************
                //发送频率转换成定时器的定时系数!
                tick=Get_Timer_Tick_TIM2(freq);        //低于20K频率计算~!!
                Set_Ram_Data(dot);                                                        //在RAM中生成数据表!!!
               // DMA_SetChannel2_for_TIM2(dot);         //高低2个电平!
                TIM2_Config(tick);//这里要先配置定时器,在启动DMA发送.
DMA_SetChannel2_for_TIM2(dot);         //高低2个电平!
                //APP_IO_With(1);
                Start_SendOut(ENABLE);
        }
}


现在用MDK发现,//中断处理程序从来不会进去,不知何解
void DMA1_Channel2_IRQHandler(void)//void IRQ_DMA_2(void){
{

一周热门 更多>