Vehicle
函数
main.c 文件参考

赛车模拟控制程序主函数源文件 更多...

#include "main.h"
#include "vehicle.h"
main.c 的引用(Include)关系图:

函数

int main (void)
 程序主函数 更多...
 
void SystemInit (void)
 系统初始化 更多...
 
void PeripheralInit (void)
 外设初始化 更多...
 
void ExitInit (void)
 中断初始化 更多...
 
void ShowCover (void)
 在LCD上显示成员信息,持续一段时间 更多...
 
void EINT0_Enable (int flag)
 中断0使能函数 更多...
 
void EINT2_Enable (int flag)
 中断2使能函数 更多...
 

详细描述

赛车模拟控制程序主函数源文件


作者
Gump, LDR
版本
V0.1
日期
2019-12-08

函数说明

int main ( void  )

程序主函数

23 {
24 
25  /* 系统初始化 */
26  SystemInit();
28  ExitInit();
29 
30  /* 显示小组成员信息 */
31  ShowCover();
32 
33  /* 赛车模拟控制主程序 */
34  VehicleInit();
35  while (1)
36  {
39  }
40 }
void VehicleDisplays(void)
显示赛车状态
Definition: vehicle.c:106
void PeripheralInit(void)
外设初始化
Definition: main.c:57
void ExitInit(void)
中断初始化
Definition: main.c:70
void VehicleStatusUpdate(void)
更新赛车数据
Definition: vehicle.c:45
void VehicleInit(void)
赛车程序初始化函数
Definition: vehicle.c:27
void SystemInit(void)
系统初始化
Definition: main.c:46
void ShowCover(void)
在LCD上显示成员信息,持续一段时间
Definition: main.c:102

函数调用图:

void SystemInit ( void  )

系统初始化

47 {
48 
49  ChangeClockDivider(1, 1); // 1:2:4
50  ChangeMPllValue(0xa1, 0x3, 0x1); // FCLK=202.8MHz
51 }

这是这个函数的调用关系图:

void PeripheralInit ( void  )

外设初始化

58 {
59 
60  Port_Init();
61  LCD_Init();
62  clrsrc(0xffff); // 白色清屏
63  LcdHorizontal(); // 横屏
64 }

这是这个函数的调用关系图:

void ExitInit ( void  )

中断初始化

71 {
72 
73  __vInitHaltHandlers();
74 
75  EINT0_Enable(True);
76  ISRVector[0] = INT0_Handler; // 中断0处理函数
77 
78  EINT2_Enable(True);
79  ISRVector[2] = INT2_Handler; // 中断2处理函数
80 
81  /* LED 配置 */
82  rGPFCON |= ((1 << 8) | (1 << 14)); // set GPF4,GPF7 为输出管脚
83 
84  /* 数码管配置 */
85  rGPGCON = (rGPGCON & ~(3 << 4)) | (1 << 4); // 设置 GPG2 = OUTPUT
86  rGPGUP |= 1 << 2; // 共16位,将GPG2引脚对应的2号位置设置为拉电流
87 
88  rGPECON = (rGPECON & ~(3 << 18)) | (1 << 18); // 设置 GPE9 = OUTPUT
89  rGPEUP |= 1 << 9; // 共16位,将GPE9引脚对应的9号位置设置为拉电流
90 
91  rGPECON = (rGPECON & ~(0xFF00000)) | (0x5500000); // 设置 GPE[10 ~ 13] = OUTPUT
92  rGPEUP |= (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13); // 将GPE10-13引脚设置为拉电流
93 
94  rGPHCON = (rGPHCON & ~(3 << 16)) | (1 << 16); // 设置点,不亮(GPH8 = OUTPUT)
95  rGPHUP |= 1 << 8;
96 }
void __irq INT2_Handler(void)
按键2中断处理函数 每按一次“档位”成员变量自增一
Definition: vehicle.c:274
void __irq INT0_Handler(void)
按键1中断处理函数 每按一次“档位”成员变量自减一
Definition: vehicle.c:288
void EINT0_Enable(int flag)
中断0使能函数
Definition: main.c:115
void EINT2_Enable(int flag)
中断2使能函数
Definition: main.c:137

函数调用图:

这是这个函数的调用关系图:

void ShowCover ( void  )

在LCD上显示成员信息,持续一段时间

102  {
103 
104  unsigned char *ptr = (unsigned char *)COVER_BUF;
105  ShowImage(ptr, 0, 0, 1);
106 
107  delay(5000);
108 }
void delay(int time)
简单的延时函数
Definition: vehicle.c:303
#define COVER_BUF
Definition: vehicle.h:38

函数调用图:

这是这个函数的调用关系图:

void EINT0_Enable ( int  flag)

中断0使能函数

参数
flag使能标志
116 {
117  int temp;
118  if (flag == True)
119  {
120  temp = rGPFCON;
121  rGPFCON = temp | 0x02;
122  temp = rGPFDAT;
123  rGPFDAT = temp | 0x01;
124  rINTMSK &= ~(BIT_EINT0); // 掩盖寄存器掩盖中断0
125  }
126  else
127  {
128  rINTMSK &= BIT_EINT0;
129  }
130 }

这是这个函数的调用关系图:

void EINT2_Enable ( int  flag)

中断2使能函数

参数
flag使能标志
138 {
139  int temp;
140  if (flag == True)
141  {
142  temp = rGPFCON;
143  rGPFCON = temp | 0x20;
144  temp = rGPFDAT;
145  rGPFDAT = temp | 0x01;
146  rINTMSK &= ~(BIT_EINT2); // 掩盖寄存器掩盖中断0
147  }
148  else
149  {
150  rINTMSK &= BIT_EINT2;
151  }
152 }

这是这个函数的调用关系图: