OpenEdv-开源电子网

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

新人请教个问题,程序仿真执行不下去,卡在一个程序块跳不出来

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-10-20
在线时间
0 小时
发表于 2016-10-20 15:18:16 | 显示全部楼层 |阅读模式
1金钱
这是主程序,卡在图片里的程序那儿,跳不出来
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "ADC.h"
#include "DMA.h"
#define N 30
/*************************************
********      滤波      **************
*************************************/
float pro=0;
u8 t=0;
u16 AD_Value[30][3];
u16 After_Filter[2];

void Filter(void)
{
  int  sum = 0;
   u8 count,i;
   for(i=0;i<2;i++)
   {
    for ( count=0;count<N;count++)
    {
       sum += AD_Value[count][i];
    }
    After_Filter[i]=sum/N;
    sum=0;
   }
}
/*****************************************
***********   DMA完成中断   **************
*****************************************/
  
void DMA_Channel_1_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_IT_TC1) != RESET)
{
  Filter();
  DMA_ClearITPendingBit(DMA1_IT_TC1);
}
}


int main(void)
{  
//u16 X1;
// u8 lcd_id[12];   //存放LCD ID字符串
delay_init();       //延时函数初始化   
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200);   //串口初始化为115200
  LED_Init();        //LED端口初始化
LCD_Init();
KEY_Init();
Adc_Init();
MYDMA_Config();
POINT_COLOR=RED;
// sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。
LCD_Display_Dir(1);  
  
//  LCD_DrawLine(0,0,319,0);
// LCD_Clear(WHITE);
/*  LCD_DrawLine(0,60,319,60);
  LCD_DrawLine(0,120,319,120);
  LCD_DrawLine(0,180,319,180);
  LCD_DrawLine(0,239,319,239);
  LCD_DrawLine(0,0,0,239);
  LCD_DrawLine(80,0,80,240);
  LCD_DrawLine(160,0,160,239);
  LCD_DrawLine(239,0,239,239);
  LCD_DrawLine(319,0,319,239);*/
  
//     LCD_ShowString(30,150,200,16,16,"Start Transimit....");
while(1)
{
  t=KEY_Scan(0);
  if(t==KEY0_PRES)//KEY0按下
  {
   LCD_ShowString(30,150,200,16,16,"Start Transimit....");
   LCD_ShowString(30,170,200,16,16,"   %");//显示百分号
   printf("\r\nDMA DATA:\r\n");      
//   USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //使能串口1的DMA发送      
   MYDMA_Enable(DMA1_Channel1);//开始一次DMA传输!   
      //等待DMA传输完成,此时我们来做另外一些事,点灯
      //实际应用中,传输数据期间,可以执行另外的任务
      while(1)
      {
    if(DMA_GetFlagStatus(DMA1_FLAG_TC1)!=RESET) //判断通道4传输完成
    {
     DMA_ClearFlag(DMA1_FLAG_TC1);//清除通道4传输完成标志
     break;
      }
    pro=DMA_GetCurrDataCounter(DMA1_Channel1);//得到当前还剩余多少个数据
    pro=1-pro/90;//得到百分比   
    pro*=100;      //扩大100倍
    LCD_ShowNum(30,170,pro,3,16);   
      }      
   LCD_ShowNum(30,170,100,3,16);//显示100%   
   LCD_ShowString(30,150,200,16,16,"Transimit Finished!");//提示传送完成
  }

}
}






卡在这里

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-10-20 20:21:44 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 09:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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