《arm电子相册项目——主函数篇main.c》
工具:keil4 , arm开发板(Mini2451)(s3c2451) , 串口线
功能:显示照片(自动切换 / 手动切换 / 暂停切换 / 可设置)
显示时钟(精确显示 / 可设置)
进度:第2篇——main.c
描述:一个合格的项目,其中main函数应该是只用很少行的,大部分的工作都由调用的函数执行,有主有次,执行起来条清缕析
电子相册项目中,main函数主要做了一下工作:初始化各个模块,给全局变量赋初值,在未操作时,先显示一个菜单界面,保持led灯闪烁
#include "app.h"
extern void delay(unsigned int t); 声明汇编中的delay,可以调用
//全局变量
unsigned int flag; //不同flat表示不同功能界面(界面flat)
unsigned int key; //不同key表示不同按键(按键key)
unsigned int n; //不同n表示不同箭头位置(小箭头的位置由n决定)
unsigned int picture; //不同picture表示不同照片
unsigned int time; //定时器中断每进一次,time++
unsigned int set_time; //当time++至 time == set_time时,切换照片
unsigned int stop; //相册自动切换暂停 / 继续
unsigned int time_stop; //时钟显示开启 / 关闭
unsigned int clock; //设置时钟的年月日时分秒标志位
void Main()
{
MMU_Init(); //内存管理单元初始化(可以不写)
rtc_init(); //时钟模块初始化
uart_init(); //串口模块初始化
key_init(); //中断模块初始化
lcd_init(); //lcd屏幕模块初始化
timer0_init(); //定时器模块初始化
flag = 1; //全局变量赋初值
n = 1;
picture = 1;
time = 0;
set_time = 3;
stop = 2;
time_stop = 2;
clock = 0;
lcd_dis_pck(37); //刚进程序先设置初始化界面
lcd_draw_chinese(80,90,"->",0x00ff0000);
lcd_draw_chinese_string(100,90,"1.电子相册",0x00ff0000);
lcd_draw_chinese_string(100,110,"2.实时时钟",0x00ff0000);
lcd_draw_chinese_string(100,130,"3.设置切换时间",0x00ff0000);
lcd_draw_chinese_string(100,150,"4.设置时钟时间",0x00ff0000);
GPACON = 0x0; //led初始化(led闪烁表示系统正常运行)
GPBCON = (0x5 << 10);
GPBSEL = 0x0;
while(1)
{
if(time_stop == 1) //时钟的显示开启 / 关闭(标志位控制)
{
lcd_rtc();
}
GPADAT = 0x0;
GPBDAT = 0x0;
delay(0x100000);
GPADAT = 0xffffffff;
GPBDAT = 0xffffffff;
delay(0x100000);
}
}