新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2016-10-20
- 在线时间
- 0 小时
|
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!");//提示传送完成
}
}
}
|
-
卡在这里
|